2017-03-01 2 views
0

Also ich versuche, ein Spiel von Rock, Papier, Schere, die mehrere Runden hat und zählt die Anzahl der Gewinne/Verluste/Bindungen in ihm und ich denke, ich habe am meisten, wenn es unten ist, aber ich habe Probleme mit der Zählung der Anzahl der Verluste/Gewinne/Bindungen innerhalb der Schleife.Wie summiere ich Gewinne/Bindungen/Verluste mit Renditen (in einem Spiel Rock/Papier/Schere)

Ich denke, was ich tun soll, ist eine "Return" -Anweisung hier, aber ich bin mir nicht sicher, wie ich es angehen und ich habe versucht, andere Beispiele zu betrachten, und ich bin mir immer noch nicht sicher, wie es funktioniert Die Renditen, die ich jetzt in meinem Code habe, zeigen nur, wo ich denke, dass es sein sollte.

Ich habe das Gefühl, dass ich in diesen Bereichen auch +1 haben sollte, aber ich bin mir nicht sicher, wie ich das angehen soll.

schneide ich my_choice aus == Schere und my_choice == Papier, weil ich glaube, die ganze gewinnt/Riegel-/Verluste Geschäft funktioniert auf die gleiche Art und Weise, wie es für my_choice tut == Rock

import random 

rounds = eval(input("Enter the number of rounds: ")) 

comp_pack = ["rock", "paper", "scissors"] 

my_pack = ["rock", "paper", "scissors"] 


for i in range (rounds): 


    count_win = "" 
    count_losses = "" 
    count_ties = "" 

    my_choice = input("Enter rock, paper, or sissors: ") 

    comp_choice = comp_pack[random.randint(0, len(comp_pack)-1)] 

    if my_choice == comp_choice: 
     print("tie") 
     return count_ties 

    elif my_choice == "rock": 

     if comp_choice == "paper": 
      print("paper covers rock loser") 
      return count_losses 

     elif comp_choice == "scissors": 
      print("rock smashes scissors winner") 
      return count_wins 

print(count_losses) 
print(count_wins) 
print(count_ties) 
+1

Sie kann nicht, wenn Sie zurückkehren Arent in einer Funktion. Behalte nur die Gewinne, Verluste und Bindungen im Auge. Erhöhen Sie die entsprechende Variable nach jeder Runde. –

+0

Für Ihre Computerwahl können Sie einfach 'random.choice (comp_pack)' verwenden. Außerdem müssen Sie die Elementnamen für Benutzer und Computer nicht replizieren. –

Antwort

2

Ziehen Sie Ihre Zählervariablen aus der for-Schleife und Schritt entsprechend += 1 je nach Gewinn/Verlust/tie mit:

import random 

rounds = eval(input("Enter the number of rounds: ")) 
comp_pack = ["rock", "paper", "scissors"] 
my_pack = ["rock", "paper", "scissors"] 

count_wins = 0 
count_losses = 0 
count_ties = 0 

for i in range (rounds): 

    my_choice = input("Enter rock, paper, or sissors: ") 

    comp_choice = comp_pack[random.randint(0, len(comp_pack)-1)] 

    if my_choice == comp_choice: 
     print("tie") 
     count_ties += 1 

    elif my_choice == "rock": 

     if comp_choice == "paper": 
      print("paper covers rock loser") 
      count_losses += 1 

     elif comp_choice == "scissors": 
      print("rock smashes scissors winner") 
      count_wins +=1 

print(count_losses) 
print(count_wins) 
print(count_ties) 
0

return Anweisung ist nur für die Funktion. Also, wenn Sie "Return" -Anweisung verwenden möchten, müssen Sie Funktion machen. Ich hoffe mein Code könnte Ihnen helfen.

import random 

def game(round): 
    count_wins = 0 
    count_losses = 0 
    count_ties = 0 

    for i in range(round): 
     # I just defined r, c, p in number. 
     pack = {"scissors": 1, "rock": 2, "paper": 3} 
     my_choice = pack[input("Enter rock, paper, or scissors: ")] 
     comp_choice = random.randint(1, len(pack)) 
     if my_choice == comp_choice: 
      print("tie") 
      count_ties += 1 
     elif comp_choice - my_choice == 1 or comp_choice - my_choice == -1: 
      if comp_choice < my_choice: 
       # I defined r, c, p in number because of this compare algorithm. I will explain about this at bottom. And I omitted some messages like "paper covers rock", if you want, you can define message dictionary and print here. 
       print("win") 
       count_wins += 1 
      else: 
       print("lose") 
       count_losses += 1 
     else: 
      if comp_choice < my_choice: 
       print("lose") 
       count_losses += 1 
      else: 
       print("win") 
       count_wins += 1 
    return count_wins, count_losses, count_ties 

if __name__ == "__main__": 
    # You can use function game like this. 
    game_result = game(3) 
    print("Win: %d" % game_result[0]) 
    print("Lose: %d" % game_result[1]) 
    print("Tie: %d" % game_result[2]) 

Dies ist eine detaillierte Erklärung über den Algorithmus, den ich in meinem Code verwendet habe.

Scissor: 1, Rock: 2, Papier: 3

Wenn Zahl gleich ist => TIE

Wenn | comp - my | ist 1: Große Anzahl gewinnt => Rock (2) gewinnt Schere (1), Papier (3) gewinnt Rock (2)

Wenn | comp - my | 2: Big Zahl verliert => Schere (1) gewinnt Papier (3)

0

Der Abstand von Kopieren/Einfügen seltsam sein könnte, aber das ist im Wesentlichen das Endergebnis:

import random 

    def winner(comp_pack): 
    my_choice = input("Enter rock, paper, or scissors: ") 

    comp_choice = comp_pack[random.randint(0, len(comp_pack)-1)] 

     if my_choice == comp_choice: 
      print("tie") 
      return "tie" 

     elif my_choice == "rock": 

     if comp_choice == "paper": 
      print("paper covers rock, computer wins!") 
      return "comp" 

     elif comp_choice == "scissors": 
      print("rock smashes, scissors winner") 
      return "user" 

     elif my_choice == "paper": 

     if comp_choice == "scissors": 
      print("scissors cut paper, computer wins!") 
      return "comp" 

     elif comp_choice == "rock": 
      print("paper covers rock, you win!") 
      return "user" 

     elif my_choice == "scissors": 

     if comp_choice == "paper": 
      print("scissors cut paper, you win!") 
      return "user" 

     elif comp_choice == "rock": 
      print("rock smashes paper, computer wins!") 
      return "comp" 

def main(): 

    rounds = eval(input("Enter the number of rounds: ")) 

    comp_pack = ["rock", "paper", "scissors"] 

    i_win = 0 
    comp_win = 0 
    tie = 0 

    for i in range (rounds): 
     result = winner(comp_pack) 
     if result == "user": 
      i_win += 1 
     elif result == "comp": 
      comp_win += 1 
     elif result == "tie": 
      tie += 1 
     print ("current score: user ", i_win , ", computer ", comp_win) 

    if i_win > comp_win: 
     print("You win!") 
    elif i_win < comp_win: 
     print("You lose!") 
    else: 
     print("Tie!") 

main() 
+0

Um Ihren Code richtig einzufügen, kopieren Sie ihn einfach und fügen Sie ihn hier ein. Wählen Sie dann den eingefügten Block aus und geben Sie ctrl-K ein, damit er für Sie eingerückt wird. Das Einfügen von Code mit offensichtlichen Syntaxfehlern scheint ziemlich sinnlos. – tripleee

+0

Das "Pack" außerhalb der Funktion zu definieren, aber dann die Mitgliedsnamen des Pakets innerhalb der Funktion zu codieren, scheint eine schlechte Arbeitsteilung zu sein. Im Idealfall möchten Sie die internen Funktionen der Funktion vollständig von ihrem Aufrufer einkapseln. – tripleee

+0

Das große hässliche verschachtelte if-then-else ist ein Hinweis, dass Sie vielleicht darüber nachdenken sollten, wie Sie die Menge an repetitivem Code reduzieren können. https://en.wikipedia.org/wiki/Don't_repeat_yourself und vielleicht überlegen, wie man Wissen in einer Datenstruktur oder als Objekte darstellen kann. – tripleee

Verwandte Themen