输入年龄创建运势,注意逻辑运算的优先级,从左至右运行,也是个最基本的逻辑

43 篇文章 2 订阅
4 篇文章 1 订阅
gender=input('请输入您的性别(F/M):')
while gender.upper()!='F' and gender.upper() !='M':
    gender=input('输错了,请重新输入你的性别(F/M)')
age=input('请输入您的年龄:')
while not age.isdigit():
    age=input('输错了,请重新输入你的年龄')
while not int(age)>10:
    age = input('输错了,请重新输入你的年龄')
    continue
print(f"{'你今年的运势':*^12}") #注意*要在^之前而不是之后,否则会报错
print('你会考上清华并找到一个男盆友')

上面的是昨晚不断实验出来的,今天又在想为什么不加continue时,同一个数字输入两次就不循环了,第一遍输入2,不行,进行循环,接着再输入一次,2,如果没加continue,程序竟然往下走了.另外也有漏洞,当通过了第一个循环,之后,还是有可能输入非数字型的内容,这样又会导致程序中断.所以要改改.

今天再试,再思考,用pycharm调试,分开搞,有了新发现:

age=input('请输入您的年龄:')
while not age.isdigit() or int(age)<10 :
    age = input('输错了,请重新输入你的年龄')

print('开始下一段代码')

age=input('请输入您的年龄:')
while int(age)<10  or not age.isdigit():
    age = input('输错了,请重新输入你的年龄')

注意,这次,第一段的循环和第二段的循环,差别,仅在于同一行代码的两个条件出现的前后顺序不一样.结果是第一个是正确的,第2个是有BUG,当输入为空,就是什么都不输入,直接回车,就会出现报错.因为空的内容,也是字符型的,而字符型的非数字变量是不能用int的(本身就是个字母或者空的东东,当作数字来用,自然是不行了.).

而调整一下秩序之后,程序执行的时候,不仅是判断两个条件是否符合,更重要的是,执行的逻辑优先顺序是从左往右,这是最基本的逻辑,而开始的时候没注意这个问题 .

所以,在讲逻辑运算的优先级时,目前我知道的,除了not>or>and,还要加一个从左至右顺序执行这个规则,这是个基本逻辑,却对初入手时不太注意而忽视.

修改之后的是:

gender=input('请输入您的性别(F/M):')
while gender.upper()!='F' and gender.upper() !='M':
    gender=input('输错了,请重新输入你的性别(F/M)')
age=input('请输入您的年龄:')

while not age.isdigit() or int(age)<10 :  #注意这个循环条件句中的两个条件的顺序不能颠倒
    age = input('输错了,请重新输入你的年龄')
print('\n')
print(f"{'你今年的运势':*^12}") #注意*要在^之前而不是之后,否则会报错
print('你会考上清华并找到一个男盆友')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值