Могу ли я использовать len (game_content) для моего условия while?

#python

#python

Вопрос:

Я всего лишь новичок в программировании на python. У меня есть несколько проблем с моим кодом, надеюсь, вы сможете помочь.

 user_input = str()
counter = 0

game_content = [{'day': 'Day 1: Let your son use the computer for 5 hours. Yes or No?',
                'answer1': 'YES', 'answer2': 'NO',
                'text1': 'An amount has been added to your bill.', 'text2': "No amount has been added to your bill",
                 'bill': '500'},
                {'day': 'Your wife wants to use the washing machine. Should you let her? Yes or No?',
                 'answer1': 'YES', 'answer2': 'NO',
                 'text1': 'An amount has been added to your bill.', 'text2': "No amount has been added to your bill",
                 'bill': '200'}
                ]

def scenarios(count):
    bill_list = []
    user_input = input(game_content[count]['day']).strip().upper()
    if user_input == game_content[count]['answer1']:
        print(game_content[count]['text1'])
        bill_list.append('bill')
        global counter
        counter  = 1

    elif user_input == game_content[count]['answer2']:
        print (game_content[count]['text2'])
        counter  = 1



while counter <= 1:
    scenarios(counter)

bill_list = []
print("Your bill is: ", bill_list)

  

Проблема 1 — Я не могу получить длину game_content , поэтому я могу остановить цикл после того, как он повторит набор. Что я могу поставить вместо точного количества индексов списка, «while counter <= 1: «, чтобы мне не приходилось обновлять «<= 1» каждый раз, когда я добавляю что-то в game_content?

Проблема 2 — Как я могу вставить «счет» в мой bill_list, чтобы иметь возможность распечатать его в конце. Я просто использую для этого код bill_list.append(‘bill’), но я не совсем уверен, как это работает и почему это не работает.

Очень сожалею о плохом кодировании, я очень открыт для чего-то, что является лучшей версией этого.

Ответ №1:

Прежде всего, вам не нужно инициализировать переменную для присвоения значения = . Так user_input = str() бесполезно. Затем я сохраню назначение bill_list = '' , потому = что для назначения требуется переменная not null (пустая строка не равна null).

1) Для итерации в списке, который вам, вероятно, лучше использовать для цикла вместо while и function, это намного проще :

 bill_list = ''
for scenario in game_content:
    user_input = input(scenario['day']).strip().upper()
    if user_input == scenario['answer1']:
        print(scenario['text1'])
        bill_list  = 'bill'
    elif user_input == scenario['answer2']:
        print (scenario['text2'])
  

В этом цикле сценарий будет принимать значения game_content[0], затем game_content[1]

2) Вам лучше объединить строку, используя операнд ‘ ‘, вместо этого используя массив, как в последней печати :

 print("Your bill is: "   bill_list)