2011-11-07 5 views
1

이것은 내가하고있는 숙제를위한 것입니다.누적 합계 사전

다음과 같은 .txt 파일이 있습니다.

11 
eggs 
1.17 
milk 
3.54 
bread 
1.50 
coffee 
3.57 
sugar 
1.07 
flour 
1.37 
apple 
.33 
cheese 
4.43 
orange 
.37 
bananas 
.53 
potato 
.19 

은 내가 당신이 단어를 입력 할 때, 실행중인 총을 유지한다 할 노력하고있어 "계란은"그 단어는 "빵"은 모두의 비용을 추가하고 "EXIT"가 나타날 때까지 계속해야합니다 또한 나는 'KeyError'에 빠지게 될 것이고 그걸 도울 필요가있다.

def main(): 
    key = '' 
    infile = open('shoppinglist.txt', 'r') 
    total = 0 
    count = infile.readline() 
    grocery = '' 
    groceries = {} 


    print('This program keeps a running total of your shopping list.') 
    print('Use \'EXIT\' to exit.') 


    while grocery != 'EXIT': 

     grocery = input('Enter an item: ') 

     for line in infile: 
      line = line.strip() 
      if key == '': 
       key = line 

      else: 
       groceries[key] = line 
       key = '' 

     print ('Your current total is $'+ groceries[grocery]) 

main() 

답변

1

파일에 각각 다른 식료품의 가격이 포함되어 있습니까?

사용자 input의 문장은 끝 부분에 .strip()이 있어야합니다. 때로는 사용자 입력에서 줄 끝 문자를 포함 할 수 있기도합니다.

루프에서가 아니라 한 번만 파일을 읽으면됩니다. http://docs.python.org/library/collections.html#collections.Counter

:

if grocery in groceries: 
    ... 
else: 
    #grocery name not recognised 

난 당신과 같은 각 식료품 뭔가의 수를 저장하기 위해 별도의 사전을 가지고해야한다고 생각 : 사용자가 당신이 존재 함을 확인 말하는대로해야 식료품 항목을 입력

import collections 
quantitiesWanted = collections.Counter() 

그런 다음 어떤 식료품 점에 대해서도 quantitiesWanted['eggs']과 같이 요청하면 기본적으로 0을 반환합니다. quantitiesWanted['eggs'] += 1과 같이하면 1으로 증가합니다.

total = 0 
for key, value in quantitiesWanted: 
    total += groceries[key] * value 
:

은 당신이 할 수있는 현재의 총을 얻으려면