我需要帮助让我的条件语句使用For循环来查看数组值。
我的印象是因为我没有使用b' X'因为我在其他两个if语句中,但我无法找到正确的语法来实现这一目标,而且我甚至不确定b在那里做了什么。
R和X键击确实正确执行了它们的代码,但是作为FOR循环的一部分检查的P,N,D和Q不会。
Token = [['P',0,.01,"Penny"],['N',0,.05,"Nickel"],['D',0,.10,"Dime"],['Q',0,.25,"Quarter"]]
def GetKey(CoinIn): # Recieve a coin, update all total counts and values
if CoinIn == b'R': # Reset All Values and counts to 0
for i in Token:
i[1] = 0
elif CoinIn == b'X': # Exit Request
return('X')
else: # HERE IS WHERE THE CODE BREAKS
for i in Token:
if CoinIn == i[0]:
i[1] += 1
有关更多上下文,fiddle #2在GitHub上是开源的。
答案 0 :(得分:1)
我认为您的代码完全正常。但这取决于GetKey()
的输入。
我在底部添加了以下几行:
GetKey('P')
GetKey('P')
print(Token)
GetKey('N')
GetKey('D')
print(Token)
GetKey('Q')
print(Token)
我得到了这个输出:
[['P', 2, 0.01, 'Penny'], ['N', 0, 0.05, 'Nickel'], ['D', 0, 0.1, 'Dime'], ['Q', 0, 0.25, 'Quarter']]
[['P', 2, 0.01, 'Penny'], ['N', 1, 0.05, 'Nickel'], ['D', 1, 0.1, 'Dime'], ['Q', 0, 0.25, 'Quarter']]
[['P', 2, 0.01, 'Penny'], ['N', 1, 0.05, 'Nickel'], ['D', 1, 0.1, 'Dime'], ['Q', 1, 0.25, 'Quarter']]
另一方面,如果您将字节而不是字符串传递给GetKey()
,请执行以下操作:
GetKey(b'P')
GetKey(b'P')
print(Token)
GetKey(b'N')
GetKey(b'D')
print(Token)
GetKey(b'Q')
print(Token)
你会看到这一行重复:
[['P', 0, 0.01, 'Penny'], ['N', 0, 0.05, 'Nickel'], ['D', 0, 0.1, 'Dime'], ['Q', 0, 0.25, 'Quarter']]
这是因为Token
中的硬币代码是字符串'P' 'N' 'D' 'Q'
。如果您将它们与b'P' b'N' b'D' b'Q'
进行相等比较,结果将为False
,因此您需要将Token
更改为如下所示:
Token = [[b'P',0,.01,"Penny"],[b'N',0,.05,"Nickel"],[b'D',0,.10,"Dime"],[b'Q',0,.25,"Quarter"]]
我认为有一个很好的理由,比如硬件,用于处理字节而不是字符串。