Камень-ножницы для бумаги не печатают, кто победит, с возвратом / распечаткой (python) - PullRequest
0 голосов
/ 18 июня 2020

Я новый программист, работаю над своей первой игрой. Это простой камень, ножницы, бумага, против компьютера, но, к сожалению, он не распечатывает, кто победит. Лог c состоит в том, что компьютер выбирает случайным образом 0,1 или 2, а затем распечатывает камень, бумагу или ножницы в зависимости от массива и их выбора, так что это «случайный». Затем пользователь вводит, выберет ли он камень, бумагу или ножницы, а затем следует выбрать победителя с помощью операторов if, elif, else. Я тестировал его так:

rock = RockPaperScissors()
print(rock.game_play())

Вот фактический код игры:

import random

class RockPaperScissors():
global rps
rps = ['rock', 'paper','scissors']

def computer_choice(self): #computer randomly picks rock paper or scissors
    x = random.randint(0,2)
    w = rps[x]
    return "the computer chooses: " + w
    return 'the computer chooses {f}'.format(f= rps[x])


def player_choice(self):
    x = input("Player- would you like rock, paper, or scissors? enter rock,paper, or scissors?: ").lower()
    while x != 'rock' and x != 'paper' and x != 'scissors':
        choice = (input("Player- would you like rock, paper, or scissors? enter rock, paper, or scissors?: "))  
        x = input("please enter in rock, paper or scissors").lower()
    return x

def game_play(self):
    rock = RockPaperScissors()
    user = rock.player_choice()
    #print(rock.player_choice())
    comp= rock.computer_choice()
    return (comp)
    game = True
    r = 'rock'
    p = 'paper'
    s = 'scissors'
    while game:
        if comp == p and user == r:
            return "the player wins!"
            game = False
        elif comp == s and user == r:
            return "the computer wins!"
        elif comp == r and user == p:
            return "the computer wins"
        elif comp == s and user == p:
            return "the player wins!"
        elif comp == p and user == s:                        
            return"the computer wins!"
        elif comp == r and user == s:
            print( "the player wins" )
        elif comp == user:
            print('its a tie') 

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

Игрок, ты хочешь камень, бумагу или ножницы? ввести камень, ножницы или бумагу ?: камень, выбранный компьютером: ножницы

как видите - победитель не определяется.

Спасибо за любую помощь! приветствуются любые другие улучшения! :)

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

у вас плохое использование return, когда вы возвращаете что-то в функции, сама функция заканчивается, если вы хотите вернуть несколько значений за один прогон, вам нужно использовать yield

def example()
    # stuff that does something to calculate a value
    value = 'something' # the result of your operations
    # we want to "return" the value so can be used somewhere
    return value # any line above this is ignored while is at same indent level
    # ignored stuff

вы сделали это ошибка в computer_choice () второй возврат не может быть заархивирован

также делается в game_play (), любая строка после return (comp) не достигается

Это основы в python, может быть, сначала полезно прочитать руководство по python.

Из вашего кода прочитайте о функциях, генераторах и классах, а также прочитайте, как проверить, находится ли значение в списке / кортеже

0 голосов
/ 18 июня 2020

В игре функция удалить оператор возврата

return (comp)

Управление никогда не достигает условия

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