循环判断和布尔类型
-
比较运算
-
-
逻辑运算
-
布尔值
-
python中的布尔值为两种,一种为True(真),一种为False(假)
# python的数据类型自带布尔值 >>> bool(1) == True True >>> bool([1,2,3]) == True True >>> bool((1,2,3)) == True True # 可以看到上边都返回了True,是因为他们是真的,那么什么是假的呢? >>> bool(0) == True False >>> bool('') == True False >>> bool(None) == True # None 代表空 False # 看到上边的代码可以得出一个结论,0 和 空为假,非空非0为真
if判断
-
接下来说一下python中的if判断语句
-
if判断 (传递判断条件,成功执行什么,失败执行什么)
# if的语法,python是根据缩进来控制代码块的,代码缩进要保持一样,否则会报错
if 判断条件:
print('判断条件条件1成立会执行我')
elif 判断条件2:
print('判断条件条件2成立会执行我')
else:
print('判断条件都不成立会执行我') -
代码示例
-
>>> if 1 == 1: ... print('真的') ... 真的 >>> if 1 == 2: # 条件不成立,不会执行下面的代码 ... print('真的') ... # else语句 >>> if 1 == 2: # 条件不成立会执行else下面的代码 ... print('真的') ... else: ... print('假的') ... 假的 # elif 多判断语句 >>> inp = input('请输入你的性别: ')# input函数用来接收用户的输入,接收的值都会转换为字符串 请输入你的性别:男 >>> if inp == '男': ... print('你是个男的') ... elif inp == '女': ... print('你是个女的') ... else: ... print('你啥也不是') ... 你是个男的 # 演示一下错误的代码 >>> if 1 == 1: ... print('是真的') ... else: # 这里的else多缩进了4个空格,和上面的if没在同一缩进,所以报错了 File "<stdin>", line 3 else: ^ SyntaxError: invalid syntax # SyntaxError 代表语法错误
-
while循环
-
为什么要用while循环呢?举一个例子,加入你设计一款猜数字游戏,让用户去输入,难道要每输入一次就要重新运行一下程序吗?当然这是可以得,但是这种设计很影响体验,效率特别低,这就用到了while循环。
# while循环的语法:
while 判断条件: # 当判断条件为False时退出循环
条件成立要执行的代码
# 举一个简单的猜数字游戏的例子>>> while True: # 代表死循环,因为True永远为为真 ... choice = input('请猜一个数字: ') ... if choice == '10':# 上面说到input接受的都是字符串,如果需要进行数字比较,需要转换类型 ... print('猜对了') ... else: ... print('猜错了') ... 请猜一个数字: 2 猜错了 请猜一个数字: 4 猜错了 请猜一个数字: 10 猜对了 请猜一个数字: # 即使猜对了,还是要求输入,是因为没有结束循环 # 改进一下: 猜对了退出循环,用到break语句来控制退出整个循环 >>> while True: ... choice = input('请猜一个数字: ') ... if choice == '10': ... print('猜对了') ... break ... else: ... print('猜错了') ... 请猜一个数字: 2 猜错了 请猜一个数字: 4 猜错了 请猜一个数字: 10 猜对了 # 还有一个continue语句,他是用来退出本次循环,而不是整个循环 >>> while True: ... choice = input('请猜一个数字: ') ... if choice == '0': ... print('不可以输入0') ... elif choice == '10': ... print('猜对了') ... break ... else: ... print('猜错了') ... 请猜一个数字: 2 猜错了 请猜一个数字: 4 猜错了 请猜一个数字: 0 不可以输入0 # 不会退出整个循环,继续下一次循环 请猜一个数字: 10 猜对了
# 当循环里面又嵌套了另外一个循环怎么办?怎么可以从里层循环全部退出呢(如果从里层循环break只会退出当前循环,而不会推出外层的)?这就用到了控制开关tag = True # 设置一个开关为True >>> while tag: ... inp = input('请输入你的名字: ') ... while tag: ... inp2 = input('请输入你的家在哪: ') ... if inp2 == '黑龙江': ... tag = False # 如果这里用的是break的话,还会让你继续输入你的名字 ... 请输入你的名字: dingh 请输入你的家在哪: 吉林 请输入你的家在哪: 黑龙江 # if条件成功,执行tag = False,所有循环条件都不成立了 # while else语句,只要循环正常执行完成,中途没有被break打断就会执行else语句 >>> count = 0 >>> while count < 10: ... print(count) ... count += 1 ... else: ... print('只要循环没有被break打断,就会执行我') ... 0 1 2 3 4 5 6 7 8 9 只要循环没有被break打断,就会执行我
for循环
-
for循环是一种迭代式循环,可以循环各种序列,例如list,str等等
# for循环语法
for 用于接收的对象 in 要循环的对象:
要执行的代码块
# for基础用法>>> for num in [1,2,3,4,5]: ... print(num) ... 1 2 3 4 5 # 其实很好理解,定义一个num每次从[1,2,3,4,5]取出来一个值,并执行下边的语句,当[1,2,3,4,5]没有值的时候自动退出循环,因为是每次只取一个值,所以好处是会占用很少的内存 num = 1 print(num) num = 2 print(num) ...... # for循环也支持break和continue,和while循环里面的功能是完全一样的 # continue >>> for num in [1,2,3,4,5]: ... if num == 3: # 当遇到 num = 3的时候,退出本次循环不执行下边的代码 ... continue ... print(num) ... 1 2 4 5 # break >>> for num in [1,2,3,4,5]: ... if num == 3: # 当遇到 num = 3的时候,退出当前循环体 ... break ... print(num) ... 1 2
-
练习题(网上摘抄)
-
while循环
1. 使用while循环输出1 2 3 4 5 6 8 9 10
2. 求1-100的所有数的和
3. 输出 1-100 内的所有奇数
4. 输出 1-100 内的所有偶数
5. 求1-2+3-4+5 ... 99的所有数的和
6. 用户登陆(三次机会重试)
7:猜年龄游戏
要求:
允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出
8:猜年龄游戏升级版
要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序
如何猜对了,就直接退出
复制代码-
for循环
-
-