【问题标题】:TypeError: Can't convert 'int' object to str implicitly Python 3TypeError:无法将'int'对象隐式转换为str Python 3
【发布时间】:2013-11-12 08:28:52
【问题描述】:

我正在尝试做一个小程序,但它不起作用,我想写 4 个不同的数字整数和小数,但它不起作用。我收到错误消息 TypeError: Can't convert 'int' object to str 隐式。你们能帮帮我吗?

a = str(input("Ange ett siffervärde: "))
b = str(input("Ange ett siffervärde: "))
c = str(input("Ange ett siffervärde: "))
d = str(input("Ange ett siffervärde: "))

l = (a+b+c+d)
for l in range (a, d+1):
    print(l)

我希望程序打印我输入的数字。

【问题讨论】:

标签: python string


【解决方案1】:

您正在尝试将d 用作整数:

for l in range (a, d+1):

通过添加 1 到它,但你把它变成了一个字符串:

d = str(input("Ange ett siffervärde: "))

all 将您的输入改为整数:

a = int(input("Ange ett siffervärde: "))
b = int(input("Ange ett siffervärde: "))
c = int(input("Ange ett siffervärde: "))
d = int(input("Ange ett siffervärde: "))

接下来,您的 for 循环破坏了 l 变量:

l = (a+b+c+d)
for l in range (a, d+1):

不清楚你想在循环中做什么,但是abcd的总和现在丢失了,因为l也被用作循环变量.

如果您想要小数,可以使用float() 代替int(),但请注意range()只能处理整数!

如果你想循环打印 4 个数字,那么首先创建一个列表并直接在列表上循环:

a = float(input("Ange ett siffervärde: "))
b = float(input("Ange ett siffervärde: "))
c = float(input("Ange ett siffervärde: "))
d = float(input("Ange ett siffervärde: "))

lst = [a, b, c, d]
for number in lst:
    print(number)

或将循环与询问号码并打印相结合:

lst = []
for count in range(4):
    number = float(input("Ange ett siffervärde: "))    
    print(number)
    lst.append(number)

这会请求一个数字四次,打印给定的数字,然后将该数字添加到列表中以供以后使用。

【讨论】:

  • 我希望程序打印我在彼此下方说出的数字。
  • @user2916710:所以你希望l 成为一个列表。
  • @user2916710:请同时更新您的问题(您可以编辑它)以添加该信息。
【解决方案2】:

使用这个:

a = int(input("Ange ett siffervrde: "))
b = int(input("Ange ett siffervrde: "))
c = int(input("Ange ett siffervrde: "))
d = int(input("Ange ett siffervrde: "))

【讨论】:

  • 如果我使用 int 我不能使用小数,
  • @user2916710:然后使用float,但请注意range()不采用浮点值。
  • @user2916710:你需要告诉我们更多关于你的程序应该做什么这里的数字。
  • 我希望它在我使用小数时也能像这样使用 a = int(input("Ange ett siffervärde: ")) b = int(input("Ange ett siffervärde: ")) c = int(input("Ange ett siffervärde: ")) d = int(input("Ange ett siffervärde: ")) l = (a+b+c+d) for l in range (a, d+1):打印(l*1.0)
【解决方案3】:

您的变量 a、b、c 和 d 是字符串,而不是数字,因此您不能将它们作为参数传递给 range,也不能将它们添加到整数。

【讨论】:

    【解决方案4】:
    a = int(input("a=: "))
    b = int(input("b=: "))
    
    lst = [a, b]
    for number in lst:
        print(number)
    

    在我的机器上没问题(python 2.6);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2017-07-21
      • 2013-09-27
      • 1970-01-01
      相关资源
      最近更新 更多