for 有截止条件的循环
基础语法:
for i in range(10);print(i)
举例说明:
version-1,循环10次猜年龄,猜对后退出。
AGE = 56 for i in range(10): guess_num = int(input("you guess num:")) if guess_num == AGE: print("Congratulations,you got it.") break elif guess_num > AGE: print("try smaller...") else: print("try bigger...")
version-2 循环10次猜年龄,猜对后退出,并且最多猜错3次,使用计数器递增限制循环次数。
AGE = 56 count = 0 for i in range(10): if count == 3: print("too many times...bye!") break guess_num = int(input("you guess num:")) if guess_num == AGE: print("Congratulations,you got it.") elif guess_num > AGE: print("try smaller...") else: print("try bigger...") count += 1
version-3 循环10次猜年龄,猜对后退出,并且最多猜错3次,不需要计数器递增直接使用i递增。
AGE = 56 for i in range(10): if i == 3: print("too many times...bye!") break guess_num = int(input("you guess num:")) if guess_num == AGE: print("Congratulations,you got it.") break elif guess_num > AGE: print("try smaller...") else: print("try bigger...")
version-4 每运行3次提示一次是否继续,计数器到达3时,根据提示重置计数器或退出
AGE = 56 count = 0 for i in range(10): if count == 3: user_confirm = input("do you want to keep guessing?").strip() if user_confirm == 'y': count = 0 else: break guess_num = int(input("you guess num:")) if guess_num == AGE: print("Congratulations,you got it.") break elif guess_num > AGE: print("try smaller...") else: print("try bigger...") count += 1
continue
# 从1打印到10,走到5不打印 for i in range(10): if i == 5: pass else: print("loop ",i) for i in range(10): if i == 5: continue else: print("loop ",i)
break 跳出当前层的整个循环,continue 跳出当前层的本次循环,进入下一次循环
循环套循环
不打印内循环中的5
for i in range(10): print("out loop", i) for j in range(10): if j == 5: continue print(" inner loop", j)
外循环不打印5
for i in range(10): if i == 5: continue print("out loop",i) for j in range(10): print("inner loop", j)
外循环不打印5 ,内循环只打印到5
for i in range(10): if i == 5: continue print("out loop",i) for j in range(10): if j == 6: break print("inner loop", j)
while 循环
import time count = 0 t_start0 = time.time() while True: count += 1 if count == 10000000: break print("cost:", time.time() - t_start0, count) count = 0 t_start1 = time.time() while count < 10000000: count += 1 print("cost:", time.time() - t_start1, count)
三级菜单
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Panjinniu menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人民广场": { '炸鸡店': {} } }, '闸北': { '火车战': { '携程': {} } }, '浦东': {}, }, '山东': {}, } current_layers = menu p_layers = [] while True: for k in current_layers: print(k) choice = input('>:').strip() if len(choice) == 0: continue if choice in current_layers: p_layers.append(current_layers) current_layers = current_layers[choice] elif choice == 'b': if len(p_layers) > 0: current_layers = p_layers.pop() elif choice == 'q': exit('bye')
三元运算
a = 2 b = 3 if a > b: c = a + b else: c = a - b print(c) -1 c = a + b if a > b else a - b print(c) -1