学习python-Day08
今日学习
补充:
print('1' > '2') # False
print('333' > '222') # True
print('33' > '111') # True
1.字符串的数字比较大小是按照各个字符比较-----位置一一对应的比较,只要在前面位置上字符(数字)的值得出大小,则结果就确定了。
2.如果名字是布尔值,则可以不做比较,直接结果是布尔值。
'''and'''
print(1 == 2 and 3) # False
print(1 == 1 and False) # False
1.and的链接多个条件必须都成立才能成立,如有一个不成立,则结果为False
print(10 > 3 and 100) # 100
print(1 and 10) # 10
2.and的链接多个条件时都是成立,但是里面有一个具体的值,则结果为具体值。
3.and链接条件的结果最终取决于后面的,最后的值是明确的数据值,则直接返回该数据值。( and 链接多个条件要一个个往后看,是否有不符合条件的,没有则返回为True,有具体数据值,则返回为该具体数据值)
print(1 == 1 and 2 == 2) # True
print(True and 1 == 1) # True
4.and链接多个条件,且都为表达式都成立,则结果转换为布尔值。
'''or'''
print(1 == 1 or 111) # True
print(1 or 10 > 20) # 1
print(10 or 100) # 10
1.or 链接多个条件只要其中一个成立则结果成立。
2.or 链接多个条件的判断是取决于前面的条件是否成立,前面是表达式且成立,则返回结果为True,无论后面是数据值还是True都不影响。
3.or 链接多个条件要是从前往后看,是否有条件成立的,没有则返回为False,有具体数据值,则返回为该具体数据值
'''not'''
它的结果肯定是个布尔值
循环结构之while循环
while 条件:
( 条件成立后执行的子代码)
1.先判断while后面的条件是否成立,如果成立则执行子代码。
2.子代码运行完毕后,再次回到while后面的条件判断出,判断条件是否成立
3.如果条件成立则执行子代码,完毕又再次回到while后面的条件来判断是否成立
4.如此往复,循环执行,直到while后面的条件不成立刻结束。
eg:
while True:
name = input('name>>>:')
pwd = input('pwd>>>:')
if name == 'xz' and pwd =='23'
print("ok!")
else:
print('NO')
'''我们可以设计一个计数器来结束while循环执行'''
#定义一个计时器
count = 1
while count < 11:
print('num:',count)
count += 1
'''
num: 1
num: 2
num: 3
num: 4
num: 5
num: 6
num: 7
num: 8
num: 9
num: 10
'''
1.设置计时器规定while能循环几次操作。
2.但是会有局限性,如果while子代码里面不确定是否执行成功,但是次数有限,会使程序提前结束。
3.这是while后面条件判断是否结束循环还有在循环体代码中添加关键字( break 、 continue )强制结束循环。
while+break
while True:
name = input('name>>>:')
pwd = input('pwd>>>:')
if name == 'xz' and pwd =='23':
print('ok')
#强制结束
break
'''结束本break所在的循环体 最近while下的循环体 '''
else:
print('no')
一个break只能结束在它所在的循环体代码。
while True:
print('我是外层的循环')
while True:
print('我是内层的循环')
break #①
break #②
1.如果位置①和位置②没有break,则结果就为一层“我是外层的循环”,剩下无限循环“我是内层的循环”。
2.如果只有位置①上有break,则结果就为一层“我是外层的循环”和一层“我是内层的循环”这样无限循环。
3.如果位置②和位置①都有break,则结果就只有一层“我是外层的循环”和一层“我是内层的循环”。
while+continue
# 循环打印1到10 但是到了7就跳过
count = 1
while count < 11:
if count == 7:
#让count自增1
count += 1 # ①
#跳过本次循环,开始下次循环
continue
print(count)
count += 1
1.该循环打印的结果是 1 2 3 4 5 6 8 9 10
原因是continue具有结束本次循环的,直接开始下次循环的作用,if先判断当 count 为7时就会执行 continue,跳过本次循环。
2.如果没有位置①的代码就会造成count一直为 7,一直出不了continue的循环就是死循环,结果只有1 2 3 4 5 6。
3.加位置①的代码是为了使程序能够执行到while后面的条件不符合后结束循环。
while True:
print(1)
while True:
print(3)
continue #①
continue #②
1.如果没有位置①代码,则结果是 1 3 3 3 ...
循环一直在子子代码的小循环体内。
2.如果只有位置①的代码,则结果是 1 3 3 3 3...
3.如果都有位置①和位置②的代码,则结果是 1 3 3 3 3 ...
4.原因是continu直接跳出当前循环,开始下一次循环,还是里最近的while循环体,一直循环。
while+else
count = 1
while count <5:
print("num", count)
if count == 3:
break
count += 1
else:
print("end")
1.else 是等 while 后面的条件正常结束后才执行。
2.当while循环正常执行,中间没有break的时候,会执else后面的语句。
但是如果while语句中有brerak,那么就不会执行else后面的内容了。
3.如果将 else: 去掉,将 print与 while对齐,也会打印出结束循环的效果。但是有没有break都打印。
死循环与全局标志位
1.死循环
count = 10
while True:
count *= 10
这是一串死循环的代码,它能使cpu一直在高速运行,长时间这样使电脑发热。最好先避免死循环的发生。
while True:
name = input('name>>>:')
计算机需要获取用户的信息,即使在循环中,但是计算机还是有时间去等待,并非高速运行。
2.全局标志位(可以不用)
flag = True
while flag:
print(1)
while flag:
print(3)
while flag:
print(2)
flag = False
在面对 while 里面嵌套 各个 while中,如果不想多个 break来结束各个循环体,我们可以采用全局标志来代替多个break的使用,这只是简化的代码。
作业
1.准确说出下列判断的结果(不要执行代码)
v1 = 1 or 3 1
v2 = 1 and 3 3
v3 = 0 and 2 and 1 0
v4 = 0 and 2 or 1 1
v5 = 0 and 2 or 1 or 4 1
v6 = 0 or False and 1 False
2.编写一个用户登录程序
用户如果登录失败 则只能尝试三次
用户如果登录成功 则直接结束程序
count = 1
while count < 5:
name = input('username>>>:')
qwd = input('password>>>:')
if name == 'xz' and qwd == '1823':
print("成功!!!")
break
else:
print("用户登录错误,你还有%s 次登录机会" % (4 - count))
count += 1
else:
print("尝试三次错误,你已经没有机会!!!")
3.编写一个用户登录程序
用户如果登录失败 可以无限制尝试
用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
eg: 用户输入cmd指令 则程序打印'正在执行您的指令:cmd'
给用户提供一个退出命令 用户一旦输入则退出这个程序
eg: 用户输入q指令 则程序先打印该指令再结束
i1 = input('')
while True:
name = input('username>>>:')
pwd = input('password>>>:')
if name == 'xz' and pwd == '123':
print("成功!!!")
while i1 != 'q':
i1 = input('')
print("正在执行您的指令:%s" % i1)
continue
else:
print(i1)
break
4.编写猜年龄的游戏(拔高练习 尝试编写)
用户有三次猜测的机会 如果用完则提示用户是否继续尝试
用户输入y则继续给三次机会 如果用户输入q则直接结束程序
import random
# 这里需要导入一个随机数
print('''
-------游戏说明------------
1.输入你的年龄
2.答对恭喜你猜对了!
3.答错了,会提醒你是否继续游戏。
4.按’y‘继续游戏,按’n‘退出游戏
--------------------------
''')
# 定义变量,年龄
age = input("输入年龄>>>:")
age = int(age)
count = 1
# 这是设置循环次数
while count < 4:
# 这是计算机随机数设置
computer = random.randint(0, 21)
if age == computer:
print("猜对了!!!")
# 猜对就结束本循环
break
# 猜错要另外考虑输入格式’y‘和’n‘的问题
else:
print("你已经猜错了%s次,最多猜%s次" % (count, 3 - count))
count += 1
# 获取用户输入
key = input("是否继续游戏(y/n):")
if key == 'y':
age = input("输入年龄>>>:")
computer = random.randint(0, 21)
if age == computer:
print("猜对了!!!")
break
if key == 'n':
break
# 验证一些用户的输入值是否超过三次,超过就结束
if count % 3 == 0:
key = input("你已经猜错三次,没有机会猜了!!!是否继续'y'/'n':")
if key == 'y':
count = 1
age = input("输入年龄>>>:")
computer = random.randint(0, 21)
if age == computer:
print("猜对了!!!")
break
if key == 'n':
print('你已退出')
break