我遇到if语句检查输入是否正确的问题。 当我输入M或F时,它打印出“输入错误”,我不太清楚它。
def check(aw,iw):
if abs(aw-iw)<5 :
print "Your weight is normal."
elif abs(aw-iw)>5 and abs(aw-iw)<15 :
print "Your weight is about normal."
else:
print "Your weight is not normal."
return
print "Enter your gender (M/F)"
gender=raw_input()
if gender!='M' or gender!='F':
print "Wrong input."
else:
if gender=='M':
w=raw_input("Enter your weight (kg) :")
h=raw_input("Enter your height (cm) :")
idw=110-h
check(w,idw)
else:
w = raw_input("Enter your weight (kg) :")
h = raw_input("Enter your height (cm) :")
idw = 110 - h
check(w, idw)
答案 0 :(得分:1)
每个输入不等于M
或不等于F
(例如,M
不等于F
)。相反,您需要检查您的输入是否不等于M
和不等于F
:
if gender != 'M' and gender != 'F':
# Here ------^
print "Wrong input."
或者,更优雅地,使用not in
运算符:
if gender not in ('M', 'F'):
print "Wrong input."
答案 1 :(得分:1)
此行不正确:
if gender!='M' or gender!='F':
它始终会解析为False
,因为gender
永远不会同时为M
和F
。
您可以改为使用in
:
if gender in ('M', 'F'):
可替换地:
if (gender != 'M') and (gender != 'F'):
另外,删除行gender=int(gender)
:它应该始终失败。
答案 2 :(得分:0)
我希望您在之前的问题答案中已经得到了答案。我想补充一个事实,你欣赏一些你可能面临的简单问题的可视化,但每个初学者都非常精致。
你有或这样做 - 当你写作
中号
python检查是否
M != (不等于)M
但是M等于M.因此它会导致错误,然后检查是否
M!= F
并且看到它的真实性。 或操作因此执行以下操作 -
当你的那个类似于第三个时它返回true而python说&#34;错误的输入&#34;。
如果你写和,那么它会像 - 是
中号!= M
返回false,和
中号!= F
返回true。
在和中就像 -
因此python为if语句返回false,并在下一行代码中遵循您希望它执行的操作。我希望它非常清楚。
删除gender = int(性别)它不是必需的,因为python可以将M和F识别为char,你不需要将它变成整数值或ascii。
答案 3 :(得分:0)
删除行
gender=int(gender)
并对
进行更改 if gender!='M' or gender!='F':
作为
if gender!='M' and gender!='F':
答案 4 :(得分:0)
此外,您应该使用<=
在评估中包含限制。
def check(aw,iw):
if abs(aw-iw)<=5 :
print "Your weight is normal."
您可以缩短elif abs(aw-iw)>5 and abs(aw-iw)<15:
,因为if abs(aw-iw)<5
不是真的,那么它总是会高于5.
#Instead of elif abs(aw-iw)>5 and abs(aw-iw)<15:
elif abs(aw-iw)<=15:
print "Your weight is about normal."
else:
print "Your weight is not normal."
return
而不是:
print "Enter your gender (M/F)"
gender=raw_input()
gender=int(gender)
您应该使用:
gender = raw_input('Enter yor gender (M/F)')
int(gender)
会导致错误,因为gender=raw_input()
所需的输入会给出一个字母字符串。
您应该为or
更改and
,因为如果您使用or
,如果您的输入为'M'
,那么gender != 'F'
将会True
它将运行if
条件。
#Instead of if gender!='M' or gender!='F':
if gender!='M' and gender!='F':
print "Wrong input."
在这里,您应该使用int(raw_input())
将变量计算为整数,并能够对它们进行加或减。由于您使用M
或F
执行相同的代码,因此无需编写另一个if:
else:
条件。
else:
w = int(raw_input("Enter your weight (kg) :"))
h = int(raw_input("Enter your height (cm) :"))
idw = 110 - h
check(w, idw)