问题在于:
你驾驶的速度有点太快,一名警察阻止你。编写代码来计算结果,编码为int值:0 =没有票,1 =小票,2 =大票。如果速度为60或更低,则结果为0.如果速度在61和80之间,则结果为1.如果速度为81或更高,则结果为2.除非是您当天的生日,否则您的速度可以在案件中高出5。
我的代码:
speed = int(input());
birthday = input();
if (not birthday):
if (speed <= 60):
print(0);
elif (speed >= 61 and speed <= 80):
print(1);
elif (speed >= 81):
print(2);
elif (birthday):
if (speed >= 61 and speed <= 65):
print(0);
elif (speed >= 81 and speed <= 85):
print(1);
这是输出:
我做错了什么?
答案 0 :(得分:4)
当你收到input()
的输入时,你得到的不是布尔值,正如你在这里假设的那样,而是一个字符串。因此,您应该检查
if (birthday == "True")
和
elif (birthday == "False")
答案 1 :(得分:0)
当前birthday
是一个字符串,所以当你说if not birthday
时,Python会逐字检查以确保该字符串存在,并且当它确实存在时,它会运行elif
语句。你需要说出类似birthday = bool(input())
的内容,并让用户输入0或1.另外,在不相关的注释中,Python在每个语句的末尾不需要分号 - 实际上它们非常不受欢迎。此外,在输入中包含一些内容,例如speed = int(input("How fast were you driving?: "))
,这样用户就不必神奇地知道他们放入了什么。此外,if
语句中的括号也是不必要的。最后,不要说elif birthday:
,而应该说else:
,因为很明显,如果它不是假的话,那就是真的。
答案 2 :(得分:0)
最简单的方法是,如果是生日,则从速度中减去5。
birthdayValue = {True: 5, False: 0}
speed = int(input("Speed: "))
birthday = input("Birthday (True/False): ")
speed -= birthdayValue[birthday == 'True']
if speed <= 60:
print(0)
elif 60 < speed <= 80:
print(1)
elif 80 < speed <= 85:
print(2)
答案 3 :(得分:0)
在python 3中,input
返回一个字符串,您应该在接受之前验证该字符串。对于生日,你需要决定你对输入内容的严格程度,并编写代码来强制执行。如果输入为“True”或“False”但您可以将人们搞乱案例或添加一些空格,那么这样就可以了
speed = int(input())
birthday = input().strip().lower()
# valiate input
if speed < 0:
print("Speed must be > 0")
exit(1)
if birthday == 'true':
birthday = True
elif birthday == 'false':
birthday = False
else:
print("Birthday must be True or False")
exit(1)
# give 'em a break on their birthday
if birthday:
speed -= 5
# calculate points
if (speed <= 60):
print(0)
elif (speed >= 61 and speed <= 80):
print(1)
else:
print(2)