Функция сбора данных, вводимых пользователем, в программе basi c подбрасывания монеты работает не так, как ожидалось - PullRequest
2 голосов
/ 14 июля 2020

Всего новичков ie здесь, имея всего несколько недель опыта. Я пытаюсь написать простую игру по угадыванию монет. Я делал это до того, как использовал только операторы if и циклы while, но я действительно хочу попробовать сделать это с помощью функций для pu sh мое понимание python.

Ниже приведена первая функция, которую я написал , который предназначен для сбора предположений пользователя. Я вставил оператор print (), чтобы убедиться, что он работает правильно.

Моя проблема в том, что когда я выполняю этот код и ввожу «h», «t» или «q» в качестве входных данных, функция будет l oop один раз, распечатайте результат только на втором oop, а затем он выйдет. Оператор "else", кажется, работает нормально.

Да хоть убей, я не могу понять, почему он вообще зацикливается и почему он выводит результат только на второй l oop . Любое руководство приветствуется.

import random
print("Welcome to the coin flipper!")
def guess_gathering():
  user_guess = input("Pick [h]eads, [t]ails, or [q]uit:")
  if user_guess == "h":
    return 1
  elif user_guess == "t":
    return 2
  elif user_guess == "q":
    return "q"
  else:
    print("Invalid selection!")
    guess_gathering()
guess_gathering()
print(guess_gathering())

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Проблема в том, что вы дважды вызываете guess_gathering в программе. Следующие изменения должны работать. Также вы можете захотеть сохранить вывод переменной в функции.

import random

print("Welcome to the coin flipper!")
def guess_gathering():
  user_guess = input("Pick [h]eads, [t]ails, or [q]uit:")
  if user_guess == "h":
    return 1
  elif user_guess == "t":
    return 2
  elif user_guess == "q":
    return "q"
  else:
    print("Invalid selection!")
    guess_gathering()

output = guess_gathering()
print(output)
1 голос
/ 14 июля 2020

Это из-за этого бита прямо здесь:

guess_gathering()
print(guess_gathering())

Это запускает функцию дважды.

Если вы хотите запустить ее только один раз, установите результат в переменную:

guess = guess_gathering()
print(guess)

Кроме того, вы должны отредактировать этот бит кода:

else:
    print("Invalid selection!")
    guess_gathering()

На это:

else:
    print("Invalid selection!")
    return guess_gathering()

Это изменение заставит вашу программу правильно возвращать значение после него само повторяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...