математическая игра не работает - PullRequest
0 голосов
/ 08 мая 2018

Я сделал функцию для программы, которую я делаю. Это математическая игра, в которой вы должны ввести ответ, и если ответ правильный, вы выигрываете.Я думал, что игра проста, но по какой-то причине, когда вы вводите ответ, программа говорит, что это неправильно, даже если ответ правильный.

def gameChoice():
    print("what game do you want to play? A math game")
    game_choice = input(">>")
    if game_choice == 'math game':
        number1 = random.randint(1, 30)
        number2 = random.randint(1, 30)
        answer = (number1 + number2)
        print("%d + %d = %d" %(number1, number2, answer))
        player_answer = input(">> ")
        if player_answer == answer:
            print("congrats, you got it right")

        else:
            print("sorry, try again")

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вместо int вы можете использовать literal_eval (из встроенного в ast). Это позволит использовать либо float, либо int, если вы хотите поддерживать float в будущем. Вам также потребуется некоторая обработка исключений в случае, если пользователь вводит строку или просто нажимает Enter.

Затем вам нужно будет зацикливаться, пока пользователь не поймет это правильно. Одним из возможных исправлений будет:

import random
from ast import literal_eval

def gameChoice():
    print("what game do you want to play? A math game")
    game_choice = input(">>")
    if game_choice == 'math game':
        number1 = random.randint(1, 30)
        number2 = random.randint(1, 30)
        answer = (number1 + number2)

        while True:
            print("%d + %d = %d" % (number1, number2, answer))
            try:
                player_answer = literal_eval(input(">> "))
            except ValueError:
                print('Please enter a number for the answer')
            except SyntaxError:
                print('Please enter an answer')
            else:
                if player_answer == answer:
                    break
                else:
                    print("sorry, try again")

        print("congrats, you got it right")
0 голосов
/ 08 мая 2018

код:

player_answer is a string 

и

answer is an int 

что делает 2 никогда не равными друг другу, попробуйте поставить

player_answer = int(input(">> "))

это автоматически делает ввод integer

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