我是一个相当新的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'
任何帮助将不胜感激!
答案 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.")