-3

メインプログラム

# import statements
import random
import winning

# Set constants
win = 0
lose = 0
tie = 0

ROCK = 1
PAPER = 2
SCISSOR = 3

# Main Program for the Rock Paper Scissor game.
def main():
    # set variable for loop control
    again = 'y'

    while again == 'y':
        # Display menu
        display_menu()
        # prompt for user input
        userSelection = input('Which would you like to play with (1, 2, 3)?: ') 
        computerSelection = random.randint(1, 3) 

        # Call winner module to decide the winner!
        print(winning.winner(userSelection, computerSelection))

        # Ask to play again and make selection
        again = input('Would you like to play again (y/n)?')


def display_menu():
    print('Please make a selection: ')
    print(' 1) Play Rock')
    print(' 2) Play Paper')
    print(' 3) Play Scissor')



# Call main
main()

2 番目のファイル: win.py:

# This module will decide on who won based on input from Main

def winner(userInput, computerInput):
    if userInput == ROCK and computerInput == SCISSOR:
        print('You win!  Rock crushes Scissor!')
        win += 1
    elif userInput == SCISSOR and computerInput == PAPER:
        print('You win!  Scissor cuts Paper!')
        win += 1
    elif userInput == PAPER and computerInput == ROCK:
        print('You win!  Paper covers Rock!')
        win += 1
    elif userInput == computerInput:
        print('You tied with the computer! Please try again!')
        tie += 1
    else:
        print('You lost! Please try again!')
        lose += 1

エラー

Traceback (most recent call last):
  File "C:/Python32/RPS_Project/Main.py", line 14, in <module>
    ROCK = r
NameError: name 'r' is not defined

私は引用符とすべてを試しましたが、これを理解できません!!! これについて何か助けはありますか?よろしくお願いします!

4

1 に答える 1

2

否定的なコメントを間違った方法で受け取らないでください。宿題を宿題としてマークし、投稿したコードによって生成された実際のエラーを必ず貼り付けてください。このエラーは、投稿したコードと一致しません。

少し落ち着いた感じの方法で質問することもできます:)

問題は非常に単純です。グローバルはメインプログラムで定義しますが、では定義しないため、次winning.pyのような行

if userInput == ROCK and computerInput == SCISSOR:
    print('You win!  Rock crushes Scissor!')
    win += 1

、およびが定義されていないためROCK、NameErrors が発生します。すべてのモジュールで、使用するすべての名前を定義またはインポートする必要があります。モジュール間で名前が自動的に共有されることはありません。これには正当な理由があります。SCISSORwin

returnからの値も取得する必要があることをお伝えすることで、多少の手間を省くことができますwinning.winner。そうしないと、期待する出力が得られません。

于 2011-07-01T03:32:23.430 に答える