Python 我该如何创建这个理货程序?
我得到这个错误“TypeError:无法将'int'对象隐式转换为str” 当我尝试运行此代码时。它在x+=1线上。 该程序的目标是接收输入,如“RA1”或“R04”,并将1添加到值中,该值始终从0开始。然后,我希望它在我键入END时“打印”结果。事实证明,这是一个相当大的挑战。Python 3.5.1Python 我该如何创建这个理货程序?,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 == "
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。