Компьютер генерирует число, число догадок пользователя, не имеет значения, что это всегда неверно - PullRequest
2 голосов
/ 21 июня 2019

Я сделал простую программу, где пользователь угадывает случайно сгенерированный номер компьютера.Чтобы проверить, работает ли программа, я изменил сгенерированное значение компьютера на 5. Однако, когда я «угадаю» 5, я почему-то все еще ошибаюсь.

Может кто-нибудь сказать мне, что не так с этим кодом?

Я пытался возиться с возвращаемыми переменными, но я не понимаю, как работает команда возврата, поэтому я не увенчался успехом.


def computer_roll():
  global comproll
  comproll = random.randint(1,3)
  # comproll = 5
  user_guess()

def user_guess():
  global user
  user = input("Input a number: ")
  guess_evaluation()

def guess_evaluation():

  if user != comproll:
    print("You are incorrect.")
    again = input("Would you like to try again? ")
    if again in("y"):
      user_guess()

    elif again in ("n"):
      print("Thanks for playing.")

  elif user == comproll:
    print("You are correct.")
    again = input("Would you like to play again? ")
    if again in("y"):
      user_guess()

    elif again in ("n"):
      print("Thanks for playing.")

computer_roll() # Start```



# Expected Results: 

# When I enter 5 it should say "You are correct." and then "Would you like to play again?"

# Actual Results:

# When I enter 5 it says "You are incorrect" and then "Would you like to play again?"

Ответы [ 3 ]

1 голос
/ 21 июня 2019

Вы сравниваете целое число со строкой, поэтому оно никогда не будет правильным.
Попробуй, user = int(input("Input a number: "))

В sidenote, вы действительно не должны использовать глобальные переменные. Научитесь использовать возвраты, особенно если вы используете функции, иначе нет смысла использовать функции вообще.

Ниже приведен пример кода:

import numpy as np
import random

def computer_roll():
  return random.randint(4,6)

def user_guess():
  return int(input("Input a number: "))

def guess_evaluation():

  if user_guess() != computer_roll():
    print("You are incorrect.")
  else:
    print("You are correct.")

  again = input("Would you like to play again? ")

  if again in ("n"):
    print("Thanks for playing.")
  else:
    guess_evaluation()

guess_evaluation()
0 голосов
/ 21 июня 2019

пользователь вводит строку, когда comproll является int.Вы можете изменить это с помощью:

user = int(input("Input a number: "))

0 голосов
/ 21 июня 2019

Для меня это работает, за исключением синтаксической ошибки в поле ввода:

def guess_evaluation():

  if user != comproll:
    print("You are incorrect.")
    again = input("Would you like to try again? ")
    if again in("y"): # syntax error here, enter space between "in" and "('y')".
      user_guess()

    elif again in ("n"):
      print("Thanks for playing.")
...