Python GetCh 与 For 循环

Python GetCh vs For Loop

我需要帮助让我的条件语句使用 For 循环查看数组值。

我觉得这可能是因为我没有像在其他两个 if 语句中那样使用 b'X',但我只是想不出正确的语法来实现这一点,我我什至不确定 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

有关更多上下文,the entire project 在 GitHub 上开源。

我认为您的代码可以正常工作。但这取决于 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"]]

我想有一个很好的理由,比如硬件,使用字节而不是字符串。