Первый пост здесь. Я хотел донести это до вас, ребята, потому что я ищу некоторые глубокие отзывы и мои подходы, возвращающиеся в этот мир. Мой основной опыт работы с Javascript на фронтовой работе, и я не написал ни одного письма python до вчерашнего дня, так что извините за беспорядок.
Я пытаюсь увидеть, что вы может показаться, как некоторые из готовых предложений для сокращения или очистки этого кода. Может быть, какие-то вопиющие предметы «пожалуйста, никогда больше не делайте этого», или какое-либо понимание, которое у вас могло бы быть.
Это консольная игра в угадывание чисел, в настоящее время 1 - 10. Она работает с некоторыми ошибками. Одна из основных причин, которые меня сбивают с толку (и я уверен, что это просто) - если вы угадываете правильный ответ с последней попытки (в данном случае 3-й), он не запускает код «Поздравляю». Он запускает раздел «Вы потерпели неудачу».
Просто ищите какие-либо предложения или предложения любого рода, чтобы помочь оценить МОЕ мышление и подход к решению проблем на этом языке. Кроме того, если в Интернете есть лучшее место для такого рода занудства, дайте мне знать. Спасибо!
from random import randint
def guessing_game():
# Set the count and limits for the loop and game length.
guess_count = 0
guess_limit = 2
# Ask the user to take a guess.
guess = int(input("I'm thinking of a number between 1 and 10... "))
# Randomize the answer. Change the range according to preference.
the_answer = randint(1, 10)
# Start the loop
while guess_count < guess_limit:
if guess == the_answer: # The user wins and is prompted to play again. Init function would probably be useful.
print(f"Congrats, you won! The answer is {the_answer}!")
restart = input("Play again? ")
if restart.upper() == "Y":
guessing_game()
else: # The user declines to play and we break out of the loop.
print("Okay, thanks for playing! ")
break
break
elif guess != the_answer: # The user guessed the wrong answer. Ask again and add to the count.
print("Oops, try again.")
guess = int(input("I'm thinking of a number between 1 and 10... "))
guess_count += 1
if guess_count == guess_limit: # Shucks, the user failed. Inform them of their failure and offer redemption.
print('Sorry, you failed.')
restart = input("Play again? ")
if restart.upper() == "Y":
guess_count = 0
guessing_game()
else: # The user opted out of continuing this exciting adventure.
print("Okay, thanks for playing! ")
break
guessing_game()
1/23/2020 - 12:45 EST. Обратите внимание на обновленный код ниже для @ An0n1m1ty. С этим обновленным кодом я могу сделать до 4 неправильных догадок, прежде чем он закончится. Во втором неверном предположении не выводится сообщение «Упс», а в четвертом неправильном предположении программа просто заканчивается. Нет сообщения «Вы проиграли» или подсказка для повторного воспроизведения.
Однако выигрыш, похоже, работает правильно. Я go над ним и попытаюсь определить логи c за текущим поведением. Вы можете увидеть изменения, которые я сделал с комментариями, начинающимися с 'CHANGE'.
Кроме того, если есть лучшее место для отображения этих обновлений кода, пожалуйста, дайте мне знать. Я не поместил это в ответ, потому что это не ответ. Извините, я новичок.
from random import randint
def guessing_game():
# Set the count and limits for the loop and game length.
guess_count = 0
guess_limit = 2
# CHANGE Moved guess input from here to beginning of loop
# Randomize the answer. Change the range according to preference.
the_answer = randint(1, 10)
# Start the loop
while guess_count < guess_limit:
# CHANGE Ask the user to take a guess.
guess = int(input("I'm thinking of a number between 1 and 10... "))
if guess == the_answer: # The user wins and is prompted to play again. Init function would probably be useful.
print(f"Congrats, you won! The answer is {the_answer}!")
restart = input("Play again? ")
if restart.upper() == "Y":
guessing_game()
else: # The user declines to play and we break out of the loop.
print("Okay, thanks for playing! ")
break
break
elif guess != the_answer and guess_count != guess_limit: # CHANGE The user guessed the wrong answer.
print("Oops, try again.")
guess = int(input("I'm thinking of a number between 1 and 10... "))
guess_count += 1
elif guess_count == guess_limit: # CHANGE Shucks, the user failed. Inform them of their failure and offer redemption.
print('Sorry, you failed.')
restart = input("Play again? ")
if restart.upper() == "Y":
guess_count = 0
guessing_game()
else: # The user opted out of continuing this exciting adventure.
print("Okay, thanks for playing! ")
break
guessing_game()
1/23/2020 - 7:45 вечера EST Итак, с этими изменениями мы намного ближе. Основная проблема заключается в том, что если вы получите три неправильных ответа, программа просто завершится. Нет сообщения об ошибке или подсказки для воспроизведения снова. Я полагаю, что это потому, что условие l oop выполняется после трех попыток, поэтому секция l oop и секция
elif guess_count == guess_limit:
никогда не имеют шансов на выполнение. Я решил эту проблему, изменив
while guess_count < guess_limit:
на
while guess_count <= guess_limit:
, что позволяет запустить вышеупомянутый раздел и снова начать воспроизведение. Единственное, что с этим решением, это то, что l oop работает еще один раз за пределами догадки_имита из-за <= в начале l oop. Таким образом, вам нужно уменьшить на 1, что вы хотите на самом деле. проиграв или выиграв в следующем раунде и выбрав НЕ продолжать, он скажет: «Хорошо, спасибо за игру», и игра сразу начинается, а не заканчивается. Вот где я сейчас нахожусь. </p>
Большое спасибо за вашу помощь! Звучит странно, я уверен, но это заставляет меня снова смотреть на нее sh.