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

Python 我该如何创建这个理货程序?,python,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 == "

我得到这个错误“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')

您的代码中存在多个问题

导致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\u input()
进行输入。当你第一次进入循环时,你需要接受一个输入,但是当你循环回来的时候也是如此。因此,您需要一种方法来停止无限循环。因此,需要在循环的开头添加
x=raw\u 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')

你需要一个>>明确你有太多的空行。您需要的唯一空行可能是第一个
打印
前的1行,以及
while
前的一行。剩下的就可以了,代码的可读性也会更高。您的缩进也已关闭(
if
elif
while
循环中,因此它们需要一个更高级别的缩进。将我带入一个无限循环,与另一个循环相同answer@gabrielscharf我编辑了我的答案。你必须通过接受新的输入来停止循环。@Kris,我不确定你的意思,你能解释得更深入一点吗?我也编辑了d我的回答是因为我意识到你可能想要实现完全不同的东西。没有必要做
str(input())
,因为
input
返回字符串。而且你也不需要那些
continue
s。