一、while循环用法
格式:
n=0 或 n=1 # 定义一个计数器
while 循环的条件:
循环体内要执行的代码块
注:只要循环条件为真,则一直会执行循环体内的代码块。如果循环条件为假,则结束循环,不执行循环体内的代码块。
二、contiune和break的用法
continue:只要条件满足(或叫只要条件为真),就跳出这一次的循环,然后continue后面的循环代码块就自动忽略不再执行,直接进入下一次循环。———记忆:结束本次循环,开始下一轮循环。
break:只要条件满足,就结束循环,与此同时,break后面的循环代码块也将不再执行。———记忆:结束所有的循环。
举例1:打印10以内所有奇数。continue用法
# 法1
n = 0
while n < 10:
n += 1 # 注意+1 的位置,如果放下面就会进入死循环
if n % 2 == 0:
continue # continue的使用
print(n)
结果:
1
3
5
7
9
# 法2 不推荐,不智能
n = -1
while n < 9:
n += 2
print(n)
结果:
1
3
5
7
9
延申:打印1-10以内的所有偶数
# 打印1-10以内的所有偶数
number = 1
while number < 10:
if number % 2 == 0:
print(number)
number += 1
结果:
2
4
6
8
举例2: 依次输入2个整数,两个数比较大小,输出最大的,如果输入为空,则退出。break用法
while True: # while True,只要不中断,可以一直输,实现循环
number1 = input("请输入第一个数字:")
number2 = input("请输入第二个数字:")
# 判断输入的数字是否为空,如果空,则退出循环
if len(number1) == 0 or len(number2) == 0:
print("您没有输入任何东西,请重新输入!")
break
else:
if number1.isdigit() and number2.isdigit():
# 比较大小
if int(number1) > int(number2): # 输入的是字符串,需要转成数值型
print(f"{number1}和{number2}中最大的数是:{number1}")
else:
print(number2)
else:
print("您输入的不是数字,请重输!")
结果:
请输入第一个数字:5
请输入第二个数字:6
5和6中最大的数是:6
请输入第一个数字:a
请输入第二个数字:B
您输入的不是数字,请重输!
请输入第一个数字:1
请输入第二个数字:
您没有输入任何东西,请重新输入!
怪象:print(f"{number1}和{number2}中最大的数是:{number1}")中的字符串,时好时坏,有时能【输出数1和数2中最大的数是:】这几个字,有时不能。
# 改进
while 1:
num1, num2 = input(), input()
if len(num1) == 0 or len(num2) == 0:
print(f"输入为空")
break
elif num1.isdigit() and num2.isdigit():
print(int(num1)) if num1 > num2 else print(num2) # 三目运算符
else:
print(f"输入的不是数字")
# 结果:
1 # 输入1
2 # 输入2
2 # 结果输出2
x # 输入x
1 # 输入1
输入的不是数字
2 # 输入2
# 不输
输入为空
进程已结束,退出代码 0
举例3:打印1-10,除了5之外的所有数字。continue用法
for i in range(1, 11): 因为打印的是1-10,所以,需要将range范围设定为1,11
if i == 5:
continue
print(i)
结果:
1
2
3
4
6 可以看到没5
7
8
9
10
由此,可以明显的理解,continue的含义:结束本轮循环,开始下轮循环。
举例4:打印1-10的数字,如果这个数能被3整除,那么就不打印。break用法
for i in range(1, 10):
if i % 3 == 0:
break
print(i)
结果:
1
2
由此,可以明显的理解,break的含义:结束整个循环。
举例5:猜数字小游戏。谜底为20,猜对就退出循环,否则一直猜。
answer = 20
while True:
number = int(input("请输入你的答案:"))
if number == answer:
print("恭喜你,回答正确!")
break
print("回答错误,请重输!")
结果:
请输入你的答案:35
回答错误,请重输!
请输入你的答案:2
回答错误,请重输!
请输入你的答案:20
恭喜你,回答正确!
三、python当中的 真/假 值 的表示方法
真值的表示方法有:
(1)True
(2)除0以外的所有数字
(3)除了空对象以外的其它所有对象都可以表示为真值。(其它所有对象是指:数字、字符串、列表、元组、字典、集合)
举例:
if True:
print("该句为真值")
if 5: # 数字5
print("该句为真值")
if "p": # 字符串p
print("该句为真值")
if "你好": # 字符串 你好
print("该句为真值")
if ["p"]: # 列表
print("该句为真值")
if (66): # 元组
print("该句为真值")
if {"number:", 66}: # 字典
print("该句为真值")
if {'apple', 2, 'banana'}: # 集合
print("该句为真值")
这些方式的结果都是:
该句为真值
同理,while也一样,但注意避免进入死循环。
假值:False、0、空对象。 这个空对象中的“对象”就是指:字符串、列表、元组、集合字典。
举例:
if False:
print("该句为假值") # 为 False
if 0:
print("该句为假值") # 为 0
if "":
print("该句为假值") # 空字符串
if []:
print("该句为假值") # 空列表
if ():
print("该句为假值") # 空元组
if {}:
print("该句为假值") # 空集合,字典
结果:
没有任何输出
举例6:利用while循环模拟登录操作,如果账号密码都正确,则登录成功,否则一直输入。
username = "user" # 定义正确的账号和密码
password = 123
while True:
name = input("请输入账名(由小写字母构成):")
psword = input("请输入密码(纯数字构成):")
if name == username and int(psword) == password: # 注意 int的加入
print("恭喜你,登录成功!")
break
else:
print("登录失败,请重输!")
print() # 拉开间距,以便结果更清晰
结果:
请输入账名(由小写字母构成):fsd
请输入密码(纯数字构成):65
登录失败,请重输!
请输入账名(由小写字母构成):t
请输入密码(纯数字构成):345
登录失败,请重输!
请输入账名(由小写字母构成):user
请输入密码(纯数字构成):123
恭喜你,登录成功!
小结:
(1)如果if name == username and int(psword) == password:这句中,psword不进行int的准换,那么,字符串跟数字是无法进行比较的,此时,尽管输入的是123,但因为input()函数的缘故,结果依然为【登录失败,请重输】。
(2)循环当中else的使用:
while后面的条件表达式为真,并且循环体内没有break,则会执行else后面的代码;
while后面的条件表达式为假,则直接忽略循环体内的代码块,直接执行else后面的语句。