for循环通常用于可迭代对象的遍历,语法:
for 变量 in 可迭代对象:
循环语句
Python包含以下几种可迭代对象:
操作示例:
'''
对字符串进行遍历
'''
for x in 'abcd':
print(x)
'''
结果为:
a
b
c
d
'''
'''
对字典进行遍历
'''
d={
'a':100,'b':200}
for x in d:
print(x)
'''
结果为:
a
b
默认将字典的键对象打印出来
'''
'''
对字典值键、值、键值对分别进行遍历
'''
#对键遍历
for x in d.keys():
print(x)
#对值遍历
for x in d.values():
print(x)
#对键值对遍历
for x in d.items():
print(x)
range是一个迭代器对象,用来产生指定范围的数字序列,格式为:
range(start,end,step)
生成的序列从start开始到end结束,不包含end,若未填写start,则默认为0。步长step的默认值为1
操作示例:
'''
计算1-10的累加和,奇数累加和,偶数累加和
'''
sum_all=0
sum_odd=0
sum_even=0
for i in range(101):
# 求总和
sum_all=sum_all+i
# 求偶数和
if i%2==0:
sum_even=sum_even+i
# 求奇数和
else:
sum_odd=sum_odd+i
操作示例:
'''
打印5行5列表格,每行数字为(行号-1)
'''
for i in range(5):
for j in range(5):
print(i,end="\t") # 不换行打印,打印5次
print() # 表示换行
'''
结果为:
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
'''
'''
打印九九乘法表
'''
for i in range(1,10):
for j in range(1,i+1):
print("{0}*{1}={2}".format(i,j,i*j),end="\t")
print()
'''
结果为:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
'''
break语句可用于while和for循环,用来结束整个循环,当有嵌套循环时,break语句仅仅跳出最近一层的循环
操作示例:
while True:
num=int(input("enter an integer: "))
if num==1:
break
'''
上述例子中,若输入的整数为1,则跳出整个while循环
'''
for i in range(3):
for j in range(4):
if j==2:
break
'''
上述例子中,若j取值为2,则跳出最近一层for循环,即for j in range(4),然后最外层循环开始新的一轮运行,
即,若跳出时的i为1,则开始新一轮循环时的i为2
'''
continue语句用于结束本次循环,继续下一次循环,多个循环嵌套时,continue语句也是应用于最近一层的循环
操作示例:
for i in range(3):
for j in range(4):
if j==2:
print("not ok")
continue
print("ok")
'''
上述例子中,若j取值为2,则当前最近一层的循环结束,马上开始下一次循环,即当j取值为2时,for j循环打印出
not ok后循环结束,将不会执行打印ok的操作,随后马上开始下一次循环,此时j为3
'''
Python的while,for循环可以附带一个else语句(作为可选项)。如果for,while语句没有被break语句结束,则会执行else语句,否则不执行。语法格式如下:
while 条件表达式:
循环体
else:
语句块
或者
for 变量 in 可迭代对象:
循环体
else:
语句块
操作示例;
'''
4名员工,录入这4人的薪资,全部录入后,将提示“您已完成录入操作”
'''
salarySum=0
salarys=[]
for i in range(4):
s=float(input("enter the salary of an employee(enter Q or q to quit)"))
if s.upper()=='Q':
print("the work is done,thanks!")
break
if s<0:
print("salary cannot be less than 0, please re-enter it")
continue
salarys.append(s)
salarySum+=s
else:
print("the work is done, thanks!")
print("the salaries for the 4 members are ",salarys)
print("the average salary is ",salarySum/4)
'''
上述例子中,若不输入Q或q,则输入完全部4名员工薪资后(for 循环结束后),程序将执行else语句块并打印出
the work is done, thanks!
'''
遵守以下三个原则可大大提高运行效率,避免不必要的低效计算:
操作示例:
import time
start1=time.time()
for i in range(1000):
result=[]
for m in range(10000):
result.append(i*1000+m*100)
end1=time.time()
print("耗时1:{0}".format(end1-start1))
start2=time.time()
for i in range(1000):
result=[]
c=i*1000
for m in range(10000):
result.append(c+m*100)
end2=time.time()
print("耗时2:{0}".format(end2-start2))
'''
上述例子中,第二个示例将i*1000的操作提到内层循环外进行,这样的操作可节约总计算时间,其结果为:
耗时1:2.3127858638763428
耗时2:2.106515884399414
'''
基本语法:
[表达式 for item in 可迭代对象] 或者
[表达式 for item in 对迭代对象 if 条件判断]
操作示例:
[x for x in range(5)]
'''
结果为:[0, 1, 2, 3, 4]
'''
'''
也可以使用两个循环
'''
cells=[(row,col) for row in range(3) for col in range(3)]
'''
结果为:[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
'''
基本语法:
{key_expression: value_expression for 表达式 in 可迭代对象}
类似于列表推导式,字典推导式也可以用if条件判断,并用多个for循环嵌套
操作示例:
myText="i love u, i love python"
char_count={
c:myText.count(c) for c in myText}
'''
结果为:
{
'i': 2, ' ': 5, 'l': 2, 'o': 3, 'v': 2, 'e': 2, 'u': 1, ',': 1, 'p': 1, 'y': 1, 't': 1, 'h': 1, 'n': 1}
集合中所有元素都是字典的键对象,基本语法:
{表达式 for item in 可迭代对象} 或者
{表达式 for item in 可迭代对象 if 条件判断}
返回的不是元组,而是一个生成器对象
操作示例:
(x for x in range(1,100) if x%9==0)
'''
会返回一个生成器对象,结果为:
at 0x000001F25015C570>
'''
由此可见,元组是没有推导式的
一个生成器只能运行一次,第一次迭代可以得到数据,第二次迭代就发现数据已经没有了
操作示例:
a=(x for x in range(1,100) if x%9==0)
b=list(a)
>>b
[9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99]
c=list(a)
>>c
[]
def 函数名([参数列表]):
‘’‘文档字符串’’’
函数体/若干语句
操作示例:
def add(a,b):
return a+b
'''
上述例子中,a,b称为形式参数,简称形参,也就是说,形参是在函数定义时使用的,形参的定义需符合标识符命名规则
'''
'''
在调用函数时,传递的参数被称为实参,如add(10,20),10和20就是实参
'''
原则:
建议:
操作示例:
def add(a,b):
'''用于返回a与b的和'''
return a+b
# 上述例子中,两个连续“三个单引号”之间的字符串称为文档字符串,若想查看某函数的文档字符串,
# 可通过help(函数变量名.__doc__)方法获取,如help(add.__doc__)
return返回值要点: