python计算很奇怪

时间:2016-10-17 12:29:25

标签: python python-3.x

我的代码遇到了一些问题。我需要在变化的最大值下将输入限制为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函数,但它总是添加它然后doenst更改它发送给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)

main()

2 个答案:

答案 0 :(得分:2)

您的bet = str(input())将数字转换为字符串,这就是它永远不能等于范围的原因。

即使它是一个int,数字也不能等于一个范围。

你想要的是

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

其余代码对我来说似乎充满了错误:

  • 函数需要在def

  • 时缩进
  • 在说出r = win or lose or tie win=1 lose=2之后说tie=3之类的内容基本上要求r=1 or 2 or 3始终1,因为1 True 1}}评估为orTrue一旦获得and就会停止(就像False停止,如果它获得.less

答案 1 :(得分:0)

您正在将整数转换为字符串,因此它不能等于范围,也是一个整数永远不能等于一个范围,因此您需要更改该特征的工作方式。

但不是&#39; str&#39;只需将其更改为&#39; int&#39;将其转换为整数:

bet = int(input())