2013-07-11 83 views
0

我對python和編程相當新,因此我寫了一個計算兩個玩家分數的小程序。修改代碼避免中斷語句

遊戲是輸入玩家名字,每次輸入玩家名時,他/她的分數增加1分。 玩家獲勝如果: 1.他們得分10分,每個玩家之間至少有2分差異。 2.他們得分7分,對手得分爲0.

所以我寫了一個程序來實現,但問題是,因爲我是初學者,我相信這可以做得更好(使用更好編碼實踐,更Python或更有效的方式)

希望能有專家來指導我一下,我在做什麼錯: 這裏是我的代碼:

player1 = input("Enter name for Player1") 
    player2 = input("Enter name for Player2") 
    score1=0 
    score2=0 


    print ("Score for Player1 is: %d,Score for player2 is :%d" %(score1,score2)) 

    while (score1 != 10) and (score2 != 10): 
     player =input("enter name for player") 

     if player is player1: 
     score1=score1+1 
     if player is player2: 
     score2=score2+1 
     print ("Score for Player1 is: %d,Score for player2 is :%d" %(score1,score2)) 

     if(score1==7 and score2==0): 
     print("Player1 wins") 
     break 
     if(score2==7 and score1==0): 
     print("Player2 wins") 
     break 

    if (score1==10 and (score1-score2)>2): 
     print("Player1 wins") 
     break 

    if (score2==10 and (score2-score1)>2): 
     print("Player2 wins") 
     break 
+0

與程序無關的是,遊戲規則有一個漏洞,不允許玩家獲勝:如果它是'10:9',那麼遊戲將繼續運行。你可能想要檢查'score> = 10'。此外,「7:0」勝利規則似乎是任意的。出於好奇:這個評分規則是否存在於真實的遊戲中? – cfi

+0

@cfi如果你試圖玩10:9,代碼會中斷,我也不確定他們是否存在真正的遊戲。 – RamyaV

回答

0

你的這部分代碼是一個問題:

if player is player1: 
    score1=score1+1 
if player is player2: 
    score2=score2+1 

你想要的是這樣的:

if player == player1: 
    score1=score1+1 
if player == player2: 
    score2=score2+1 

在Python檢查的is比較運算,如果兩個變量指向同一個對象時,==檢查,如果兩個變量計算出相同的事情,這是更好的做法這個情況。

String comparison in Python: is vs. ==

更Python的方式來做到這一點會是這樣的:

class Game(object): 
     def __init__(self, num_players): 
       self.players = {} 
       for i in range(num_players): 
         self.players[input("Enter name for Player%s" % i)] = 0 
     def play(self): 
       while all([x < 10 for x in self.players.values()]): 
         self.players[input("enter name for player ")] +=1 
       for name, score in self.players.iteritems(): 
         print "Game over" 
         print "%s: %s" % (name, score) 

if __name__ == '__main__': 
     Game(2).play() 

我沒有在這裏實現了7-0的規則,我會留給你:)