在python中制作日转换器的问题

时间:2018-09-15 23:06:37

标签: python python-3.x input

我是一个相当新的python编码器,所以任何帮助都会很棒。我希望我的代码做这样的事情:

How many days? 600
600 days is equivalent to 85.71428571428571 weeks.
600 days is equivalent to 20.0 months.
600 days is equivalent to 1.64385616438356 years.

但是当我尝试播放我的代码时:

x = input("How many days?")
w = 7
m = 30
y = 365
print(f"{x} days is equivalent to {x/w} weeks.")

它说像这样:

TypeError: unsupported operand type(s) for /: 'str' and 'float'

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

input函数总是在Python 3中返回一个字符串,因此您必须编写:

x = int(input('How many days? '))

目前,您正在尝试执行...

str / int
# and you need 
int / int

因此,只要可以转换输入 ,就可以将输入的结果强制转换为int。如果您想确保输入正确的内容,则可以深入研究功能和错误处理:

def int_input(prompt):
  while True:
    try:
      x = int(input(prompt))
    except ValueError:
      print('bad input!')
    else:
      return x

然后将int(input(...))替换为int_input(...)

答案 1 :(得分:2)

这是因为'x'变量作为字符串从输入中读取。尝试将其转换为int

这样做:

try:
    x = int(input("How many days?"))
except Exception as e:
    print(e)
    exit(1)
w = 7
m = 30
y = 365
print(f"{x} days is equivalent to {x/w} weeks.")

请注意,我在这里尝试,因为如果用户提供非数字值,则会出现错误(应该如此)。考虑一种更好的会计方法。

答案 2 :(得分:1)

部门需求为int,因此:

import sys
x = input("How many days?")
if x.isdigit():
    x=int(x)
else:
    print('non-numeric day')
    sys.exit()
...

它是python 3而不是python 2,因此删除了python 2中的input,并将raw_input重命名为input

顺便说一句:

print(f"{x} days is equivalent to {x/w} weeks.")