2017-12-16 1 views
-4

Ich mache ein Skript, das den Benutzer auffordert, eine Nummer einzugeben, und abhängig von der Nummer, druckt es eine bestimmte Antwort. Das Problem, das ich habe, ist, ich bin mir nicht sicher, wie ich es machen soll, so dass sie nach dem Ausdrucken immer wieder in verschiedenen Zahlen erscheinen und die verschiedenen Antworten sehen können. Ich bin neu in Python, und ich bin mir nicht sicher, ob ich eine Schleife verwenden muss und wie ich es tun würde. In Bezug auf meinen Code habe ich viel mehr als 5 Antworten, aber ich habe es einfach gekürzt, damit es leichter zu lesen ist. Im Moment kann ich nur dann eine andere Antwort eingeben, wenn ich eine gebe, die Antwort ausdrucken, sie schließen, wieder öffnen und eine andere Nummer eingeben. Das Skript selbst funktioniert gut, ich suche nur nach einer Möglichkeit, alle Zahlen zu durchlaufen, ohne jedes Mal das Skript ausführen zu müssen, wenn ich eine andere Antwort möchte. Wenn mir jemand helfen könnte, würde ich es begrüßen. Vielen Dank.Python 3.6 - Muss ich eine Schleife oder etwas verwenden?

print ("Welcome.") 

var = int(input("Please Enter A Number: ")) 

if var == 1: 
    print("Hi.") 
if var == 2: 
    print("Hello.") 
if var == 3: 
    print("Yes.") 
if var == 4: 
    print("No.") 
if var == 5: 
    print("Answer.") 

k=input("Press Enter To Close") 
+4

Ja. Sie müssen eine Schleife verwenden. –

+0

Ja, Sie brauchen eine (while-) Schleife, um das Ganze zu umgeben, um es zu wiederholen. Normalerweise tun Leute 'while True: ...' und 'brechen' innerhalb der Schleife, wenn Sie es jemals beenden müssen. Und um die Eingabe-Integer in die entsprechende Zeichenfolge zu konvertieren, können Sie eine "if ... elif ... else" -Leiter (klobig) oder ein Diktat verwenden, wie @hansaphapst zeigt (eleganter und kompakter). – smci

+0

https://wiki.python.org/moin/ForLoop –

Antwort

0

Wir können eine Endlos-Schleife verwenden, um eine Reihe zu stellen, ohne den Code auszuführen wieder:

print ("Welcome.") 

def enter_number(): 
    var = int(input("Please Enter A Number: ")) 
    if var == 1: 
     print("Hi.") 
    if var == 2: 
     print("Hello.") 
    if var == 3: 
     print("Yes.") 
    if var == 4: 
     print("No.") 
    if var == 5: 
     print("Answer.") 

while True: 
    enter_number() 
    play_again = input("Do you want to play again (yes/no)?") 
    if play_again == "no": 
    break 
2

Ja, Sie würden eine Schleife benötigen. Was Sie auch suchen, ist eine dict (aka Karte), mit der Sie die Zahl in die Zeichenfolge konvertieren können. Etwas wie folgt aus:

print("Welcome.") 

while True: 
    var = int(input("Please Enter A Number: press Ctrl-C to quit")) 

    number_to_string = {1: 'Hi.', 2: 'Hello.', 3: 'Yes', 4: 'No.', 5: 'Answer.'} 
    if var in number_to_string: 
     print(number_to_string[var]) 
    else: 
     print('unknown') 
+0

Vielen Dank. – NetworkSecurity

0
answers=["Hi","Hello","Yes","No","Answer"] 
while True: 
    number=input("Please Enter a Number:") 
    if number=="": break 
    print(answers[int(number)-1]) 
+0

Das ist ein schlechter Stil und falsch. a) Sie müssen "Zahlen" nicht explizit deklarieren, verwenden Sie einfach 'enumerate (Antworten)'. Sauberer und einfacher. b) Sie verwirren eine while-Schleife, um Benutzer für die Eingabe abzufragen, mit einer for-Schleife, um jede mögliche Antwort einmal zu durchlaufen und dann zu stoppen (warum? Das ist nicht das, was das OP wollte). c) Wie auch immer, du machst nichts mit 'pair' von' für pair in ...', du ignorierst es einfach und suchst nach Antworten [Nummer-1] ' – smci

+1

Alle schönen Punkte ... wie sieht es jetzt aus? –

+0

Besser, aber in diesem Fall ist es wahrscheinlich besser Stil zu expliziten und verwenden Sie ein Diktat 'number_to_answer = {1: 'Hallo.', 2: 'Hallo.' ...}' anstatt eine Liste, wo die Nummerierung implizit ist, (@ Hansaplasts Antwort). Oh, und das vermeidet auch den klobigen "int (number) -1" Kludon, den die Zero-basierte Indizierung auf dich ausübt. – smci

Verwandte Themen