python如何重复指令_【风变编程-python语法】第五、六关(消灭该死的重复)-循环-笔记...

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年。

请写个代码:当两人都抵赖时,打印判决,代码结束;若为其他结果,则在打印判决后继续循环。


版权声明:本文为weixin_36486277原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。