2017-07-17 2 views
0

Ich bin neu in Python Codierung. Ich versuche, meinen Code so zu machen, dass wenn ich das Alter eintrage, eine Reihe von Text gedruckt wird. Mein Code funktioniert jedoch nur, wenn ich Zeile für Zeile folge. Zum Beispiel, wenn ich das Alter 2000+ sofort eingib, passiert nichts. Ich muss zuerst Eingang eine ganze Zahl kleiner als 12 ist, gefolgt von einer ganzen Zahl über 2000.Python - Basic Coding

print('Please input name') 
if input() == 'Alice': 
    print('Hi, Alice.Please input age') 

if int(input()) < 12: 
    print('You are not Alice, kiddo.') 
elif int(input()) > 2000: 
    print('Unlike you, Alice is not an undead, immortal vampire.') 
elif int(input()) == 100: 
    print('You are not Alice, grannie.') 
elif 12 < int(input()) < 99: 
    print('You are Alice!.') 
+6

nicht wiederholen Eingabe jedes Mal, weisen Sie auf eine Variable, und vergleichen Sie die Variable – PRMoureu

+0

Wenn Sie haben Ihre Antwort schließen Sie es dann. – cSharma

Antwort

1

Jedes Mal, wenn Sie in Ihnen zu einem anderen Zweig gehen if Sie Benutzer fragen andere Alter einzugeben! Stattdessen gehen Sie wie folgt vor:

age = int(input()) 
if age < 12: 
    print('You are not Alice, kiddo.') 
elif age > 2000: 
    print('Unlike you, Alice is not an undead, immortal vampire.') 
elif age == 100: 
    print('You are not Alice, grannie.') 
elif 12 < age < 99: 
    print('You are Alice!.') 
1
print('Please input name') 
if input() == 'Alice': 
    print('Hi, Alice.Please input age') 

age = int(input()) # take input and assign it on a variable 

if age < 12: 
    print('You are not Alice, kiddo.') 
elif age > 2000: 
    print('Unlike you, Alice is not an undead, immortal vampire.') 
elif age == 100: 
    print('You are not Alice, grannie.') 
elif 12 < age < 99: 
    print('You are Alice!.') 
1

input jedes Mal aufgerufen wird, wenn von () gefolgt. So sind die multiplen input()'s in den ifelif's nicht nötig.

speichern das Ergebnis input() wie age = int(input()), dann statt age in den if und elif Teile verwenden.

3

Hier habe ich Code für Ihr Verständnis Zweck geschrieben. Nehmen Sie eine neue Variable, so dass Sie die Methode input() nicht mehrmals wiederholen müssen. Der Alter-Validierungscode bleibt auch innerhalb der ersten Bedingung und wird ausgeführt, wenn die erste Bedingung wahr ist.

print('Please input name') 
var = input() 
if var == 'Alice': 
    print('Hi, Alice.Please input age') 
    var = input() 
    try: 
     if int(var) < 12: 
      print('You are not Alice, kiddo.') 
     elif int(var) > 2000: 
      print('Unlike you, Alice is not an undead, immortal vampire.') 
     elif int(var) == 100: 
      print('You are not Alice, grannie.') 
     elif 12 < int(var) < 99: 
      print('You are Alice!.') 
    except Exception as ex: 
     print('Invalid Data: Error: ' + ex) 
else: 
    print ("Invalid Name") 
+2

Ich denke, wir können davon ausgehen, dass das OP Python 3 basierend auf der 'print' Funktion verwendet. Daher ist es wahrscheinlich, dass "raw_input" nicht verfügbar ist und "input" tatsächlich korrekt ist. – SethMMorton

+0

oh ja, über Abfrage bezogen auf P3, aber die Definition der Logik ist richtig, so verwenden Sie einfach Eingabe() -Methode anstelle von Raw_Input() und Rest von allen sind gleich. – cSharma

+0

Wenn ich ein Anfänger bin und Ihre Antwort sehe und beschließe, sie in meinen Code zu kopieren und auszuführen, um besser zu verstehen, was vor sich geht, bekomme ich einen 'SyntaxError', wo Sie' print' ohne Klammern nennen, und ein 'NameError' in' raw_input'. Ich werde am Ende noch verwirrter sein als zuvor, als ich diese Antwort gesehen habe. Anstatt Ihre Antwort so zu lassen, wie sie ist und nur zu sagen, was in einem Kommentar behoben werden muss, sollten Sie die Antwort so bearbeiten, dass sie korrekt ist. – SethMMorton

3
var = input('Please input name ') 
if var == 'Alice': 
    var = int(input('Hi, Alice.Please input age ')) 
    if var < 12: 
     print('You are not Alice, kiddo.') 
    elif var > 2000: 
     print('Unlike you, Alice is not an undead, immortal vampire.') 
    elif var == 100: 
     print('You are not Alice, grannie.') 
    elif 12 < var < 99: 
     print('You are Alice!.') 
else: 
    print ("Invalid Name") 

Dieser Code funktioniert, weil es eine Zeit fragt und versucht, wenn einige Bedingungen erfüllt sind, um zu sehen, anstatt jedes Mal zu fragen.

1

Die Funktion input() gibt eine Zeichenfolge zurück. Zitiert the docs (Hervorhebung von mir):

Die Funktion liest dann eine Zeile aus Eingang, wandelt es in eine Zeichenkette (ein Hinter Neuen-Zeile-Strippen), und kehrt dass.

also in jedem if wenn Sie input() rufen, müssen Sie eine neue Zeichenfolge eingeben. Daher müssen Sie zuerst eine ganze Zahl unter 12 eingeben.

Um dieses Problem zu beheben, müssen Sie die ursprüngliche Eingabe in einer Variablen speichern. Jetzt, wie die Dokumentation sagt, gibt input() eine Zeichenfolge zurück. So können Sie entweder gegossen (mit int()) der ganzen Zahl in jedem Fall, indem Sie:

if int(age) < 12: 

und Speicher die Variable als String zurück.

Obwohl, wenn Sie das Alter als String keinen besonderen Grund zu halten, würde ich Sie empfehlen, um die Zeichenfolge zu konvertieren, während das Alter in den Variablen an erster Stelle zu speichern:

age = int (input()) 

In diesem Fall wird age eine int haben.

0

Hoffentlich ist es das, was Sie suchen:

while True: 
name = input("Please ENTER your name: ") 
if name == "Alice": 
    print("Hi Alice!") 
    break 
print("Sorry, your name isn't correct. Please re-enter.") 

age = False 
while age != True: 
     age = int(input("Please ENTER your age: ") 
     age = True 
     if age < 12: 
      print("You're not Alice, kiddo.") 
      age = False 
     elif age > 2000: 
      print("Unlike you, Alice is not an undead, immortal vampire.") 
      age = False 
     elif age == 100: 
      print("You're not Alice, Granny!") 
      age = False 
     else: 
      print("You are Alice!") 
      age = True