2
#Lab 7-3 The Dice Game
#add libraries needed
import random

#the main function
def main():
    print

    #initiliaze variables
    endProgram = 'no'
    playerOne = 'NO NAME'
    playerTwo = 'NO NAME'

    #call to inputNames
    playerOne, playerTwo = inputNames(playerOne, playerTwo)

    #while loop to run program again
    while endProgram == 'no':
        winnersName = 'NO NAME'
        p1number = 0
        p2number = 0

        #initiliaze variables

        #call to rollDice
        winnerName = rollDice(playerOne, playerTwo, winnerName)

        #call to displayInfo
        winnerName = displayInfo (winnerName)

        endProgram = input('Do you want to end program?(Enter yes or no): ')

#this function gets players names
def inputNames():
    inputNames = string('Enter your names: ')
    return playerOne, playerTwo    

#this function will get the random values
def rollDice():
    p1number = random.randint(1,6)
    p2number = random.randint(1,6)
    if p1number >= p2number:
        winnerName = playerOne
    if p1number == p2numer:
        winnerName = 'TIE'
    elif winnerName == playerTwo:
        return winnerName

#this function displays the winner
def displayInfo():
    print ('The winner is: ', winnerName)


#calls main
main()

ここで初心者プログラマーと課題を完了しようとしています。19行目はエラーを返します:TypeError:inputNames()は引数を取りません(2が指定されています)。19行目:playerOne、playerTwo = inputNames(playerOne、playerTwo)。この行は私の教授によって提供されたものであり、それを機能させる方法がわかりません。どんな助けでも大歓迎です!

4

1 に答える 1

3

関数 inputNames は引数を取らない関数として定義されていますが、メソッド リストで 2 つの変数を渡しています。

定義方法は次のとおりです。

def inputNames():
    inputNames = string('Enter your names: ')
    return playerOne, playerTwo  

これがあなたがそれをどのように呼んだかです:

playerOne, playerTwo = inputNames(playerOne, playerTwo)

本当に必要なのは、プレーヤー 1 とプレーヤー 2 の名前を返すこの関数です。したがって、上記の行は実際には次のようになります。

playerOne, playerTwo = inputNames()

関数はローカルで 2 つの名前を収集し、それらを返す必要があります。おそらく次のようになります。

def inputNames():
    p1 = str(raw_input("Enter the name for player one: "))
    p2 = str(raw_input("Enter the name for player two: "))
    return p1, p2
于 2012-04-24T19:40:50.253 に答える