2016-12-14 30 views
0

我必須調用readPriceList函數從文本文件中讀取價格表並顯示它。然後,我必須使用循環讓客戶輸入產品代碼。當他輸入不在列表中的代碼時,顯示項目未找到。否則,找到物品和價格。和9999退出循環。似乎它不是讀的清單,我的循環不工作

def scanPrices(): 
    price_list = readPriceList() 
    price = set(price_list) 
    itemCode = 0 
    totalPrice = 0.0 
    item_price = price_list.values() 
    itemCode = int(input("Enter 4-digit item code [or 9999 to stop]: ")) 
    while itemCode != 9999: 
     itemCode = int(input("Enter 4-digit item code [or 9999 to stop]: ")) 
     if itemCode in price_list: 
      itemPrice = price_list.values() 
      print("Item found. Price:", item_price) 
     else: 
      print("Item not found") 
    return totalPrice 

這是我的輸出:

Welcome to Wake-Mart. Please register! 
Name: lol 
Enter credit card number: 444444 
Enter security code: 454 
Enter debit card number: 44444444 
Enter PIN: 5555 
Registration completed! 

Price list: 
('1423', 7.88) 
('1752', 4.99) 
('2368', 5.25) 
('2159', 0.99) 
('2487', 12.52) 
('4178', 8.00) 
('5206', 4.25) 
('6112', 5.77) 
('6245', 4.88) 
('6625', 2.99) 
Enter 4-digit item code [or 9999 to stop]: 6112 
Enter 4-digit item code [or 9999 to stop]: 9999 
Item not found 

非常感謝!

+1

可能是因爲'readPriceList()' (我們看不到)在從文件讀取時不會將數據轉換爲整數。所以你用整數比較字符串。 –

+0

是price_list元組列表?或字典?我認爲你需要了解Python數據結構如何工作 – Navidad20

+0

price_list是一本字典 –

回答

0

由於字典包含鍵的字符串,因此不需要將任何內容轉換爲整數。我也將輸入移動到while循環的底部,因此它在開始時不會顯示兩次。

def scanPrices(): 
    price_list = readPriceList() 
    totalPrice = 0.0 
    itemCode = input("Enter 4-digit item code [or 9999 to stop]: ") 
    while itemCode != '9999': 
     if itemCode in price_list: 
      itemPrice = price_list[itemCode] 
      print("Item found. Price:", itemPrice) 
      totalPrice += itemPrice 
     else: 
      print("Item not found") 
     itemCode = input("Enter 4-digit item code [or 9999 to stop]: ") 
    return totalPrice 
+0

非常感謝你! –

+0

@ma_rodrigues如果這是你正在尋找的東西,你能標記爲接受的答案嗎? – Navidad20

0

您與整數比較字符串,要麼轉換鍵在PRICE_LIST字典爲整數或者不轉換itemcode變量爲整數,讓它成爲字符串