试图制作一个年龄计算器,但在尝试制作错误时我遇到了一些问题" line"

时间:2017-04-17 14:41:53

标签: python

我认为标题说明了一切,但我会给你代码。

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()

所以我想让它给你几个月,几周,几天等等。 现在我知道如何做到这一点,但现在我想尝试说一句:请输入一个数字。如果用户输入字符而不是数字。当我在每次输入数字时运行上面的代码时,它会给我一行"请输入一个数字"当我输入一个角色时,它会做同样的事情。

我在这里做错了什么?

2 个答案:

答案 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