0

シンプルなじゃんけんゲームを作成しようとしていますが、タイトルに指定されているエラーが常に発生します。これがコードです。21行目あたりでエラーが出ます。初心者なので比較的簡単に書いてください。

import random

def displayIntro():
print('Hello! This a game of Rock, Paper, Scissors, against the computer.')
print()

def humanChoice():
playerChoice = ''
while playerChoice != 'Rock' and playerChoice != 'Paper' and playerChoice != 'Scissors':
    print('Please choose: Rock, Paper or Scissors. BTW: Please type your choice with the first letter as a capital.')
    playerChoice = input()

return playerChoice

a = ["Rock", "Paper", "Scissors"]

def computerChoice():
    compChoice = random.choice(a)

def winner():
    if playerChoice == compChoice:
        print('You tied! The computer also chose ' + playerChoice)

    elif playerChoice == Rock and compChoice == Scissors:
    print('You won! You chose ' + playerChoice + ' and the computer chose ' +compChoice)

    elif playerChoice == Paper and compChoice == Rock:
    print('You won! You chose ' + playerChoice + ' and the computer chose ' +compChoice)

    elif playerChoice == Scissors and compChoice == Paper:
    print('You won! You chose ' + playerChoice + ' and the computer chose ' +compChoice)

    else:
    print('You lost! You chose ' + playerChoice + ' and the computer chose ' +compChoice)

playAgain = 'yes'

while playAgain == 'yes' or playAgain == 'Yes':

    displayIntro()

    humanChoice()

    computerChoice()

    winner()

    print('Do you want to play again? (yes or no)')
    playAgain = input()
4

3 に答える 3

3

コードにいくつかの問題があります。

  • インデント
  • 未定義playerChoice, compChoice, Rock,Paper変数Scissors
  • コードの「においがする」、PEP8スタイル ガイドを認識していない (申し訳ありませんが、少し失礼に聞こえるかもしれません。あなたが Python を学んでいることはわかりません)
  • 機能returnしていないcomputerChoice()

ただし、主な問題は未定義の変数にあります。グローバル変数を使用する代わりに、関数と関数の結果を関数に渡す必要がhumanChoice()ありcomputerChoice()ますwinner()Rockまた、、、文字列を作成する必要がPaperありScissorsます。

変更を加えたコードは次のとおりです。

import random


def displayIntro():
    print('Hello! This a game of Rock, Paper, Scissors, against the computer.')
    print()


def humanChoice():
    playerChoice = ''
    while playerChoice != 'Rock' and playerChoice != 'Paper' and playerChoice != 'Scissors':
        print('Please choose: Rock, Paper or Scissors. BTW: Please type your choice with the first letter as a capital.')
        playerChoice = input()

    return playerChoice


def computerChoice():
    return random.choice(["Rock", "Paper", "Scissors"])


def winner(playerChoice, compChoice):
    if playerChoice == compChoice:
        print('You tied! The computer also chose ' + playerChoice)

    elif playerChoice == 'Rock' and compChoice == 'Scissors':
        print('You won! You chose ' + playerChoice + ' and the computer chose ' + compChoice)

    elif playerChoice == 'Paper' and compChoice == 'Rock':
        print('You won! You chose ' + playerChoice + ' and the computer chose ' + compChoice)

    elif playerChoice == 'Scissors' and compChoice == 'Paper':
        print('You won! You chose ' + playerChoice + ' and the computer chose ' + compChoice)

    else:
        print('You lost! You chose ' + playerChoice + ' and the computer chose ' + compChoice)


playAgain = 'yes'
while playAgain in ('yes', 'Yes'):
    displayIntro()
    playerChoice = humanChoice()
    compChoice = computerChoice()
    winner(playerChoice, compChoice)

    print('Do you want to play again? (yes or no)')
    playAgain = input()
于 2013-09-20T21:30:19.783 に答える
0

関数の外で宣言できます。

playerChoice = ''
def humanChoice():

それが役に立てばいいのに

于 2013-09-20T21:35:27.510 に答える
0

playerChoice を変更する場合は、関数内でグローバルとして宣言し、最初に使用する場所の上で宣言する必要があります。

playerChoice = ''

def humanChoice():
    global playerChoice
    playerChoice = '...'

これはグローバル変数 ( http://en.wikipedia.org/wiki/Global_variable )を使用するため、優れたプログラミング戦略ではないことに注意してください。

于 2013-09-20T21:26:17.623 に答える