2017-04-17 77 views
0

我觉得标题说明了一切,但我给你的代码时,我有一些问题。试图让一个年龄计算器,而是试图让错误“行”

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

'months','days'等分配了哪些值? –

+0

你是什么意思?我很抱歉,我刚刚开始使用Python。 – Dylan

+0

'输入()'返回字符串,而不管该输入是否是数字或字符集。这就是为什么你的'if type(age)== int'失败。 –

回答

0

输入()语句后接受所有类型的输入为字符串,所以即使你输入一个整数这将是一个字符串,如“1”,所以你需要强制转换给定的输入()为INT()两种类型的投它单独或如果你直接在输入(强制转换)语句,然后它会创建异常类型的错误,所以你可以使用尝试捕捉奥拓重复程序。所以如果你使用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 
+0

感谢您的帮助! – Dylan

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)而不是一个数字。为了解决这个问题,你应该陈述移入尝试让他们被称为数转换为整数

+0

感谢您的帮助! – Dylan