Как обновить переменную в цикле, python

#python #variables

Вопрос:

Как я могу обновить переменную, чтобы программа не печатала каждый раз один и тот же номер. Например, если я напишу smart, то программа напечатает 37 оставшихся букв, но если я напишу новое прилагательное, она все равно напечатает, что у меня осталось 37 букв.

 letter = 42

if letter >= 42:
    print("You have", letter, "letters left")

adj = input("Describe yourself with an adjective")
adjletter = len(adj)
letterleft = letter-adjletter

while letterleft > 0:
    print("You have", letter-adjletter, "letters left")
    adj2 = input("Describe yourself with an adjective")
    if letter < 0:
        break
print("Thanks for now!")

 

Ответ №1:

Обновили некоторую часть вашего кода, пожалуйста, обратитесь к приведенному ниже коду, который дает желаемые результаты:

 letter = 42

if letter >= 42:
    print("You have", letter, "letters left")

letterleft = letter

while letterleft > 0:
    adj = input("Describe yourself with an adjective: ")
    letterleft = letterleft-len(adj)
    print("You have", letterleft, "letters left")
    
print("Thanks for now!")
 

Выход:

 You have 42 letters left
Describe yourself with an adjective: smart
You have 37 letters left
Describe yourself with an adjective: smart
You have 32 letters left
Describe yourself with an adjective: smart
You have 27 letters left
Describe yourself with an adjective: 
 

Вы повторяли letterleft , однако никогда не обновляли его и, следовательно, получите бесконечный цикл. Также adjletter всегда будет 5, если ввод smart , и, следовательно, ваше print заявление всегда печатает 37 (42-5) для оставшихся букв. Вместо print этого заявление должно быть напечатано letterleft

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

1. Спасибо за ваше предложение, это было очень полезно

2. Круто, не могли бы вы, пожалуйста, принять ответ, если это поможет решить вашу проблему?

Ответ №2:

У вас уже есть это в вашем коде, вне цикла. Обратите внимание, что в вашем фрагменте есть некоторый избыточный код.

 letter = 42

while letter > 0:
    print(f"You have {letter} letters left")
    adj = input("Describe yourself with an adjective: ")
    letter -= len(adj.strip(()) # add strip to remove any whitespace
print("Thanks for now!")