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('你会考上清华并找到一个男盆友')