python基础语法–循环语句的使用1 for…in…循环
1.1 空房间
1.2 range()函数
2 while 循环语句
2.1 放行条件
2.2 两种循环对比
- [ 练习作业]
(题1) 选择性打印数字
(题 2) 换座位
3 用数据做判断
3.1 布尔运算:用数据做逻辑判断
3.2 布尔值:True (真)和False(假)
4 四个新语句
4.1 break 语句
4.2 continue 语句
4.3 pass 语句
4.4 else 语句
- [ 练习作业]
(题1) 囚徒困境
(题 2) 囚徒困境(2)
(题 3) 查字典循环语句使得计算机能够重复性地、自动地执行指令
1 for…in…循环语句格式:#代码
list=[1,2,3,4,5,6]for i in range(6):
print(list[i])#显示1234561234567891011其中,i看作空房间,而list中的元素一次排队进入空房间;for结束后,i等于最后进入的元素
list可以是列表、字典、字符串#代码
#列表取元素for i in [1,2,3,4,5,6]:
print(i)#列表取键值
dict = {'日本':'东京','英国':'伦敦','法国':'巴黎'}for i in dict:
print(i)#字符串取每个字符(整数、浮点数都是字符串)for i in '吴承恩':
print(i)a = '100'b = '0.01'for i in a:
print(i)for i in b:
print(i)#显示123456日本
英国
法国
吴
承
恩1000.0112345678910111213141516171819202122232425262728293031323334353637383940414243遍历其他数据集,range()函数:
1)range(X):生成0-X-1的整数序列;;range(a,b) 可生成了一个【取头不取尾】的整数序列
应用于 ①固定代码的重复 、②取数间隔#代码
#固定代码重复:for i in range(3):
print('我很棒')for i in range(8):
print('书桓走的第'+str(i)+'天,想他')# 取数间隔:for i in range(0,10,3):
print(i)
# 用for循环完成1-100分别乘以5的计算for i in range(1,10):
print(i*5)#显示
我很棒
我很棒
我很棒
书桓走的第0天,想他
书桓走的第1天,想他
书桓走的第2天,想他
书桓走的第3天,想他
书桓走的第4天,想他
书桓走的第5天,想他
书桓走的第6天,想他
书桓走的第7天,想他036951015202530354045123456789101112131415161718192021222324252627282930313233343536373839
2 while 循环格式:#代码
a = 0 #先定义变量a,并赋值while a
a = a + 1 # 满足条件时,就办事:将a+1
print(a) # 继续办事:将a+1的结果打印出来
#显示123451234567891011while是“当”,后面跟的是一个放行条件,条件被满足时,会循环执行while内部的代码。
这里注意有没有字符缩进,属于while内部的代码和不属于的#代码:输入密码验证:
password = '' # 变量password用来保存输入的密码while password!='816':
password=input('尝试输入密码:')print('欢迎回家!')#显示
尝试输入密码:123尝试输入密码:222尝试输入密码:22尝试输入密码:556尝试输入密码:81尝试输入密码:816欢迎回家!12345678910111213
for…in…与while…循环对比:工作量确定时,用for…in…循环;不确定时,适合用while…循环;
for循环和while循环都可以【把一件事情做N遍】,for更加简洁;#代码print('用for..in..循环把诗句打印3遍')for i in range(1,4) :
print('明日复明日,明日何其多。')print('用while...循环把诗句打印3遍')j = 1while j<4 :
print('明日何其多,明日何其多。')
j =j+1#显示
用for..in..循环把诗句打印3遍
明日复明日,明日何其多。
明日复明日,明日何其多。
明日复明日,明日何其多。
用while...循环把诗句打印3遍
明日何其多,明日何其多。
明日何其多,明日何其多。
明日何其多,明日何其多。12345678910111213141516171819
【练习题】
1 循环打印问题:
小美想要用今天学到的循环打印数字1-7,不过,她不喜欢4这个数字……分析:
for …in…;while… 都可#代码print('# while 循环')n = 0while n
n = n+1
if n != 4: # 当num != 4,执行打印语句;等于4时不打印。 print(n)print('# for 循环')for num in range(1,8): # 为同时能运行两个循环,新取参数 num。 if num != 4: # 当num != 4,执行打印语句;等于4时不打印。 print(num)12345678910111213#输出显示:
# while 循环123567# for 循环12356712345678910111213141516
3 用数据做判断计算机的逻辑判断,只有两种:True(“真”)和False(“假”),叫做【布尔运算】。
while循环要执行,while后的条件必须为“真”!!
①while 条件判断: 先判断,若条件为真,顺利执行直到条件更为假;若条件恒为假不执行,恒为真一直执行。
②while False:不执行;while True: 一直执行
san
4 四个新语句1) break 语句
break是“打破”,用来跳出并结束循环,一般写作if…break
(如果满足了某一个条件,就提前结束循环。)只能在循环内部使用。写法为:# break语句搭配for循环for...in...:
...
if ...:
break
#break语句搭配while循环while...(条件):
...
if ...:
break1234567891011
if前缩进4空格,break前缩进8空格#例子:while True:
print('上供一对童男童女')
t = input('孙悟空来了么?')
if t == '来了':
breakprint('齐天大圣来也,制服了鲤鱼精,陈家庄再也不用上供童男童女了')1234567#输出显示:
上供一对童男童女
孙悟空来了么?k
上供一对童男童女
孙悟空来了么?来了
齐天大圣来也,制服了鲤鱼精,陈家庄再也不用上供童男童女了12345672)continue语句
continue是“继续”,当某个条件被满足的时候,触发continue语句,将跳过之后的代码,直接回到循环的开始。只能在循环内部使用。一般写法为:# continue语句搭配for循环for...in...:
...
if ...:
continue
...#continue语句搭配while循环while...(条件):
...
if ...:
continue
...123456789101112综合使用continue,break例子:梦姑与虚竹:只有连续答对三个问题,才能判定他就是西夏公主的意中人;否则,只要有任何一题错,都要换人从第一题开始重新回答问题。(正确答案:黑暗的冰窖-梦姑-未看清楚)print('梦姑西夏选驸马的故事:只有连续答对三个问题,才能判定他就是西夏公主的意中人;否则,只要有任何一题错,都要换人从头开始回答问题。')while True:
q1 = input('第一问:你一生之中,在什么地方最是快乐逍遥?')
if q1!='黑暗的冰窖':
continue #直接回到while
print('答对第一问,下面是第二问:')
q2 = input('第二问:你生平最爱之人,叫什么名字?')
if q2!='梦姑':
continue #直接回到while
print('答对第二问,还有最后一问:')
q3 = input('第三问:你最爱的这个人相貌如何?')
if q3 == '未看清楚':
breakprint('都答对了,你是虚竹,正是我要挑选的驸马。')1234567891011121314#输出显示:
梦姑西夏选驸马的故事:只有连续答对三个问题,才能判定他就是西夏公主的意中人;否则,只要有任何一题错,都要换人从头开始回答问题。
第一问:你一生之中,在什么地方最是快乐逍遥?家里
第一问:你一生之中,在什么地方最是快乐逍遥?黑暗的冰窖
答对第一问,下面是第二问:第二问:你生平最爱之人,叫什么名字?莫莫
第一问:你一生之中,在什么地方最是快乐逍遥?黑暗的冰窖
答对第一问,下面是第二问:第二问:你生平最爱之人,叫什么名字?梦姑
答对第二问,还有最后一问:第三问:你最爱的这个人相貌如何?美丽动人
第一问:你一生之中,在什么地方最是快乐逍遥?黑暗的冰窖
答对第一问,下面是第二问:第二问:你生平最爱之人,叫什么名字?梦姑
答对第二问,还有最后一问:第三问:你最爱的这个人相貌如何?未看清楚
都答对了,你是虚竹,正是我要挑选的驸马。1234567891011121314151617183)pass语句
pass是“跳过”,占据一个位置表示“满足条件时,什么都不做”,避免代码报错。a = int(input('请输入一个整数:'))if a >= 100:
passelse:
print('你输入了一个小于100的数字')12345#输出显示:
请输入一个整数:20你输入了一个小于100的数字
Process finished with exit code 0请输入一个整数:200Process finished with exit code 0123456784)else语句
else是“否则”,在条件判断语句见过【if …else…】,其实,else还能跟for循环和while循环配合使用。 用在循环语句后,如果没遇到break,正常结束循环就执行else。for i in range(5):
a = int(input('请输入0结束循环,你有5次机会:'))
if a == 0:
print('你触发了break语句,导致else语句不会生效。')
breakelse:
print('5次循环你都错过了,else语句生效了。')1234567# 把之前这段for循环的代码改成while循环,要求运行效果相同
i=0while i<5:
i=i+1
a = int(input('请输入0结束循环,你有5次机会:'))
if a == 0:
print('你触发了break语句,导致else语句不会生效。')
breakelse:
print('5次循环你都错过了,else语句生效了。')12345678910#输出显示:
请输入0结束循环,你有5次机会:1请输入0结束循环,你有5次机会:1请输入0结束循环,你有5次机会:1请输入0结束循环,你有5次机会:2请输入0结束循环,你有5次机会:35次机会你都错过了,else语句生效了。
# 把之前这段for循环的代码改成while循环,运行效果相同
请输入0结束循环,你有5次机会:1请输入0结束循环,你有5次机会:1请输入0结束循环,你有5次机会:1请输入0结束循环,你有5次机会:2请输入0结束循环,你有5次机会:35次机会你都错过了,else语句生效了。123456789101112131415break,continue必须与if语句连用,pass常在if下。
‘:循环游戏:猜大小游戏编程:’一个小游戏:一个人在心里想好一个数,比如24,然后让另一个人猜。如果他猜的数比24小,告诉他“太小了”,如果他猜的数比24大,告诉他“太大了”。不确定猜多少次,直到猜对为止,输出恭喜你猜对了。print('猜数字大小游戏开始:')a=24while True:
answer =int(input('你来猜我想的数字是什么?'))
if answer
print('猜小了,再猜')
if answer>a:
print('猜大了,再猜')
if answer ==a:
print('恭喜你猜对了')
break123456789101112#输出显示:
猜数字大小游戏开始:你来猜我想的数字是什么?1猜小了,再猜
你来猜我想的数字是什么?50猜大了,再猜
你来猜我想的数字是什么?25猜大了,再猜
你来猜我想的数字是什么?23猜小了,再猜
你来猜我想的数字是什么?24恭喜你猜对了12345678910111213改一下题目:这个游戏只能猜3次,3次都猜不中,就告诉他“失败了”。print('猜数字大小游戏开始,你来猜我想的数字是什么?')a=24for i in range(1,4):
print('这是第' + str(i) + '次猜哟!')
answer =int(input('输入数字:'))
if answer==a:
print('恭喜你猜对了呢!')
break
elif answer>a:
print('猜大了,再猜')
elif answer
print('猜小了,再猜')else:
print('你已经猜错三次了,失败了,正确答案是'+str(a))1234567891011121314#输出显示:
猜数字大小游戏开始,你来猜我想的数字是什么?
这是第1次猜哟!
输入数字:1猜小了,再猜
这是第2次猜哟!
输入数字:3猜小了,再猜
这是第3次猜哟!
输入数字:23猜小了,再猜
你已经猜错三次了,失败了,正确答案是2412345678910111213
【练习题】
1 囚徒困境问题:
假设有两名囚徒A和B因为合伙犯罪被抓捕,因没有确凿可以指认罪行的证据,审判者准备单独审判两位囚徒。若两人都认罪,则两人各判10年;若一个认罪一个抵赖,则认罪的人判1年,抵赖的人判20年;若两人都抵赖,则各判3年。
请写个代码:当两人都抵赖时,打印判决,代码结束;若为其他结果,则在打印判决后继续循环。