2013-07-11 3 views
0

Я довольно новичок в python и программировании как таковой, и я написал небольшую программу, которая вычисляет десятки двух игроков.Изменение кода, избегающего инструкций break

Игра предназначена для ввода имени игрока и при каждом вводе имени игрока его счет увеличивается на одну точку. Игрок выигрывает, если: 1.they набрал 10 очков с разницей не менее 2 очков между каждым из игроков. 2. Они набрал 7 очков, а счет противника 0.

Итак, я написал программу для реализации того же, но проблема в том, что я начинаю, я считаю, что это можно сделать лучше (используя лучше кодирования практики, более вещий или более эффективным способом)

Надеясь некоторых экспертов будет направлять меня к тому, что я делаю неправильно: Вот мой код:

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 

Оператор is сравнения в питона чеками, если две переменные ссылаются на один и тот же объект, то == проверяет, есть ли две переменные оценить то же самое, что лучше практика эта ситуация.

String comparison in Python: is vs. ==

Более вещий способ сделать это было бы так:

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 правила здесь, я оставлю это для вас :)