python的计算很奇怪

2024-10-03 15:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码有问题。我需要在一个不断变化的最大值下将一个输入限制为5的倍数。你知道吗

用我现在拥有的,它应该有用,但它不是。我错过了什么?你知道吗

while True:
        print("Place your bet. Must be a multiple of 5")
        posBets = range(5, (balance + 1), 5)
        bet = str(input())
        if bet == posBets:
            print("You have bet $" + str(bet))
            loop = 0
        elif bet != posBets:
                print("Please bet an amount that is a multiple of 5, or an amount that is within your balance")
                print("Press enter to continue")
                input()
                loop = 1
        if not(loop == 1):break #Exit loop

循环也有问题。当我试图得到我的新值时,它需要从原始值中减去并将其发送回main函数,但是它总是将其相加,然后不更改它发送给main函数的值

win = 1
lose = 2
tie = 3
r = win or lose or tie
print("Battle shall now commence")
print("Choose an attack")
print("The attacks you can use are as follows")
print("(1)Fury Punch")
print("(2)Punishment kick")
print("(3)Sword of justice")
print("(4)Shuriken of Vengence")
print("(5)Numchucks of Anger")
print("(6)Knife of Freedom")
attack = int(input())
while attack < 1 or attack > 6:
    print("please input either: 1, 2, 3, 4, 5 or 6")
    attack = int(input())
winLose(attack, win, lose, tie,)
if r == win:
    newBalance = int(balance) + int(bet)
elif r == lose:
    newBalance = int(balance) - int(bet)
else:
    if r == tie:
        balance = newBalance 
print("Your Balance is $" + str(newBalance))
return(bet, newBalance)

这是完整的代码 谢谢你的帮助

def attack1(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("it is a tie there is no winner")
    r = tie
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have lost")
    r = lose
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have lost")
    r = lose
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have won. Good job")
    r = win
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have won. Good job")
    r = win
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have lost")
    r = lose
return(r)

def attack2(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have won. Good job")
    r = win
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("it is a tie there is no winner")
    r = tie
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have lost")
    r = lose
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have lost")
    r = lose
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have won. Good job")
    r = win
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have lost")
    r = lose
return(r)

def attack3(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have won. Good job")
    r = win
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have won. Good job")
    r = win
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("it is a tie there is no winner")
    r = tie
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have lost")
    r = lose
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have lost")
    r = lose
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have won. Good job")
    r = win
return(r)

def attack4(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have lost")
    r = lose
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have won. Good job")
    r = win
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have won. Good job")
    r = win
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("it is a tie there is no winner")
    r = tie
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have lost")
    r = lose
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have won. Good job")
    r = win
return(r)

def attack5(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have lost")
    r = lose
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have lost")
    r = lose
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have won. Good job")
    r = win
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have won. Good job")
    r = win
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("it is a tie there is no winner")
    r = tie
else:
    print("Your opponent has choosen Knife of Freedom")
    print("You have lost")
    r = lose
return(r)

def attack6(pcMove, win, tie, lose):
if pcMove == 1:
    print("Your opponent has choosen Fury Punch")
    print("You have won. Good job")
    r = win
elif pcMove == 2:
    print("Your opponent has choosen Punishment Kick")
    print("You have won. Good job")
    r = win
elif pcMove == 3:
    print("Your opponent has choosen Sword of Justice")
    print("You have lost")
    r = lose
elif pcMove == 4:
    print("Your opponent has choosen Shuriken of Vengeance")
    print("You have lost")
    r = lose
elif pcMove == 5:
    print("Your opponent has choosen Numchucks of Anger")
    print("You have won. Good job")
    r = win
else:
    print("Your opponent has choosen Knife of Freedom")
    print("it is a tie there is no winner")
    r = tie
return(r)

def winLose(attack, win, tie, lose):
import random
pcMove = random.randint(1, 6);
while pcMove == 0:
    pcMove = random.randint(1, 6);
if attack == 1:
    print("You have choosen to use Fury Punch. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack1(pcMove, win, tie, lose)
    r = win or lose or tie
elif attack == 2:
    print("You have choosen to use Punishment Kick. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack2(pcMove, win, tie, lose)
    r = win or lose or tie
elif attack == 3:
    print("You have choosen to use Sword of Justice. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack3(pcMove, win, tie, lose)
    r = win or lose or tie
elif attack == 4:
    print("You have choosen to use Shuriken of Vengence. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack4(pcMove, win, tie, lose)
    r = win or lose or tie
elif attack == 5:
    print("You have choosen to use Numchucks of Anger. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack5(pcMove, win, tie, lose)
    r = win or lose or tie
else: 
    print("You have choosen to use Knife of Freedom. Good Luck")
    print("Ready for battle. Press enter to start")
    enter = input()
    attack6(pcMove, win, tie, lose)
    r = win or lose or tie
return(r)

def instructions(name):
print("Welcome to Ultimate Ninja Combat!!!" + name)
print("You will be playing against the computer, and the winner gets bragging rights. Before each match you will have to place a bet which must be an amount which must be a multiple of 5. if you win you get that amount back from the computer. if you lose you lose the money. if your amount drops to zero you will be removed from the game")
print("you will start with 100 dollars use it wisely")
print("Each turn you will be asked to pick one of the following attacks")
print("(1)Fury Punch")
print("(2)Punishment kick")
print("(3)Sword of justice")
print("(4)Shuriken of Vengence")
print("(5)Numchucks of Anger")
print("(6)Knife of Freedom")
print("choose wisely")
print("  ")
print("  ")
print("  ")

def gameplay(balance):
while True:
    print("Place your bet. Must be a multiple of 5")
    posBets = range(5, (balance + 1), 5)
    bet = str(input())
    if bet == posBets:
        print("You have bet $" + str(bet))
        loop = 0
    elif bet != posBets:
            print("Please bet an amount that is a multiple of 5, or an amount that is within your balance")
            print("Press enter to continue")
            input()
            loop = 1
    if not(loop == 1):break #Exit loop
    return(bet)
win = 1
lose = 2
tie = 3
r = win or lose or tie
print("Battle shall now commence")
print("Choose an attack")
print("The attacks you can use are as follows")
print("(1)Fury Punch")
print("(2)Punishment kick")
print("(3)Sword of justice")
print("(4)Shuriken of Vengence")
print("(5)Numchucks of Anger")
print("(6)Knife of Freedom")
attack = int(input())
while attack < 1 or attack > 6:
    print("please input either: 1, 2, 3, 4, 5 or 6")
    attack = int(input())
winLose(attack, win, lose, tie,)
if r == win:
    newBalance = int(balance) + int(bet)
elif r == lose:
    newBalance = int(balance) - int(bet)
else:
    if r == tie:
        balance = newBalance 
print("Your Balance is $" + str(newBalance))
return(bet, newBalance)

def menu(name):
    balance = 100
    while True:
        newBalance = balance
        print("Your current balance is $" + str(balance))
        print("Choose an option " + name)
        print("(I)nstructions")
        print("(P)lay game")
        print("(Q)uit game")
        print("Please Input I,P or Q")
        menuChoice = input()            
        if menuChoice == "i" or menuChoice == "I":
            instructions(name)
            loop = 1
        elif menuChoice == "p" or menuChoice == "P":
            gameplay(balance)

            loop = 1
            print("Press enter to contiue")
            enter = input()
        elif menuChoice == "q" or menuChoice == "Q":
            loop = 0
        else:                   
            print("I did not understand the response. Please Input I, P or Q")
            print("Press enter to continue")
            enter = input()
            loop = 1
        if not(loop == 1): break    #Exit loop
    return(menuChoice)

def main():
print("Welcome to Ultimate Ninja Combat!!! What is your name?")
name = input()
print ("Welcome " + name)
menu(name)

主()


Tags: orofyouyourhavewinhasprint
2条回答

您的bet = str(input())将数字转换为字符串,这就是为什么它永远不能等于范围。你知道吗

即使是整数,数字也不能等于范围。你知道吗

你想要的是

    bet = int(input())
    if bet in posBets:

代码的其余部分在我看来充满了错误:

  • 函数在def定义时需要缩进

  • 在说win=1lose=2tie=3之后说r = win or lose or tie这类话基本上是在问r=1 or 2 or 3,它总是1,因为1的计算结果是Trueor一旦得到True就会停止(就像and如果得到False就会停止)

您正在将一个整数转换为一个字符串,这样它就不能等于范围,而且一个整数从一开始就不能等于范围,所以您需要更改该功能的工作方式。。你知道吗

但不使用“str”,只需将其更改为“int”即可将其转换为整数:

bet = int(input())

相关问题 更多 >