python基础3 运算符补充与while循环

300 阅读2分钟

逻辑运算符补充

and

  • and连接的如果是运算,需将运算先转换为布尔值。
  • and前的运算得出布尔值为True,则结果取决于and连接的末尾。
  • and末尾是布尔值为True的数据值,会返回数据值。
  • and前得出布尔值为False,则返回布尔值为False。

or

  • or前的运算连接的布尔值为False,则结果取决后or连接的其他数据值。
  • or前的运算连接的布尔值为True,则有具体数据值返回数据值,没有返回True。

not

  • not输出的结果一定是布尔值。

当and与or混用时

  • 混用时具体返回结果可能为布尔值也可能是数据值。(我们直接当布尔值处理即可)

while循环

while循环

  • 1.判断while后面的条件是否成立,成立执行该循环的子代码。
  • 2.子代码运行完之后,返回while后面的条件判断,判断条件是否成立。
  • 3.如果成立继续执行此代码,结束后再次判断while后的条件是否成立。
  • 4.如此循环重复,当while后的条件不成立时。循环结束。 例1:
while True:
    user_id = input('用户名:')
    user_key= input('密码:')
    if user_id == 'tom' and user_key == '233':
        print('超级用户')    
    else:
        print('请检查用户名或密码后重试')

输出结果: 1655896090455.png 例2:

count = 2
while count < 11:
    print('tom')
    count += 3   

输出结果: 1655896622431.png 以上while满足条件是可以一直打印,当条件不成立时会跳出循环。

while循环+break结束循环

当我们想要结束一个循环时:

  • 1.我们可以给其加上判断条件。
  • 2.我们可以在循环末尾加上关键词跳出当前循环。

break

例:

while True:
    user_id = input('用户名:')
    user_key= input('密码:')
    if user_id == 'tom' and user_key == '233':
        print('超级用户')
        break
    else:
        print('请检查用户名或密码后重试')

输出结果: 1655897258855.png 1655897345077.png

  • 当我们添加了break给输入正确的用户名强制结束时,会直接结束程序。
  • 另一边的输入错误的用户名密码,由于没有添加break,会循环此操作,直至用户名密码输入正确后跳出此循环。

注:一个循环体只能结束她所在的那一层代码。

例: 1655898099565.png 1655898136343.png

  • 当我们去除最外层的break时,循环无法结束,就会出现一直打印输出的现象。

while循环+continue结束循环

  • 在一个循环体中加入continue后可结束某一次循环,去执行下一次循环。 例:
count = 2
while count < 13:
    if count == 5:  # count = 5 时会跳过当前循环进行下一轮循环直至结束 
        count += 3
        continue
    print(count)
    count += 3

输出结果: 1655898781479.png

  • 我们可以看到本来应该打印出来的5结束了循环。
  • continue只会影响其所在的一行循环。

while循环+else

  • while条件满足执行while,不满足则会执行else下的子代码
count = 1
while count <= 10:
    if count == 7:
        count += 1
        continue
    print(count)
    count += 1
else:
    print('循环体按照提前定义好的条件正常结束 则会执行')

死循环与全局标志位

死循环:

  • 计算机中涉及了数值的计算时,死循环是不允许出现的。当计算机在打印一些需要输出的字符串是时可以出现的。 全局标志位:
flag = True  #设置一个全局标志位
while flag:
    print(123)
    while flag:
        print(321)
        while flag:
            print(222)
            flag = False  #结束全局循环

小作业

1.准确说出下列判断的结果(不要执行代码)
    v1 = 1 or 3                   #1
    v2 = 1 and 3                  #3
    v3 = 0 and 2 and 1            #False
    v4 = 0 and 2 or 1             #False
    v5 = 0 and 2 or 1 or 4        #False
    v6 = 0 or False and 1         #False
2.编写一个用户登录程序
	用户如果登录失败 则只能尝试三次
	用户如果登录成功 则直接结束程序
  • 输入代码
count = 1
while count < 4:
    user_id = input('用户名:')
    user_password = input('密码:')
    if user_id == 'tom' and user_password == '233':
        print('登录成功')
        break
    else:
        print('登录失败')
        count += 1
  • 流程图 1655901648505.png
  • 输出结果: 1:登录成功 1655885879841.png 2:登录失败 1655885814241.png
3.编写一个用户登录程序
	用户如果登录失败 可以无限制尝试
	用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
    	eg: 用户输入cmd指令 则程序打印'正在执行您的指令:cmd'
	给用户提供一个退出命令 用户一旦输入则退出这个程序
    	eg: 用户输入q指令 则程序先打印该指令再结束
  • 流程图: 1655902281141.png
  • 输入代码
while True:
    user_id = input('用户名:')
    user_password = input('密码:')
    if user_id == 'tom' and user_password == '233':
        print('登录成功')
        while True:
            instruct = input('>>>')
            if instruct == 'cmd':
                print('正在执行您的指令:cmd')
            elif instruct == 'q':
                print('>>>q')
                break
            else:
                print('无效的指令!')
    else:
        print('登录失败')
  • 输出结果:

1655889247064.png

4.编写猜年龄的游戏(尝试编写)
	用户有三次猜测的机会 如果用完则提示用户是否继续尝试
	用户输入y则继续给三次机会 如果用户输入q则直接结束程序
  • 输入代码

  • 流程图: image.png

  • 输出结果: