Python(二)

循环语句(三大执行流程之一,还包括选择执行,顺序执行)

下面是程序流程图:

while循环

  1. 语法格式
1
2
while 判断条件:
条件满足,执行语句

程序样例1:

1
2
3
4
num = 1
while num <= 10: #打印1-10的数字
print(num)
num += 1

结果:

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
  1. 执行流程

  1. 应用场景

对于满足某种条件,调用实现相同功能的代码

循环嵌套

语法结构:

1
2
3
4
while 判断条件:
调价你满足,执行语句
while 嵌套判断条件:
条件满足,执行语句

程序2.打印到三角形:

1
2
3
4
5
6
7
8
9
10
11
i = 0 #第几行,行号
# 4行的到三角形
while i < 4:
print(" "* i,end="")#打印每行开头的空格
j = 0 #控制*个数
#进行while的嵌套
while j < 7-i*2:
print("*",end="") # end表示循环内不空行
j +=1
print("") #实现每一行打印完换行
i = i+1 #对i进行自加,如果不自加则会进行无限循环

结果:

1
2
3
4
*******
*****
***
*

程序3.打印正三角形:

1
2
3
4
5
6
7
8
9
i = 4 #4行的正三角形,定义行数
while i > 0:
i -= 1
print(" "*i,end="")#打印开头空格
j = 0
while j < 7-i*2:
print("*",end="")
j +=1
print("")

结果:

1
2
3
4
   *
***
*****
*******

程序4.打印沙漏:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
m = 7  #控制总行数
i = 0 #外层循环的次数,行号
h = 0 #空格的个数
middle = m // 2 #中间位置
while i < m:
if i <= middle:
h = i #倒正三角形的时候,空格个数等于行号
else:
h -= 1
n = m-h*2
#打印一行开头的空格和星号
print(" "*h,end="")#打印开头空格
j = 0
while j < n:
print("*",end="")
j +=1
print("")
i += 1

如果有不明白的地方,可以通过Pycharm的debug模式进行一步步看结果的变化,i,h随时循环的进行,是变化的。

结果:

1
2
3
4
5
6
7
*******
*****
***
*
***
*****
*******

while的循环中的break和continue

  1. break语法结构:
1
2
while 条件:
break #整个循环结束
  1. while循环嵌套中使用break:
1
2
3
4
while 条件:
代码
while 条件:
break #只结束内层整个循环

程序5:break跳出循环

1
2
3
4
5
6
7
8
#当时i= 10的时候,跳出break循环(并且不能打印10)
i = 1
while i <= 20:
if i % 2 == 0:
if i % 10 == 0:
break
print(i)
i += 1

结果:

1
2
3
4
2
4
6
8
  1. continue语法结构:
1
2
3
4
while 条件:
if 条件:
continue #本次循环结束,后边的代码语句不执行
代码语句

程序6:continue

1
2
3
4
5
6
7
8
#当i=10的时候,不执行print打印,直接继续进入下一个循环循环
i = 1
while i <= 20:
i += 1
if i % 2 == 0:
if i % 10 == 0:
continue
print(i)

结果:

1
2
3
4
5
6
7
8
2
4
6
8
12
14
16
18

for 循环

  1. 语法结构:
1
2
for 临时变量 in 序列: #这里的序列是一个迭代器(iterator)
序列中存在待处理元素则进入循环体执行代码
  1. 执行流程

for 循环遍历,序列中所有的元素,并执行对应的语句。

程序7:for 循环

1
2
for i in range(0,10):
print(i)

结果:

1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9

for 循环的break和continue

  1. break语法结构:
1
2
for 变量 in 序列:
break #整个循环结束

程序8:break跳出循环for

1
2
3
4
5
6
7
8
#当 i = 4的时候,j能取到3,直接跳出循环,继续外循环
for i in range(1,5): ##range(起始,结束,步长)
for j in range(0,i):
if j == 2:
break
print("*",end="")
print("")
print(i)

结果:

1
2
3
4
5
6
7
8
*
1
**
2
**
3
**
4
  1. continue语法结构:
1
2
3
for 变量 in 序列:
if 条件:
continue #本次循环结束,后边的代码语句不执行,但仍然继续循环

程序9:continue继续循环

1
2
3
4
5
6
7
for i in range(1,5):
for j in range(0,i):
if j == 2:
continue
print("*",end="")
print("")
print(i)

结果:

1
2
3
4
5
6
7
8
*
1
**
2
**
3
***
4

字符串类型变量定义

1
2
3
4
s = 'hello'
s = "hello"
##如果字符串里面需要有单引号的情况,可以以下情况
s ="'name'"

组成字符串的方式

  1. 使用”+”号将两个字符串连接成一个新的字符串
1
print('hello'+'world')
  1. 使用字符串格式化符号
1
2
3
4
5
#将int类型转换为字符串类型
num = 123
num_str = str(num)
print(type(num))
print(type(num_str))

结果为:

1
2
<class 'int'>
<class 'str'>

下标

  1. 通过下标获取指定位置的字符:string_name[index]
1
2
3
4
5
#符号空格都占一个字符
name = 'zhangsan,20'
print(name[0])
#-1是指最后一个位置
print(name[-1])

结果:

1
2
z
0

切片

  1. 语法:string_name[起始:结束:步长]

程序10:字符串的切片:

1
2
3
4
5
6
7
8
9
10
11
line = "zhangsan,20"
name = line[0:8]
print(name)

age1 = line[9:] #不写默认到最后一位
age2 = line[9:11]
print(age1)
print(age2)
#2指步长,相隔一个取
s = "abcde"
print(s[0::2])

结果:

1
2
3
4
zhangsan
20
20
ace

列表的定义和基础属性

  • 可以储存相同或者不同类型数据的集合
1
list = [a,'123',456]
  • 顺序储存,可通过下标获取内部元素
1
2
3
4
5
6
7
8
list = [a,'123',456]
print(list[0])
print(list[2])


##结果
a
456
  • 内容可变,可通过下标修改元素值
1
2
3
4
5
list = [a,'123',456]
list[2] = 'zhangsan'

#结果
[a,'123','zhangsan']
  • 使用循环遍历列表
1
2
3
4
5
6
7
8
9
10
11
12
13
info_list = ["zhangsan",20,180.5]
#while遍历
while i < len(info_list):
print(info_list[i])
i += 1

#for遍历
for i in range(0,len(info_list)):
print(info_list[i])

#简便方法
for item in info_list:
print(item)

结果:

1
2
3
4
5
6
zhangsan
20
180.5
zhangsan
20
180.5
  • 循环的嵌套
1
2
3
4
5
6
7
8
infos_list = [["zhangsan",20,180.5],["lisi",21,170],["wangwu",25,190]]
print(infos_list[0][0])
print(infos_list[1][0])
print('\n') #空一行
for lst in infos_list:
print(lst)
for item in lst:
print(item)

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
zhangsan
lisi

['zhangsan', 20, 180.5]
zhangsan
20
180.5
['lisi', 21, 170]
lisi
21
170
['wangwu', 25, 190]
wangwu
25
190

列表的相关内置函数

  • append()/insert()添加元素
1
2
3
4
5
6
7
8
9
10
#append列表末尾添加元素
infos_list = [["zhangsan",20,180.5],["lisi",21,170],["wangwu",25,190]]
infos_list.append(["xiaobai",30,175])
print(infos_list)
print('\n')

#insert向列表指定位置添加元素
new_info = ["孙悟空",18,160]
new_info.insert(1,50) #1指列表中的1号位置
print(new_info)

结果:

1
2
3
4
[['zhangsan', 20, 180.5], ['lisi', 21, 170], ['wangwu', 25, 190], ['xiaobai', 30, 175]]


['孙悟空', 50, 18, 160]
  • “+”组合两个列表生成新的列表,append(),extend()
1
2
3
4
5
6
7
8
9
10
11
12
#+拼接两个列表
name_list1 = ["zhangsan"]
name_list2 = ["lisi","wangwu"]
name_list3 = name_list1 + name_list2
print(name_list3)

#extend 向一个列表中添加另外一个列表的元素
name_list1.extend(name_list2)
print(name_list1)

name_list1.append(name_list2)
print(name_list1)

结果:

1
2
3
['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', ['lisi', 'wangwu']]
  • del()/pop()/remove()删除元素
1
2
3
4
5
6
#删除列表元素
group = ["唐僧","悟空","八戒","白龙马"]
del group[1]
group.remove("八戒")
group.pop(0)
print(group)

结果:

1
['白龙马']
  • 切片(如同上字符串切片语法相同,只不过单个字符变为列表中的元素)

  • in/not in 判断元素在列表中是否存在

1
2
3
4
5
group = ['白龙马']
if "唐僧" in group:
print("师傅还在")
else:
print("师傅没了")

结果:

1
师傅没了
  • sort()列表内元素重排序
1
2
3
4
5
6
7
8
9
#sort()
num_list = [5,2,6,1]
# num_list.sort()#升序
num_list.sort(reverse=True)
print(num_list)
#reverse()将列表内容 倒置
group = [1,3,4,5,6,7,8]
group.reverse()
print(group)

结果:

1
2
[6, 5, 2, 1]
[8, 7, 6, 5, 4, 3, 1]
  • count()统计列表内指定元素个数
1
2
group = [1,2,3,4,5,4,3,2,2,2,3]
print(group.count(4))

结果:

1
2
  • 附加:条件表达式和列表推导式(能够缩减代码的运行时间)
1
2
3
4
5
6
7
8
9
10
11
12
#条件表达式
import math
def get_log(x):
log_v = math.log(x) if x>0 else float('nan')

return log_v
print (get_log(5))
print (get_log(-1))
print('======')
#列表推导式
l1 = [i for i in range(1,10) if i%2 ==0]
print(l1)

结果:

1
2
3
4
1.6094379124341003
nan
======
[2, 4, 6, 8]

-------------本文结束感谢您的阅读-------------


本文标题:Python(二)

文章作者:HuXuzhe

发布时间:2018年07月07日 - 23:07

最后更新:2018年11月21日 - 15:11

原始链接:https://huxuzhe.github.io/2018/07/08/Python-二/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

HuXuzhe wechat
关注微信公众号:"AI数据分析算法",轻轻扫一扫,加入我们的AI_LEGENDS !
坚持原创,您的支持将鼓励我继续创作!
0%