#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!")