2017-09-14 42 views
-3

目前球员只有一回合,而且从未显示比赛的胜者。这个主要功能需要做些什么变化才能让每个玩家正好三回合?需要对主要功能进行哪些更改才能让每个玩家恰好有三个回合?

def main(): 
    display_welcome() #1 
    number_of_turns = 3 
    score_player1 = 0 
    score_player2 = 0 
    name_player1 = "Olivia" 
    name_player2 = "Ned" 
    turn_num = 1 
    first_player_num = random.randrange(1, number_of_turns + 1) 

    if first_player_num == 2: 
     temp = name_player1 
     name_player1 = name_player2 
     name_player2 = temp 

    score1 = have_one_turn(turn_num, name_player1) 
    score2 = have_one_turn(turn_num, name_player2) 

    score_player1 = score_player1 + score1 
    score_player2 = score_player2 + score2 

    if turn_num < number_of_turns: 
     display_turn_results(name_player1, score_player1, name_player2, score_player2, False)  #10 
    else: 
     display_turn_results(name_player1, score_player1, name_player2, score_player2, True) 
+0

'对于i:'? – Julien

+0

不能使用for..in循环 – BEMDAS

+0

欢迎使用堆栈溢出。这不是让某人为你做作业的地方。你应该首先表现出努力。请描述你到目前为止所尝试的内容,以及你对这个问题的理解。例如,你能告诉我们给定的代码当前的行为不正确吗? –

回答

-1

尝试下面的代码::

def main(): 
    display_welcome() #1 
    number_of_turns = 3 
    score_player1 = score_player2 = 0 
    name_player1 = "Olivia" 
    name_player2 = "Ned" 
    first_player_num = random.randrange(1, 2) 
    if first_player_num == 2: 
     temp = name_player1 
     name_player1 = name_player2 
     name_player2 = temp 
    for turn_num in xrange(3): 
     score1 = have_one_turn(turn_num, name_player1) 
     score2 = have_one_turn(turn_num, name_player2) 
     score_player1 = score_player1 + score1 
     score_player2 = score_player2 + score2 

     if turn_num+1 < number_of_turns: 
      display_turn_results(name_player1, score_player1, 
           name_player2, score_player2, False)  #10 
     else: 
      display_turn_results(name_player1, score_player1, 
           name_player2, score_player2, True) 

如果主要功能的部分可以被分离为不同的一种,可以使用递归函数调用。

def main(): 
#display function and selecting player to play first. 
    game(score1, score2, name_player1, name_player2) 

游戏功能可以被称为递归

def game(score1, score2, name_player1, name_player2, turn_num=1): 
    #calculating score 
    number_of_turns = 3 
    turn_num = turn_num+1 
    if turn_num < number_of_turns: 
     display_turn_results(name_player1, score_player1, 
          name_player2, score_player2, False) 
     game(score_player1, score_player2, name_player1, 
      name_player2, turn_num) 
    else: 
     display_turn_results(name_player1, score_player1, 
          name_player2, score_player2, True) 
在范围(3)
+0

这个工作,但有没有另一种方式做到这一点,而不使用for ... in循环,我只想改变一些东西,但不一定添加任何东西,任何想法? – BEMDAS

+0

似乎并没有工作,但这是具体问题的要求:做一个\t到主()函数 目前只有\t每转一圈,从来没有显示游戏的胜利者。 \t 变化\t该程序的main()函数,使得每个\t播放器具有恰好三个\t匝(和\t 之交号1,2和3被正确地显示在输出)。 所以我不认为我们可以将主要功能分开 – BEMDAS

相关问题