如何在特定操作完成后终止循环?

时间:2014-12-14 09:34:57

标签: python

我是Python的初学者,我一直在尝试制作一个非常简单的游戏。它与板球比赛有一些相似之处。基本上,用户首先选择蝙蝠或碗,并且在他这样做之后,如果他选择击球,则计算机碗,反之亦然。一旦用户做出选择,他就会输入0到6之间的整数,计算机也会随机选择一个。如果计算机的号码与用户的选择相匹配,那么击球的人就会出局,然后另一个人击球,第一个人击球。得分计算得分,得分越高。我有一个接近这个,但我有一个问题。

一旦击球手出局,下一个击球手必须越过前一个击球手才能获胜。但是在我的代码中,下一个击球手甚至在超过前一个击球手的得分直到前一个击球手(现在是投球手)之后继续击球,让巢击球手出局。

一旦第二个击球手越过第一个击球手的得分,我想要一种方法来结束比赛。

到目前为止,这是我的代码:

import random

def comp_bat():
    print('You are bowling')
    s=0
    comp_choice=0
    user_choice=1
    while comp_choice!= user_choice:
        user_choice=int(input('bowl: '))
        comp_choice=random.randint(0,6)
        if comp_choice==0 and user_choice!=comp_choice:
            s+=user_choice
            print('bat: ', comp_choice)
            print('')
        elif user_choice>6:
            print('Bowl numbers between 0 and 6')
        elif user_choice<0:
            print('Bowl numbers between 0 and 6')
        elif user_choice!=comp_choice:
            s+=comp_choice
            print('bat: ', comp_choice)
            print('')
        elif user_choice==comp_choice:
            print('bat: ', comp_choice)
            print('')
    print("The computer's score is:- ", s)
    return s

def user_bat():
    print('You are batting')
    s=0
    comp_choice=0
    user_choice=1
    while comp_choice!= user_choice:
        comp_choice=random.randint(0,6)
        user_choice=int(input('bat: '))
        if user_choice==0 and user_choice!=comp_choice:
            s+=comp_choice
            print('bowl: ', comp_choice)
            print('')
        elif user_choice>6:
            print('Bat numbers between 0 and 6')
        elif user_choice<0:
            print('Bat numbers between 0 and 6')
        elif user_choice!=comp_choice:
            s+=user_choice
            print('bowl: ', comp_choice)
            print('')
        elif user_choice==comp_choice:
            print('bowl: ', comp_choice)
            print('')
    print("Your score is:- ", s)
    return s

def choose_bat_bowl():
    bat=1
    bowl=2
    choice=int(input('press 1 to bat or 2 to bowl: '))
    print('')
    if choice==1:
        return bat
    elif choice==2:
        return bowl

def main():
    while True:
        if choose_bat_bowl()==1:
            x=user_bat()
            y=comp_bat()
            if x>y:
                print('You win!')
            elif x<y:
                print('You lose')
        elif choose_bat_bowl()==2:
            x=comp_bat()
            y=user_bat()
            if x>y:
                print('You lose!')
            elif x<y:
                print('You win!')


if __name__=="__main__":
    main()

我知道这无法编码或非常基本...但请帮我找到终止循环的解决方案。提前谢谢!

1 个答案:

答案 0 :(得分:0)

使用之前的分数检查当前分数。希望这会有所帮助。

def comp_bat(S):

    # your code

         elif user_choice!=comp_choice:
            s+=comp_choice
            print('bat: ', comp_choice)
            print('')
         elif user_choice==comp_choice:
            print('*bat: ', comp_choice)
            print('')

         if(s>S and S!=-1): # This is modified
            break

   # rest of your code

def main():
    while True:
        if choose_bat_bowl()==1:
            x=user_bat(-1)  # modified
            y=comp_bat(x)   # modified
            if x>y:
                print('You win!')
            elif x<y:
                print('You lose')
        elif choose_bat_bowl()==2:
            x=comp_bat(-1)   # modified
            y=user_bat(x)    # modified
            if x>y:
                print('You lose!')
            elif x<y:
                print('You win!')