流程控制之while循环
1.什么是循环
循环就是重复做某事
2.为什么要有循环
为了让计算机能够具备重复做某事的能力
3.如何用循环
while语法:
while 条件:
code1
code2
code3
....
一:结束while循环的两种方式
1.修改条件:等到下一次循环开始时判断条件为假才会结束while循环
2.break:直接结束本层循环
while True:
while True:
while True:
break
break
break
tag=True
while tag:
print(1)
print(2)
print(3)
tag=False
break
print(4)
案例一:
name='tulipa'
pwd='123'
count=0
while True:
inp_name=input('please input your name: ')
inp_pwd=input('please input your password: ')
if inp_name == name and inp_pwd == pwd:
print('login successful')
break
else:
print('user or passwor error')
count+=1 #count=3
if count == 3:
print('too many tries.....')
break
while count < 3:
inp_name=input('please input your name: ')
inp_pwd=input('please input your password: ')
if inp_name == name and inp_pwd == pwd:
print('login successful')
break
else:
print('user or passwor error')
count+=1
二:while+continue
continue:结束本次循环,直接进入下一次循环
不合理示范1:
while True: print(1) print(2) print(3) # continue
不合理示范2:
while True: print(1) print(2) if 1 == 2: pass else: print('xxxx') continue
案例一:
n=0 while n < 6: if n == 4: n+=1 continue print(n) n+=1
三:while循环嵌套
案例一:
while True: inp_name=input('please input your name: ') inp_pwd=input('please input your password: ') if inp_name == name and inp_pwd == pwd: print('login successful') while True: print(""" 0 退出 1 取款 2 转账 3 查询 """) cmd = input('请输入指令编号>>>: ') # cmd='0' if cmd == '0': break elif cmd == '1': print('取款...') elif cmd == '2': print('转账...') elif cmd == '3': print('查询...') else: print("输入错误指令,请重新输入") break else: print('user or passwor error') count+=1 #count=3 if count == 3: print('too many tries.....') break 案例二: tag=True while tag: inp_name=input('please input your name: ') inp_pwd=input('please input your password: ') if inp_name == name and inp_pwd == pwd: print('login successful') while tag: print(""" 0 退出 1 取款 2 转账 3 查询 """) cmd = input('请输入指令编号>>>: ') # cmd='0' if cmd == '0': tag=False elif cmd == '1': print('取款...') elif cmd == '2': print('转账...') elif cmd == '3': print('查询...') else: print("输入错误指令,请重新输入") else: print('user or passwor error') count+=1 #count=3 if count == 3: print('too many tries.....') break
四:while+else
else;#如果while循环没有被break打断过,即正常运行完毕后才会执行else的子代码块 n=0 while True: # if n == 3: # break print(n) n+=1 else: print('run.....') n=0 while n <= 3: print(n) n+=1 else: print('run.....') 流程控制之for循环 for循环再循环取值方面比while循环更为简洁 s1=['a','b','c','d','e'] i=0 while i < len(s1): print(s1[i]) i+=1 for item in s1: #item='b' print(item) dic={'name':'egon','age':18,'sex':'male'} for k in dic: print(k,dic[k]) for循环也一样 1.for+break 2.for+continue 3.for+else dic={'name':'egon','age':18,'sex':'male'} for k in dic: if k == 'age':break print(k,dic[k]) else: print('run...') s1=['a','b','c','d','e'] for i in range(len(s1)): print(i,s1[i]) for i in range(1,5,2): print(i)
可变与不可变类型
可变类型:值改变,但id不变,证明是改变原值
不可变类型:值改变,id也改变,证明是产生了新值,没有改变原值,例如int
x=10 print(id(x)) x+=1 print(id(x)) l=['a','b','c'] print(id(l)) l[0]='A' print(id(l))
练习
1.如何查看变量在内存中的地址?
x=1 print(type(x)) #查看类型 print(id(x)) #查看地址
2.写代码
实现用户输入用户名和密码,当用户名为 jason 且 密码为 123 时,显示登陆成功,否则登陆失败!
ueser = 'jason' psd='123' in_user=input('请输入账号') in_pwd=input('请输入密码') if in_user==ueser and in_pwd==psd: print('登陆成功') else: print('账号或者密码错误') #实现用户输入用户名和密码,当用户名为 jason 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 ueser = 'jason' psd='123' n=1 while n<4: in_user=input('请输入账号') in_pwd=input('请输入密码') if in_user==ueser and in_pwd==psd: print('登陆成功') else: print('账号或者密码错误') n+=1 print('三次机会结束') #实现用户输入用户名和密码,当用户名为 jason 或 tank 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次 n =1 while n<4: in_ueser=input('请输入账号') in_psd=input('请输入密码') if in_ueser=='jason' and in_psd=='123': print('登陆成功') elif in_ueser=='tank' and in_psd=='123': print('登陆成功') else: print('账号或者密码错误') n+=1 print('三次机会结束')
3.求1-100的所有数的和
n=0 #次数 a=1 while a<= 100: n+=a a+=1 print(n)
4.使用while循环实现输出2-3+4-5+6...+100 的和
i = 2 sum=0 while i<=100: if i % 2 == 0: sum += i else: sum -= i i += 1 print(sum)
5.使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12
n=1 while n <= 12: if n != 6 and n!=10: print(n) n+=1
6. 输出 1-100 内的所有奇数
a=1 while a<= 100: if a%2==1: print(a) a+=1
7. 输出 1-100 内的所有偶数
a=1 while a<=100: if a%2==0: print(a) a+=1
8.用户登陆(三次机会重试)实现用户输错用户名或者密码只有三次机会,超过三次则结束登陆。
ueser = 'sjh' psd='123' n=1 while n<4: in_user=input('请输入账号') in_pwd=input('请输入密码') if in_user==ueser and in_pwd==psd: print('登陆成功') else: print('账号或者密码错误') n+=1 print('三次机会结束')
9.猜年龄游戏
要求:
允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
num=48 a=1 while a<=3: user_num=input('请输入数字') user_num=int(user_num) if user_num>num: print('你输入大了') elif user_num<num: print('你输入小了') else: print('你猜对了') a+=1
10.猜年龄游戏升级版
要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序
如果猜对了,就直接退出
age=66 n=0 while True: if n == 3: choice=input('继续(Y/N?)>>: ') if choice == 'Y' or choice == 'y': n=0 else: break guess=int(input('允许输入三次')) if guess == age: print('you got it') break n+=1
11.编写计算器程序,要求
1、用户输入quit则退出程序
2、程序运行,让用户选择具体的计算操作是加法or乘法or除法。。。然后输入数字进行运算
3、简单示范如下,可以在这基础上进行改进
while True: msg=''' 1 加法 2 减法 3 乘法 4 除法 ''' print(msg) choice = input('>>: ').strip() num1 = input('输入第一个数字:').strip() num2 = input('输入第二个数字:').strip() if choice == '1': res=int(num1)+int(num2) print('%s+%s=%s' %(num1,num2,res)) while True: msg=''' 1 加法 2 减法 3 乘法 4 除法 ''' print(msg) choice = input('>>: ').strip() num1 = input('输入第一个数字:').strip() num2 = input('输入第二个数字:').strip() if choice == '1': res=int(num1)+int(num2) print('%s+%s=%s' %(num1,num2,res)) elif choice=='2': res=int(num1)-int(num2) print('%s-%s=%s' % (num1, num2, res)) elif choice=='3': res=int(num1)*int(num2) print('%s*%s=%s' % (num1, num2, res)) elif choice=='4': res=int(num1)/int(num2) print('%s/%s=%s' % (num1, num2, res))
12.如何使用一行代码将列表info=[‘egon’,18, ’male’]中用户的名字,年龄,性别分别赋值给变量name, age, gender?
info=['egon','18','male'] name,age,gender=info print(name) print(age) print(gender)