for循环
列表
for i in [1,2,3,4,5]:
print(i)
print('事情全部办完了!现在留在空房间里的人是谁?')
print(i)
运行结果
for i in [1,2,3,4,5]:
print(i)
print('事情全部办完了!现在留在空房间里的人是谁?')
print(i)
字典
例子1
dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}
for i in dict:
print(i)
运行结果
日本
英国
法国
例子2
for i in '吴承恩':
print(i)
运行结果
吴
承
恩
还是这段代码,代码的运行结果你应该已经了然于心,是“吴“”承“”恩”依次出现。也就是说,当这一群排队的人依次序走进空房间,每个人都会把业务办完。这个过程,在Python中的学名就叫做【遍历】。其实,遍历这个词在古代汉语中就已经出现过了:遍历名山,博采方术。 -前蜀 杜光庭《李筌》
遍历,就是全部走遍,到处周游的意思。
for i in range(13,17):
print(i)
使用range(a,b)函数,你可以生成了一个【取头不取尾】的整数序列。
13
14
15
16
代码
for i in range(3):
print('书恒走的第'+str(i)+'天,想他')
运行结果
书恒走的第0天,想他
书恒走的第1天,想他
书恒走的第2天,想他
while循环
a=1
while a<3:
print(a*5)
a = a + 1
运行结果
5
10
要把字符串'神雕侠侣'拆成一个个字符打印出来,这件事【工作量确定】,适合用for循环。
而对于“输入密码,判断输入的密码是否正确”这件事,我们并不知道要判断几遍才能得到正确密码,所以【工作量不确定】,适合用while循环。
不过有一种情况for循环和while循环都可以解决问题,那就是【把一件事情做N遍】:
# while 循环
n = 0
while n < 7:
n = n+1
if n != 4: # 当num != 4,执行打印语句;等于4时不打印。
print(n)
# for 循环
for num in range(1,8): # 为同时能运行两个循环,新取参数 num。
if num != 4: # 当num != 4,执行打印语句;等于4时不打印。
print(num)
布尔值
假的:False,0,'',[],{},None
其他都是真的
print('以下数据判断结果都是【假】:')
print(bool(False))
print(bool(0))
print(bool(''))
print(bool(None))
print('以下数据判断结果都是【真】:')
print(bool(True))
print(bool(1))
print(bool('abc'))
运行结果
以下数据判断结果都是【假】:
False
False
False
False
以下数据判断结果都是【真】:
True
True
True
break
从循环内跳出(必须和if语句连用)
while循环的使用方法以及跳出循环
while True:
print('上供一对童男童女')
t = input('孙悟空来了吗')
if t == '来了':
break
print('孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了')
运行结果
上供一对童男童女
孙悟空来了吗来了
孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了
Continue
跳跃到循环开头(必须和if语句连用)
while True:
q1 = input('第一问:你一生之中,在什么地方最是快乐逍遥?')
if q1 != '黑暗的冰窖':
continue
print('答对了,下面是第二问:')
q2 = input('你生平最爱之人,叫什么名字?')
if q2 != '梦姑':
continue
print('答对了,下面是第三问:')
q3 = input('你最爱的这个人相貌如何?')
if q3 == '不知道':
break
print('都答对了,你是虚竹。')
运行结果
第一问:你一生之中,在什么地方最是快乐逍遥?黑暗的冰窖
答对了,下面是第二问:
你生平最爱之人,叫什么名字?梦姑
答对了,下面是第三问:
你最爱的这个人相貌如何?不知道
都答对了,你是虚竹。
Pass
什么都不做(常用在if语句下)
#请你运行代码体验一下
a = int(input('请输入一个整数:'))
if a >= 100:
pass
else:
print('你输入了一个小于100的数字')
运行结果
请输入一个整数:100
如果没有pass来占据一个位置表示“什么都不做”,以上的代码执行起来会报错。
Else
用在循环语句后,如果正常结束循环就执行else语句(没有遇到break循环的小练习)
for i in range(5):
a = int(input('请输入0结束循环,你有5次机会:'))
if a == 0:
print('你触发了break语句,导致else语句不会生效。')
break
else:
print('5次循环你都错过了,else语句生效了。')
运行结果
请输入0结束循环,你有5次机会:5
请输入0结束循环,你有5次机会:4
请输入0结束循环,你有5次机会:4
请输入0结束循环,你有5次机会:4
请输入0结束循环,你有5次机会:4
5次循环你都错过了,else语句生效了。
循环的小练习
猜数字(无穷多次)
secret = 24 #设定秘密数字
while True:
guess = input('你来猜猜我的秘密数字是多少:') #输入猜测数字
if int(guess)==secret: #数字对比
print('正确!你很棒哦。')
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')
运行结果
你来猜猜我的秘密数字是多少:23
你猜的太小了,请重新猜猜~
你来猜猜我的秘密数字是多少:24
正确!你很棒哦。
猜数字(只猜三次)
secret = 24
for i in range(3):
guess = input('guess which number is my secret:')
if int(guess) ==secret:
print('正确!你很棒哦。') #输出结果
break
elif int(guess)>secret:
print('你猜的太大了,请重新猜猜~')
else:
print('你猜的太小了,请重新猜猜~')
else:
print('给你3次机会都猜不到,你失败了。')
运行结果
guess which number is my secret:24
正确!你很棒哦。
循环的鸡汤
while True:
learn()
这是终生学习的意思,while True 开启了一个死循环,一直执行learn() 这个学习的函数,所以代表着终生学习。
囚徒困境
while True:
a = input('Please Enter your decision, A, 1 means admit, 2 means do not admit')
b = input('Please Enter your decision, B, 1 means admit, 2 means do not admit')
if a == 1 and b == 1:
print('A 10 years, B 10 years')
elif a == 1 and b == 2:
print('A 20 years, B 1 year')
elif a == 2 and b == 1:
print('A 1 year, B 10 years')
else:
print('A 3 years, B 3 years')
break
运行结果
Please Enter your decision, A, 1 means admit, 2 means do not admit1
Please Enter your decision, B, 1 means admit, 2 means do not admit1
A 3 years, B 3 years
标准答案
while True:
a = input('A,你认罪吗?请回答认罪或者不认:')
b = input('B,你认罪吗?请回答认罪或者不认:')
if a == '认罪' and b == '认罪':
print('两人都得判10年,唉')
elif a == '不认' and b == '认罪':
print('A判20年,B判1年,唉')
elif a == '认罪' and b == '不认':
print('A判1年,B判20年')
elif a == '不认' and b == '不认':
print('都判3年,太棒了')
break
else:
print('别捣乱,只能回答“认罪”或“不认”!')
运行结果
A,你认罪吗?请回答认罪或者不认:认罪
B,你认罪吗?请回答认罪或者不认:认罪
两人都得判10年,唉
A,你认罪吗?请回答认罪或者不认:认罪
B,你认罪吗?请回答认罪或者不认:不认罪
别捣乱,只能回答“认罪”或“不认”!
A,你认罪吗?请回答认罪或者不认:不认罪
B,你认罪吗?请回答认罪或者不认:认罪
别捣乱,只能回答“认罪”或“不认”!
A,你认罪吗?请回答认罪或者不认:不认
B,你认罪吗?请回答认罪或者不认:不认
都判3年,太棒了
九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print( '%dX%d=%d' % (j,i,i*j),end = ' ' )
print(' ')
运行结果
1 X 1 = 1
1 X 2 = 2 2 X 2 = 4
1 X 3 = 3 2 X 3 = 6 3 X 3 = 9
1 X 4 = 4 2 X 4 = 8 3 X 4 = 12 4 X 4 = 16
1 X 5 = 5 2 X 5 = 10 3 X 5 = 15 4 X 5 = 20 5 X 5 = 25
1 X 6 = 6 2 X 6 = 12 3 X 6 = 18 4 X 6 = 24 5 X 6 = 30 6 X 6 = 36
1 X 7 = 7 2 X 7 = 14 3 X 7 = 21 4 X 7 = 28 5 X 7 = 35 6 X 7 = 42 7 X 7 = 49
1 X 8 = 8 2 X 8 = 16 3 X 8 = 24 4 X 8 = 32 5 X 8 = 40 6 X 8 = 48 7 X 8 = 56 8 X 8 = 64
1 X 9 = 9 2 X 9 = 18 3 X 9 = 27 4 X 9 = 36 5 X 9 = 45 6 X 9 = 54 7 X 9 = 63 8 X 9 = 72 9 X 9 = 81
查询科目
subject = {
'思思':['广义相对论','弦理论','牛顿力学'],
'严严':['广义相对论','弦理论'],
'赫敏':['广义相对论','弦理论','量子场论'],
}
name = input('你想查询哪个科目?')
for i in subject:
actors = subject[i]
#取出字典的值
if name in actors:
print(i+'学习了'+name)
输出结果
你想查询哪个科目?广义相对论
思思学习了广义相对论
严严学习了广义相对论
赫敏学习了广义相对论
试错
用try和except可以进行试错检验
while True:
try:
age = int(input('你今年几岁了?'))
break
except ValueError:
print('你输入的不是数字!')
if age < 18:
print('小朋友你好呀')
输出结果
你今年几岁了?1
小朋友你好呀
如何避免被除数是0的错误
num = [1,2,0,3]
for x in num:
try:
#尝试执行下列代码
print (6/x)
#使用6除以num中的元素,并打印
except ZeroDivisionError:
#除非发生ZeroDivisionError报错,执行下列代码:
print('0是不能做除数的!')
#打印“0是不能做除数的!”
输出结果
6.0
3.0
0是不能做除数的!
2.0
更多试错检验在这里可以找到
参考