我认为标题说明了一切,但我会给你代码。
stop=0
while stop != 'q':
print("Age calculator")
name = input("Name: ")
print("Type in your age")
age = input("Age: ")
months = age * 12
days = age * 365
weeks = age * 52
hours = days * 24
minutes = age * 525948
seconds = age * 31556926
if type(age) == int:
print (name, "lives for", months, "months", weeks, "weeks", days, "days", hours, "hours", minutes, "minutes and", seconds, "seconds")
else:
print("Please type in a number")
print()
print("Try again? Press ENTER")
print("Quit? Press 'q' and then ENTER")
print()
stop = input()
所以我想让它给你几个月,几周,几天等等。 现在我知道如何做到这一点,但现在我想尝试说一句:请输入一个数字。如果用户输入字符而不是数字。当我在每次输入数字时运行上面的代码时,它会给我一行"请输入一个数字"当我输入一个角色时,它会做同样的事情。
我在这里做错了什么?
答案 0 :(得分:1)
当你读入输入时,它总是以字符串形式读入。您需要将输入转换为int,如
int(input("Age: "))
请注意,如果用户输入一个字母而不是一个数字,这将会中断,以便在不更改代码的情况下解决这个问题,您可以保留输入语句,因为它们会将if语句更改为以下内容。
try:
age = int(age)
print statement
except ValueError:
print("Please type in a number")
要记住的另一个重要事项是,在代码中,运算符在分配给int之前就会使用年龄,这意味着
age * 12
实际上给你一个str('555555555555',如果传入的年龄是5)而不是数字。要解决此问题,您应该将语句移动到try中,以便在将数字转换为整数后调用它们
答案 1 :(得分:0)
Input()语句接受所有类型的输入作为字符串,所以即使你输入一个整数,它也会像" 1"所以你需要将给定的input()作为int()进行类型转换,或者单独强制转换它,或者如果直接在input()语句中进行类型转换,那么它将创建异常类型错误,这样你就可以使用try catch al来重复该程序。因此,如果你使用try catch,那么代码就是。
status=""
try:
while True:
print("Age calculator")
name = input("Name: ")
print("Type in your age")
age = input("Age: ")
age=int(age)
months = age * 12
days = age * 365
weeks = age * 52
hours = days * 24
minutes = age * 525948
seconds = age * 31556926
print (name, "lives for", months, "months", weeks, "weeks", days, "days", hours, "hours", minutes, "minutes and", seconds, "seconds")
print("Try again? Press ENTER")
status = input("Quit? Press 'q' and then ENTER")
if status = "q":
break # terminates program if "q" is entered.
except TypeError:
print("Please type in a number for age")
continue #runs program till "q"is passed as age.
except:
raise # this raises error if something goes wrong