程序没有运行错误不支持的操作数类型+:'function'和'int'

问题描述 投票:-1回答:1

我为我的Python Intro类创建了一个NIM程序,并且在尝试完成程序时遇到了问题。

我很茫然...

def main():

import random
#User random to generate integer between 10 and 100 for random pile size of marbles.
ballCount = random.randint(10, 100)
print("The size of the pile is: ",ballCount)
#Generate a random integer between 0 and 1, this will tell if the human or computer takes first turn.
def playerTurn(ballCount):
    playerTurn = random.randint(0, 1)
if playerTurn == 0:
    print("Its the computers turn...")
else:
    print("Its your turn...")
#Generate a random integer between 0 and 1, to determine if the computer is smart or dumb.
computerMode = random.randint(0, 1)
def computerDumbMode(ballCount):
    computerMode = random.randint(0, 1)
    if computerMode == 0:
        print("This computer is very dumb, no need to stress")
def computerSmartMode(ballCount):
    computerMode = random.randint(0, 1)
    if computerMode == 1:
        print("This computer is very intelligent, beware")
#In dumb mode the computer generates random values (between 1 and n/2),
#you will use a random integer n for ballCount, when it is the computers turn.
while ballCount != 1: #This will compile untill you are left with only one marble.
    if playerTurn == 0:   #This will initiate computers turn.
        if computerMode == 1:   #This will initiate Smart Mode.
           temp = random.randint(1, ballCount/2)   #Pick a random number between 1, and n/2. 
        else:   # Pick your own number of Marbles for your ballCount (n).
            if ballCount - 3 > 0 and ballCount - 3 < ballCount/2:
                temp = ballCount - 3
            elif ballCount - 7 > 0 and ballCount - 7 < ballCount/2:
                temp = ballCount - 7
            elif ballCount - 15 > 0 and ballCount - 15 < ballCount/2:
                temp = ballCount - 15
            elif ballCount - 31 > 0 and ballCount - 31 < ballCount / 2:
                temp = ballCount - 31
            else:
                temp = ballCount - 63
        print("The computer has chosen: %d marbles." % temp) #Print the number of marbles the computer has chosen.
        ballCount -= temp #Then subtract the number of marbles chosen by the computer.
    else:
        ballCountToPick = int(input("It is now your turn, Please pick the number of marbles in the range 1 - %d: " % int(ballCount/2)))   #Reads the number of marbles to be picked by user.
        while ballCountToPick < 1 or ballCountToPick > ballCount/2:   #If computer reads this invalidly, it will try repeatedly.
            ballCountToPick = int(input("The number you chose, is incorrect. Try again, and pick marbles in the range 1 - %d: " % int(ballCount/2)))
        ballCount -= ballCountToPick #Subtract the marbles that were chosen by user.
    playerTurn = (playerTurn + 1) % 2 #Changes the turn of player.
    print("Now the pile is of size %d." % ballCount)
if playerTurn == 0:   #Show the outcome.
    print("You came, you saw, and you won... CONGRATULATIONS!!!")
else:
    print("Once again... You lost and the computer wins!!!")

主要()

如果计算机或个人获胜,试图让程序/游戏运行并打印最终结果!

python-3.7
1个回答
0
投票

您的“playerTurn”变量是以下行中的函数:

playerTurn = (playerTurn + 1) % 2 #Changes the turn of player.

有一个单独的“playerTurn”功能和“player_turn”变量将解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.