我该如何创建这个理货程序?

2024-06-11 00:13:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到一个错误“TypeError:无法将int对象隐式转换为str” 当我试着运行这个代码的时候。在x+=1线上。 这个程序的目标是接收诸如“RA1”或“R04”之类的输入,并将1添加到值中,该值始终从0开始。然后我希望它在键入END时“打印”结果。事实证明,这是一个相当大的挑战。Python 3.5.1版

x = 0
y = 0
z = 0



print("Enter 3 digit code.")

x = str(input())

while x != "END":

if x == "RA1":

    x += 1

    continue

elif x == "R04":

    y += 1

    continue

elif x == "etc":

    z += 1

    continue

else:

    print('Please enter a 3 digit value or END')

Tags: 对象代码程序目标错误intendprint
2条回答

你的代码中有多个问题

TypeError的原因是您无意中通过写入x = str(input())使x成为一个字符串,并且当您想向其中添加1时,Python试图将1转换为字符串以将其连接到x

无限循环与您收到的TypeError无关。它是由于str(input())调用的位置错误而发生的

这是固定while循环的工作代码:

x = 0
y = 0
z = 0
i = ""

print("Enter 3 digit code.")

while i != "END":
    i = input()
    if i == "RA1":
        x += 1
    elif i == "R04":
        y += 1
    elif i == "etc":
        z += 1
    else:
        print('Please enter a 3 digit value or END')

print(str(x) + " " + str(y) + " " + str(z))

您需要通过用str()包装每个整数来将整数转换为字符串。 之后,使用x = raw_input()作为输入。当你第一次进入循环时,你需要接受一个输入,但是当你循环回来的时候。因此,你需要一种方法来阻止你的无限循环。因此,需要在循环的开头添加x = raw_input()

实际上,你只需要在循环开始时得到你的输入,不需要2

另外,x、y和z也应该是空字符串或null,而不是0

x = ""
y = ""
z = ""




while x != "END":

    print("Enter 3 digit code.")

    x = raw_input()

    if x == "RA1":

        x += str(1)

        continue

    if x == "R04":

        y += str(1)

        continue

    elif x == "etc":

        z += str(1)

        continue

    else:

        print('Please enter a 3 digit value or END')

相关问题 更多 >