类型错误:'str'对象无法被解释为整数。

37

我不明白代码有什么问题,它非常简单,所以这个很容易。

x = input("Give starting number: ")
y = input("Give ending number: ")

for i in range(x,y):
 print(i)

它给我一个错误

Traceback (most recent call last):
  File "C:/Python33/harj4.py", line 6, in <module>
    for i in range(x,y):
TypeError: 'str' object cannot be interpreted as an integer

举个例子,如果x是3,y是14,我希望它打印出:

Give starting number: 4
Give ending number: 13
4
5
6
7
8
9
10
11
12
13

问题是什么?

8个回答

33

最简单的修复方法是:

x = input("Give starting number: ")
y = input("Give ending number: ")

x = int(x)  # parse string into an integer
y = int(y)  # parse string into an integer

for i in range(x,y):
    print(i)

input 函数会返回一个字符串(在 Python 2 中是 raw_input)。int 函数会尝试将其解析为整数。如果字符串不包含有效的整数字符串,该代码将引发异常,因此您可能需要使用 try/except 语句进行优化。


11

你遇到这个错误是因为range()函数只接受整数作为参数。

尝试使用int()将输入转换为整数。


5
x = int(input("Give starting number: "))
y = int(input("Give ending number: "))

for i in range(x, y):
    print(i)

这会输出:

我已上传了带有代码的输出


3
x = int(input("Give starting number: "))
y = int(input("Give ending number: "))

附加int()函数


1
你需要将输入的 x 和 y 转换为整数,方法如下。
x=int(x)
y=int(y)

1
我猜你正在使用Python3,其中input(prompt)返回一个字符串。尝试这个。
x=int(input('prompt'))
y=int(input('prompt'))

1
在Python2中,使用int(raw_input('prompt'))。 - Perkins

1

您将需要放置:

X = input("give starting number") 
X = int(X)
Y = input("give ending number") 
Y = int(Y)

0
或者你也可以使用eval(input('prompt'))

eval()函数将表达式转换为输入的计算版本。这用于解决Python 3与Python 2之间的向后不兼容性问题。 - Aditya Kumar
我在我的阶乘程序中使用了这段代码,之前程序一直无法运行(报错为:for i in range(1,n+1): TypeError: must be str, not int),但是现在它可以正常工作了:n = eval(input("请输入一个数字:")) j=1 for i in range(1,n+1): j=j*i i=i+1 print(j) - Aditya Kumar
1
这可能会起作用... 但它会创建一个巨大的安全漏洞,如果您在没有先正确检查字符串的情况下运行eval,攻击者几乎可以自由地掌控。 - 255.tar.xz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接