2016-04-08 31 views
0

Also versuche ich meine Zeichenfolge zwischen 1000 bis 9999 verifiziert werden und wenn ich versuche, dies auszuführen, kommt es zurück und sagt, es ist nicht verifiziert. Neugierig, wie Sie dieses Problem beheben können, so dass es tatsächlich die 4 Ziffern lesen kann, die eine Benutzereingabe als Zeichenfolge eingegeben hat. Ich habe es als String aus einem Grund und es funktioniert gut für andere Teile meines Codes. Es ist gerade dieser eine, der mir eine harte Zeit gibt.Ziffern in einer Zeichenfolge passen zwischen max und min

def choiceTwo(digitCode): 

    max = 9999 
    min = 1000 

    digitCode = [int(num) for num in digitCode] 
    for x in digitCode: 

     if x > max: 
      return True 

     if x < min: 
      return False 

def main(): 

    digitCode = str(input("Please enter a 4 digit code: ")) 

    if choiceTwo(digitCode) is True: 
      print("Number is verified!") 

    else: 
      print("ERROR not a valid ") 

Antwort

0

Überprüfen Sie, ob jede Zahl im 4-stelligen Code zwischen diesen beiden Werten liegt. Aber jede Zahl liegt im Bereich 0-9, daher wird dies nicht wahr sein. Nun, nicht zwischen diesen beiden Werten persay Ihre erste, wenn Bedingung if x > max ist einfach zu prüfen, ob die Zahl größer als 9999 und dann True zurückgibt. Sie müssen Ihre Bedingungen verschachteln, indem Sie und/oder> Operatoren verwenden, um nach einer Zahl zwischen diesem Bereich zu suchen.

Sie sollten Ihre zwei Variablen min und max nicht benennen, da sie in Python integriert sind und Sie die Funktionalität überschreiben. Sie können auch Ihren Zustand kombinieren. Wenn Sie nicht Ihre Auswahl an akzeptierten Werten wollen inklusiv sein nehmen nur der = in <= in der unter Bedingung 9999 und 1000

Sie ausschließen können die zusätzlichen is True in Ihrer ursprünglichen fallen, wenn da Bedingung nur if (expression) tun wird werte es als Wahrheitswert oder "Wahrhaftigkeit" aus.

Ich habe eine while-Schleife hinzugefügt, die den Benutzer kontinuierlich auffordert, 4-stellige Codes einzugeben, bis sie tatsächlich die Länge 4 und gültige Ziffern haben, um Fehler in der anderen Funktion zu verhindern und die Eingabe zu validieren.

Sie brauchen eigentlich nicht einmal die else: return False da nichts zurückzukehr None zurückkehren und als nicht in Ihrer wenn die Bedingung wahr ist, ausgewertet werden, aber ich habe das es eher das Original zu halten. Sie könnten min und max als global deklarieren (oder lokal in Ihrer main()) -Funktion, und verwenden Sie einfach if _min <= int(digitCode) <= _max, wenn Sie kurz und bündig sein möchten.

def choiceTwo(digitCode): 

    _max = 9999 
    _min = 1000 

    if _min <= digitCode <= _max: 
     return True 
    else: 
     return False 

def main(): 

    digitCode = input("Please enter a 4 digit code: ") 
    while not (digitCode.isdigit() and len(digitCode) == 4): 
     digitCode = input("Please enter a 4 digit code: ") 

    if choiceTwo(int(digitCode)): 
     print("Number is verified!") 

    else: 
     print("ERROR not a valid ") 
main() 
0

Es ist wahrscheinlich einfacher, dies in Ihre if-Anweisung direkt zu tun:

if int(digitCode) < int(max) and int(digitCode) > int(min): 
    print("Number is verified!") 
else: 
    print("ERROR not a valid ") 

Edit: Ich stellte sicher, dass beide digitCode, max und min alle ganzen Zahlen waren, da Sie, dass Sie erwähnt benutzten sie als Zeichenfolgen an anderer Stelle im Code.

Edit 2: Überprüfen Sie auch Ihre Aussagen in Ihrer Funktion; Was passiert, wenn x zwischen Max und Min liegt (zur Zeit gibt es nur True zurück, wenn x> max).