Вы повторяете ограниченное количество попыток. Я чувствую, что более естественно преобразовать это в стиль поиска for
:
def superName(n, r): # Note, we ask for all attempts, no initial guess
for guessCount in (1,2):
r,g = getUserGuess()
print(r,g)
if g == r:
if guessCount == 1:
#hooray
print(f'Congrats! You can use your chosen name. Your superhero name is {n}')
return
elif guessCount == 2:
#meh good effort
print('Your superhero name is Captain Marvel.')
return
# Note: that could've been an else
# We have covered every case of guessCount
else: # Not necessary since we return instead of break
print('All your guesses were incorrect. Sorry you do not have super powers')
print(f'The number you were looking for was {r}')
Мы можем пойти дальше и перебрать сообщения вместо:
def superName(n, r): # Note, we ask for all attempts, no initial guess
for successmessage in (
f'Congrats! You can use your chosen name. Your superhero name is {n}',
'Your superhero name is Captain Marvel.' ):
r,g = getUserGuess()
print(r,g)
if g == r:
print(successmessage)
break # We've found the appropriate message
else: # Not necessary if we return instead of break
print('All your guesses were incorrect. Sorry you do not have super powers')
print(f'The number you were looking for was {r}')
Я заметил, что getUserGuess
звонки на самом деле не изменились g
. Возможно, вы захотите пересмотреть это (эта ревизия тоже меняет r
, что, вероятно, также не то, что вы хотите). Это объясняет, почему вы никогда не видите второе сообщение об успехе; Вы ввели второе предположение, но программа снова проверила первое предположение.