Я пытаюсь довести свою программу до определенного количества раз, эквивалентного сумме, которую я ввожу, но я не могу понять, что не так

#python #loops

Вопрос:

Привет, первый раз публикую здесь. Таким образом, в принципе, если я наберу «1», он будет повторяться 5 раз, в то время как если я наберу 5, он сделает все наоборот. Как мне ввести «1» и заставить его зациклиться один раз, «2», чтобы он зациклился дважды и т. Д.? Кроме того, мое задание требует, чтобы я сделал это так, чтобы оно неоднократно задавало мне эти вопросы, если я не дам ответа от 1 до 5, но я знаю, как это сделать.

 drink = int(input("How many drinks will you consume? "))
while(drink == 1):
    print("You've consumed "   str(drink)   " drinks")
while(drink == 2):
    print("You've consumed "   str(drink)   " drinks")
    drink = drink   1
while(drink == 3):
    print("You've consumed "   str(drink)   " drinks")
    drink = drink   1
while(drink == 4):
    print("You've consumed "   str(drink)   " drinks")
    drink = drink   1
while(drink == 5):
    print("You've consumed "   str(drink)   " drinks")
    drink = drink   1    
print("You're done drinking.")
 

поскольку это не сработало, я также попробовал цикл for, который также не работал должным образом:

 drink = int(input("How many drinks will you consume? "))
for drink in range(1, 6, 1):
    print("You've consumed "   str(drink)   " drinks")
print("You're done drinking.")
 

В этом случае любое число, которое я набираю от 1 до 5, всегда будет выдавать 5 циклов. Каков ответ на эту проблему? Я работал над этим 2 часа и чувствую себя глупо.

Комментарии:

1. 👉 pythontutor.com/visualize.html

2. В вашем первом коде, если вы наберете 1 , у вас будет бесконечный цикл… Если вы понимаете почему, вы тоже на пути к пониманию остального…

Ответ №1:

Вы правы в том, что вам следует использовать цикл for, однако джутс сделал это немного неправильно. Попробуй это:

 drink = int(input("How many drinks will you consume? "))
for i in range(drink):
    print(f"You have had {i   1} drinks")
print("You are done drinking")
 

Комментарии:

1. Вы, вероятно, хотите начать range с 1

2. Спасибо вам обоим за исправления

3. f'... drink{"" if i == 1 else "s"}' … 😉

4. Вы должны поставить это так, как если бы i == 0, так как это первый элемент (т. Е. Первый напиток)

5. Вот почему вам следует начать с range at 1 , чтобы иметь больше семантического кода и избегать таких ошибок… 😉