Python 试着做一个年龄计算器,但我在试着出错时遇到了一些问题;“行”;

Python 试着做一个年龄计算器,但我在试着出错时遇到了一些问题;“行”;,python,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 * 31

我想标题说明了一切,但我会给你代码

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()
所以问题是我希望它能给你几个月,几个星期,几天等等。 现在我知道怎么做了,但现在我试着写一行字,上面写着:请输入一个数字。如果用户输入字符而不是数字。当我每次键入一个数字时都运行上面的代码时,它会给我一行“请键入一个数字”,当我键入一个字符时,它也会这样做


我这里做错了什么?

当你读入输入时,它总是以字符串的形式读入。您需要将输入转换为int,就像

int(input("Age: "))
注意,如果用户输入一个字母而不是一个数字,这将中断,为了避免在不太改变代码的情况下改变这一点,您可以保持输入语句的原样,将if语句更改为以下内容

try: 
    age = int(age)
    print statement

except ValueError:
    print("Please type in a number")
要记住的另一件重要的事情是,在代码中,在将年龄分配给int之前,操作符会对年龄进行操作,这意味着

age * 12
实际上给你一个str('555555'如果传入的年龄是5岁)而不是一个数字。要解决此问题,您应该将语句移动到try中,以便在数字转换为整数后调用它们。Input()语句接受所有类型的输入作为字符串,因此即使您输入整数,它也将是类似“1”的字符串,因此您需要将给定的Input()类型转换为int()要么单独进行类型转换,要么直接在input()语句中进行类型转换,那么它将创建异常类型错误,这样您就可以使用try-catch-alt来重复该程序。所以,如果您使用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

分配了哪些值<代码>月<代码>,<代码>天<代码>,等等?这是什么意思?很抱歉,我刚开始学习Python。
input()
返回一个字符串,不管输入是数字还是一组字符。这就是为什么你的
如果type(age)==int
失败的原因。Dylan,欢迎使用SO。您应该仔细阅读“类型转换”和“数据类型”。虽然Python在声明变量时不像其他一些语言那样具有强类型,但是
input
中的数据类型是字符串(正如John Mark所说)。您需要将字符串类型转换为int(或至少尝试转换)。谢谢您的帮助!谢谢你的帮助!