2016-02-23 77 views
0

我試圖編程一個條形碼詞典與一個覆盆子pi的掃描儀相連的字典,它只允許某些數字放在字典中。 示例代碼不工作是:Python無效的令牌

variable = dict() 
variable[0425872013] = 200 

while True: 

    print('ready to scan next item') 
    buffer = input('->') 

print(variable[buffer]) 

它繼續彈出作爲與可變數量的無效標記。我已經嘗試將它們放入字符串中,並且在條形碼輸入數字時不會註冊它們。

+1

首先,你需要改進你的文章的格式。其次,你能描述爲什麼它不起作用嗎?你有沒有可以發佈的任何堆棧跟蹤或輸出?否則,很難幫助你。 – Demitrian

+1

*如何*它不起作用?你有錯誤嗎?結果是你期望的嗎? –

+0

這是Python 2還是Python 3? – jwodder

回答

1

您將鍵分配爲整數,但將鍵作爲字符串給出。所以試試這個:

print(variable[int(buffer)]) 
0

請注意,在這裏你已經把鍵設置爲一個整數。如果您使用的是Python 2,則應該使用raw_input()來輸入它,使其成爲一個字符串。

如果是Python 3,而input()是正確的,你仍然得到一個字符串,而不是一個整數。

輸入([提示])

如果提示參數存在時,它被寫入到標準輸出 沒有尾隨換行符。該函數然後從 輸入中讀取一行,將其轉換爲字符串(剝離尾隨換行符),並且 返回該字符串。

您應該做的鑰匙串'0425872013'或輸入緩衝區轉換爲整數(檢查,這是一個有效的整數條目)myinput = int(raw_input())

注意的整數值表示045在Python 3是非法的,因爲Python 2將它視爲一個八進制值(在Python 3中爲0o45)。

+1

請注意,他可能正在使用Python 3,在這種情況下'input'是正確的。 – glibdud

+0

我試過使鑰匙成爲一個字符串,掃描儀不是作爲一個字符串輸入,所以它沒有正確讀取? – Microwave

+0

@微波輸入(在Python 3中)確實輸入了一個字符串。發出一個類型(緩衝區),例如當我在Python 2.7中讀取它時,類型(緩衝區)給出。你需要檢查你得到的是什麼,並使鍵的類型相同。或者,將鍵設爲整數並使用'buffer = int(input('>'))'然而,在這種情況下,如果讀入非整數值,則設置爲異常。 – sabbahillel

0

您需要將條形碼作爲字符串放入字典中,並使用raw_input()而不是input()。無效標記錯誤來自數字文字,因爲前導零可以讓Python將其解析爲八進制數而不是十進制數,並且該數字包含八進制數中不允許的數字。