2017-12-05 5 views
2

Dies ist mein Versuch, ein höheres/niedrigeres Spiel zu machen.Wie kann ich diesen Python-Code kürzer und effizienter machen?

import random 
print("A game of Higher or Lower") 
number = random.randint(1, 100) 
choice = int(input("Please pick a number between 1 & 100: ")) 
if choice < number: 
    print("Higher") 
elif choice > number: 
    print("Lower") 
else: 
    print("Well done!") 
while choice != number: 
    choice = int(input("Pick again: ")) 
    if choice < number: 
     print("Higher") 
    elif choice > number: 
     print("Lower") 
    else: 
     print("Well done!") 

Ich bin neu bei Python und ich frage mich nur, gibt es eine Möglichkeit, den Code zu kürzen, um es effizienter zu machen? Ich glaube nicht, dass zwei "if/elif/else" -Anweisungen erforderlich sind, aber ich sehe keine Möglichkeit, sie zusammenzuführen. Entschuldigung, wenn es eine dumme Frage ist!

Aktualisiert Code:

import random 
print("A game of Higher or Lower") 
number = random.randint(1, 100) 
choice = "" 
while choice != number: 
    choice = int(input("Please pick a number: ")) 
    if choice < number: 
     print("Higher") 
    elif choice > number: 
     print("Lower") 
    else: 
     print("Well done!") 
+2

Jedes Mal, wenn Sie sich selbst Code kopieren, fragen Sie sich: "Kann ich das in eine Funktion bringen?" –

+0

Es gefunden. Ich lasse "Wahl" eine leere Zeichenfolge sein, so dass es definiert ist, wenn es um die While-Schleife geht –

+0

Ich stimme für das Schließen dieser Frage als Off-Topic ab, da Fragen zur Verbesserung des Arbeitscodes bei Stack Overflow off-topic sind. Ziehen Sie die Tour mit CodeReview.StackExchange in Betracht und sehen Sie stattdessen, ob Ihre Frage dort passt. – TylerH

Antwort

1

Sie so etwas tun könnte:

import random 
print("A game of Higher or Lower") 
number = random.randint(1, 100) 
while True: 
    try: 
     choice = int(input("Please pick a number between 1 & 100: ")) 
    except ValueError: 
     continue 
    if choice < number: 
     print("Higher") 
    elif choice > number: 
     print("Lower") 
    else: 
     print("Well done!") 
     break 
+1

Wenn der Benutzer nichts eingibt, wird ein "ValueError" ausgelöst. Aber irgendwie beantwortet es die Frage. – Manjunath

+0

@Manjunath Ich habe einen Versuch/Ausnahme hinzugefügt, um dieses Szenario zu beheben – iLoveTux

0

Hier ist ein Vorschlag: initialisieren choice mit etwas, das garantiert ist ungleich number (zB eine negative Zahl sein, eine "Wächter"). Dann können Sie sofort mit der while-Schleife beginnen, da die Bedingung zum ersten Mal immer wahr ist.

Dann können Sie den ersten if/then/else-Block und den ersten Aufruf an input() außerhalb der While-Schleife entfernen.

BTW, „kürzerer Code“ ist nicht immer „effizienter Code“ :)

0

Sie können so etwas wie dies versuchen:

import random 
print("A game of Higher or Lower") 

number = random.randint(1, 100) 
choice = int(input("Please pick a number between 1 & 100: ")) 

while choice != number: 
    if choice < number: 
     print("Higher") 
    elif choice > number: 
     print("Lower") 

    choice = int(input("Pick again: ")) 

print("Well done") 

den Code kapseln, die Benutzereingaben prüfen auch eine gute Idee sein kann, .

0

die if/else-Anweisungen können in einer Zeile gesetzt werden:

import random 
print("A game of Higher or Lower") 
number = random.randint(1, 100) 
choice = "" 
while choice != number: 
    choice = int(input("Please pick a number: ")) 
    s = 'Higher' if choice < number else ('Lower' if choice > number else 'Well done!') 
    print(s) 

Wenn Sie die Anzahl der Zeichen minimieren wollen, sind die var Namen ändern, um nur "Initialen" wie:

import random 
print("A game of Higher or Lower") 
n = random.randint(1, 100) 
c = "" 
while c != n: 
    c = int(input("Please pick a number: ")) 
    s = 'Higher' if c < n else ('Lower' if c > n else 'Well done!') 
    print(s) 
Verwandte Themen