循环:
循环基本每个编程语言都有,而且很常用,用法也大同小异
for循环:
在前面的小练习里,我提前使用了for循环语句,不然写四个pop语句也太麻烦,虽然可以复制粘贴,但也不美观不是?先举个例子
>>> for name in ['jack','Tom','ho']:
print (name)
jack
Tom
ho
>>> for i in range(10):
print (i)
0
1
2
3
4
5
6
7
8
9
>>>
第一个例子是依次从列表里读取出元素赋值给‘name’,赋值一次输出一次。第二个例子,顺便提下range函数,python2和python3中的range函数的返回值是不一样的,python2返回的是一个列表,而python3中返回的是迭代对象,是一个对象,虽然在for循环中他的输出的是一样的
如果需要python3中返回一个列表,就用list函数,list(range(10))。range的真正用法,range(start, stop[, step]),range(10)就是默认了start为0,step为1,如果range(2,10,2),输出为
>>> list(range(2,10,2))
[2, 4, 6, 8]
range大概就说到这里了,回到前面,第二个例子就是将range的返回值赋值给i,然后打印出来,从0开始
fort循环里当然不可能只有一条语句,也不是只能用Print语句,想包含多少语句都可以
for循环里的语句开头都是有缩进的,这就是区别于不在循环里的语句,而且缩进的格楼都是固定的,如果缩进的空格不对会提示错误,如果没有缩进,可能不会出错,但输出结果就不会如你意了。在循环语句都写完后,下面的语句就需要顶格写了,不能缩进了,这样也使程序美观些
另外,冒号千万不要忘记
小练习:
想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用for循环将每种比萨的名称都打印出来。
修改这个for 循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称。对于每种比萨,都显示一行输出,如“I like pepperoni pizza”。
在程序末尾添加一行代码,它不在for 循环中,指出你有多喜欢比萨。输出应包含针对每种比萨的消息,还有一个总结性句子,如“I really love pizza!”
pizza=['pizza1','pizza2','pizza3']
for name in pizza:
print (name,end=' ')
print('I like '+name)
print(pizza[0]+' good')
print(pizza[1]+' good')
print(pizza[2]+' good')
print("I really love pizza")
while循环:
while语句是在判断条件成立的时候一直循环下去,直到条件不成立。
>>> m=10 #初始一个变量m为10
>>> while m<20: #当m小于20时,一直执行下面的语句
print(m,end=' ') #输出m,end=是print函数的参数,如果省略就是换行,这里是空格
m+=1 #m值加1,直到m=20,停止循环
10 11 12 13 14 15 16 17 18 19
>>>
中途退出循环,可以使用break语句,在for循环里也可以使用,当在循环里执行到break语句时,立即跳出循环。
>>> while True: #理论上,这个循环是一直执行的,因为判断条件一直为True
num=int(input("输入数字:"))
if num==20:
print("good")
break #当输入的数字为20时,if语句成立,执行break,跳出循环
输入数字:15
输入数字:23
输入数字:19
输入数字:20
good
>>>
break是直接退出循环,而continue是继续执行循环而忽略下面的代码
>>> num=0
>>> while num<10:
num+=1
if num%2!=0:
continue #当不为偶数时执行循环而不执行下面的print
print(num)
2
4
6
8
10
>>>
如果你不小心编出个无限循环,也不要慌,按ctrl-c就可以停止运行程序了
之前用for循环可以遍历列表,用while也可以对列表进行操作,比如像while 列表,列表为空时停止循环,while 元素 in 列表,当特定的元素在列表里时,一直循环。
小练习:
'''
编写一个循环,提示用户输入一系列的比萨配料,并在用户输入
'quit'时结束循环。每当用户输入一种配料后,都打印一条消息,说我们会在比萨中添
加这种配料。
'''
print('输入你要的配料,完成输入quit')
while True:
pl=input("配料:")
if pl=="quit":
print("谢谢使用")
break
print("你点的配料是: "+pl)
'''
创建一个名为sandwich_orders 的列表,在其中包含各种三明治的名
字;再创建一个名为finished_sandwiches 的空列表。遍历列表sandwich_orders,对于
其中的每种三明治,都打印一条消息,如I made your tuna sandwich,并将其移到列表
finished_sandwiches。所有三明治都制作好后,打印一条消息,将这些三明治列出来
'''
sandwich_orders=['a1','c3','d4','b2','e5']
finished_sandwiches=[]
while sandwich_orders:
flag=sandwich_orders.pop()
print("I made your tuna sandwich "+flag)
finished_sandwiches.append(flag)
print(finished_sandwiches[::-1]) #倒叙输出新列表
'''
使用为完成练习7-8 而创建的列表
sandwich_orders,并确保'pastrami'在其中至少出现了三次。在程序开头附近添加这样
的代码:打印一条消息,指出熟食店的五香烟熏牛肉卖完了;再使用一个while 循环将
列表sandwich_orders 中的'pastrami'都删除。确认最终的列表finished_sandwiches 中
不包含'pastrami'。'''
sandwich_orders=['a1','c3','d4','b2','d4','e5','d4',]
finished_sandwiches=[]
while 'd4' in sandwich_orders:
sandwich_orders.remove('d4')
print("d4已无")
while sandwich_orders:
flag=sandwich_orders.pop()
print("I made your tuna sandwich "+flag)
finished_sandwiches.append(flag)
print(finished_sandwiches[::-1])
'''
编写一个程序,调查用户梦想的度假胜地。使用类似于“If
you could visit one place in the world, where would you go?”的提示,并编写一个打印调
查结果的代码块。
'''
questions={}
while True:
flag=input("有人回答问题?yes or no ")
if flag=='no':
print('88')
break
elif flag!='no'and flag!='yes':
print('yes or no!!!!!!!!!!!!!')
continue
name=input("Your name ")
answer=input("If you could visit one place in the world, where would you go? ")
questions[name.title()]=answer
print("Thanks ",name.title())
for name, answer in questions.items():
print(name+ " would like to climb " +answer+ ".")