2014-12-02 8 views
-1

Я работаю над этим кодом какое-то время. Он продолжает говорить об этом:Ошибка генератора пищи

Traceback (most recent call last): 

    File "N:\Computing\Meal Generator.py", line 30, in <module> 
    print(DaysOfTheWeek[0+counter],": ",Meals[random_meal]," and a number of ",NumberOfSides[random_meal],".") 

TypeError: unsupported operand type(s) for +: 'int' and 'str' 

Вот код, который отображает эту ошибку. Любая помощь будет полезной.

import random 
random.seed() 


Meals=[] 
SideDishes=[] 
DaysOfTheWeek=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"] 
print("1=Meal, 2=Side, 3=Finished") 
option=input("What would you like to do?: ") 
while option!=3: 
    if option=="1": 
     MealName=input("What meal would you like to add?: ") 
     NumberOfSides=input("How many sides would you like have with the meal?: ") 
     Meals=Meals,MealName,NumberOfSides 
    if option=="2": 
     SideName=input("What side would you like to add?: ") 
     SideDishes+=SideName 
    print("1=Meal, 2=Side, 3=Finished") 
    try_again=input("What else would you like to do?: ") 
    if try_again=="1": 
     option="1" 
    elif try_again=="2": 
     option="2" 
    else: 
     break 
print("Printing out meals for you") 
counter=1 
for counter in DaysOfTheWeek: 
    random_meal=random.randint(0,len(Meals)-1) 
    random_side=random.randint(0,len(SideDishes)-1) 
    print(DaysOfTheWeek[0+counter],": ",Meals[random_meal]," and a number of ",NumberOfSides[random_meal],".") 
    print("And the the side that will be served with will be: ",SideDishes[random_side]) 
    counter+=1 
print("Thanks for using the Meal-O-Matic") 

Благодарим за помощь. Tinymantwo

+0

Вы прочитали * сообщение об ошибке? Это говорит вам, что 'counter' является' str', и поэтому '0 + counter' не имеет смысла. Вы перебираете список строк, например, 'counter ==" Mon "'. – jonrsharpe

ответ

0

Вы неправильно поняли, как работают петли в Python.

Когда вы делаете for counter in DaysOfTheWeek, counter принимает в свою очередь каждое значение от DaysOfTheWeek. Это означает, что в первый раз это будет «Mon», затем «Tue» и т. Д. Поэтому, когда вы пытаетесь добавить его в 0, он не справляется с этой ошибкой.

Но вы не должны добавлять его ни к чему: это пункт. Вместо этого:

for day in DaysOfTheWeek: 
    ... 
    print(day, ": ", Meals[random_meal]," and a number of ",NumberOfSides[random_meal],".") 

и вам не нужно counter=0 или counter+=1.

0

Вы используете Python как Javascript программист :)

Пожалуйста, почитайте о том, как работает этот материал для Python, несколько подсказок:

  • for counter in ["asdf", "bla"] перебирает записей из списка, не индексы списка, так counter будет "asdf" и "bla"
  • input возвращает строку, так while option != 3 не поможет вам много
Смежные вопросы