while 循环
结构:
while 条件:
循环语句
死循环
while True:
没有break语句情况下
终止循环
一、 改变条件 (标志位的概念):一般默认使用flag来作为标志位。
flag = True
num = 0
while flag:
print(num)
num = num + 1
if num < 10:
flag = False
二、 break 终止循环:跳出它所在的循环体。
num = 0
while True:
print(num)
num = num + 1
if num < 10:
break
计算 1 + 2 + 3 ....100 的结果(三种方式)
1
result = 0
count = 1
while True:
result += count
count += 1
if count == 101:
break
print(result)
2
result = 0
count = 1
while count < 101:
result += count
count += 1
print(result)
3
result = 0
count = 1
flag = True
while flag:
result += count
count += 1
if count == 101:
flag = False
print(result)
continue: 结束本次循环,继续下一次循环。
while True:
print(111)
print(222)
continue
print(333)
结果是
111
222
111
222
...
while-else结构:如果while循环被break打断,则不执行else代码。
count = 1
while count < 5:
print(count)
count = count + 1
if count == 3: break
else:
print(666)
print(222)
结果是
1
2
222
应用场景:
- 验证用户名密码,重新输入这个功能需要while循环。
- 无限次的显示页面,无限次的输入......
格式化输出
- 制作一个模板,某些位置的参数是动态的,像这样,就需要用格式化输出。
- 字符串的动态替换
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
sex = input('请输入性别:')
% 占位符 s 数据类型为字符串 d 数字
第一种方式:
msg = '你的名字是%s,你的年龄%d,你的性别%s' % (name,age,sex)
print(msg)
第二种方式
msg = '你的名字是%(name1)s,你的年龄%(age1)d,你的性别%(sex1)s' % {'name1':name,'age1':age,'sex1':sex}
print(msg)
bug 点 在格式化输出中,只想单纯的表示一个%时,应该用%% 表示
msg = '我叫%s,今年%d,我的学习进度1%%' % ('alex',28)
print(msg)
运算符
== 比较的两边的值是否相等
= 赋值运算
!= 不等于
+= 举例: count = count + 1 简写 count += 1
-=
*= : count = count * 5 简写 count *= 5
/=
**=
//=
...
逻辑运算符:and or not
优先级:()> not > and > or
第一种情况,前后条件为比较运算
print(1 < 2 or 3 > 1)
print(1 < 2 and 3 > 4)
print(1 < 2 and 3 > 4 or 8 < 6 and 9 > 5 or 7 > 2)
print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)
print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
第二种情况,前后两边的条件为数值
'''
x or y if x is True,return x
'''
print(1 or 2)
print(1 and 2)
print(5 or 2)
print(5 and 2)
print(0 or 2)
print(-1 or 2)
int与bool之间的转换
- 0 对应的bool值为False,非0 都是True.
- True 1 ,False 0
print(bool(100))
print(bool(-1))
print(bool(0))
print(int(True))
print(int(False))
变态面试题:思考
print(1 > 2 or 3 and 4 < 6)
print(2 or 3 and 4 < 6)
答案为:
True
2
如果 x or y 语句中x为真,即为x,否则为y
真 or 真 --> x
真 or 假 --> x
假 or 真 --> y
假 or 假 --> y
>>> 3 or 4
3
>>> 3 or 0
3
>>> 0 or 3
3
>>> '' or 0
0
如果 x and y 语句中x为假,即为x,否则为y
真 and 真 --> y
真 and 假 --> y
假 and 假 --> x
假 and 真 --> x
深层次理解:
由于or的特性是只要一个为真就判定为真,即判断x为真后,不用再来判断y。若x为假后才会判定y,所以是结果为y。 这样的话程序就能以最小的步数来执行并得到结果。
由于and的特性是只要一个为假就判定为假,即判断x为假后,不用再来判断y。若x为真后才会判定y,所以是结果为y。 这样的话程序就能以最小的步数来执行并得到结果。