while 循环
结构:while 条件: 循环语句
死循环
while True: 没有break语句情况下
终止循环
一、 改变条件 (标志位的概念):一般默认使用flag来作为标志位。
flag = Truenum = 0while flag: print(num) num = num + 1 if num < 10: flag = False
二、 break 终止循环:跳出它所在的循环体。
num = 0while True: print(num) num = num + 1 if num < 10: break
计算 1 + 2 + 3 ....100 的结果(三种方式)
1
result = 0count = 1while True: result += count count += 1 if count == 101: breakprint(result)
2
result = 0count = 1while count < 101: result += count count += 1print(result)
3
result = 0count = 1flag = Truewhile flag: result += count count += 1 if count == 101: flag = Falseprint(result)
continue: 结束本次循环,继续下一次循环。
while True: print(111) print(222) continue print(333)
结果是
111222111222...
while-else结构:如果while循环被break打断,则不执行else代码。
count = 1while count < 5: print(count) count = count + 1 if count == 3: breakelse: print(666)print(222)
结果是
12222
应用场景:
- 验证用户名密码,重新输入这个功能需要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)
答案为:
True2如果 x or y 语句中x为真,即为x,否则为y 真 or 真 --> x 真 or 假 --> x 假 or 真 --> y 假 or 假 --> y>>> 3 or 43>>> 3 or 03>>> 0 or 33>>> '' or 00如果 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。 这样的话程序就能以最小的步数来执行并得到结果。