2016-04-25 8 views
-2

Es ist schwer herauszufinden, wie die while (True) -Funktion in den Code eingefügt werden soll. Auch keine Ahnung, ob das die richtige Sache zu verwenden, wie ich das Spiel Schleife versuchen, bis der Computer oder der Benutzer die gewünschte Anzahl an Punkten trifft (die die Benutzereingaben als Runden am Anfang)Die While (True) -Schleife nicht verstehen - Python 2.7

import random 


def main(): 

print 
print "----------------------------------" 
print "Welcome to Rock, Paper, Sciccors! " 
print "----------------------------------" 


rounds = input("How many points to win?: ") 

user_choice = input("Choose Rock = 1 , Paper = 2 or Sciccors = 3: ") 

user_score = 0 

computer_score = 0 



if user_choice == 1: 

    print "You chose Rock" 

elif user_choice == 2: 

    print "You chose Paper" 

elif user_choice == 3: 

    print "You chose Sciccors" 

else: 

    print " Wrong! Choose 1, 2 or 3!" 



computer_choice = random.randrange(1, 4) 


if computer_choice == 1: 

    print "Computer chose Rock" 

elif computer_choice == 2: 

    print "Computer chose Paper" 

elif computer_choice == 3: 

    print "Computer chose Sciccors" 


def checkResults(computer_choice, user_choice): 

    checkResults = computer_choice - user_choice 


    if computer_choice - user_choice == 0: 

     print("Draw!") 

     user_score += 1 

     computer_score += 1 

    elif computer_choice - user_choice == 1 or computer_choice - user_choice  == -2: 

     print("Computer wins") 

     computer_score += 1 

    elif computer_choice - user_choice == -1 or computer_choice - user_choice == 2: 

     print("You win!") 

     user_score += 1 


print (" Computer {} , You {}" .format(computer_score, user_score)) 

while(True): 

if computer_score == rounds or user_score == rounds: 

    main() 
else: 
    break 
+0

Können Sie Ihre Antwort mit Code aktualisieren, der ohne Syntaxfehler ausgeführt werden kann? Vorzugsweise entfernen Sie auch viele Leerzeilen. – totoro

Antwort

1

Sie kann dies ein wenig kürzer machen:

while computer_score == rounds or user_score == rounds: 

    ' Your code returning computer_score and user_score 

Im Grunde ein while True ist eine Endlosschleife, die nur beendet werden kann, eine break Anweisung oder über Tastatur-Interrupt verwenden.

0

while True: ist eine Endlosschleife, die nur über den Befehl break gestoppt werden kann. In Ihrem Beispiel haben Sie eine Schleife erstellt, die die Methode main() (die Sie zuvor definiert haben, indem Sie def main(): sagen) unendlich ausführt. Die Schleife wird nur beendet, wenn Sie den Prozess beenden (d. H. Task-Manager unter Windows), oder wenn computer_score und user_score beide ungleich rounds werden (was Ihre else-Anweisung auf die vorletzte Zeile impliziert). Wenn dies geschieht, ruft das Programm break auf, wodurch die Schleife zwangsweise sofort beendet wird und weitergeht ... bis zum Ende der Datei (wodurch das Programm beendet wird).

Es sollte angemerkt werden, dass die Verwendung einer while True ... break Schleife wird manchmal von Programmierern verpönt, weil es nicht als "elegant" gesehen wird. Es ist völlig in Ordnung Code zu tun, aber eine andere Art und Weise die letzten Zeilen ist die folgende neu zu schreiben:

while computer_score==rounds or user_score==rounds: 
    main() 

Dies erreicht das gleiche Ergebnis, indem Sie den while Schleife, bis computer_score und user_score beide nicht gleich rounds. An diesem Punkt beendet sich die while-Schleife sauber und beendet das Programm, indem sie das Ende der Datei erreicht.

Verwandte Themen