2017-10-24 14 views
-1

Aus irgendeinem Grund gibt mein Code nicht False EVER zurück und ich kann es nicht herausfinden?Überprüfen Sie, ob eine Zahl zwischen zwei anderen Zahlen liegt

Ich denke, das Problem ist, wie meine between Funktion geschrieben wird, aber es ergibt Sinn für mich. Auch ich kämpfe, um meine Wiederanlauffunktion zum Funktionieren zu bringen. Wenn mir jemand mit diesen 2 Bereichen helfen könnte, wäre ich sehr dankbar.

def between(a,b,c): 
    if a>b and b<c: 
     Rnum =True 
    else: 
     Rnum=False 

def main(): #main function need in all programs for automated testing 
    print ("This program will ask the user for 3 numbers and determine if 
    the second number lies betweenthe first and the third") 
    print() 

    while True: 
     numone=input('Please enter the first number - the low number:') 
     if numone.isdigit(): 
      numone=int(numone) 
      break 
     else: 
      print('Invalid response. Please enter a whole number.') 


    while True: 
     numtwo=input('Please enter the second number - the test number: ') 
     if numtwo.isdigit(): 
      numtwo=int(numtwo) 
      break 
     else: 
      print('Invalid response. Please enter a whole number.') 

    while True: 
     numthree=input('Please enter the third number - the high number:') 
     if numthree.isdigit(): 
      numthree=int(numthree) 
      break 
     else: 
      print('Invalid response. Please enter a whole number.') 
      sprint() 

    number =between(numone,numtwo,numthree) 
    print('The statement ' + str(numone) + ' lies between ' + str(numtwo) + ' and ' + str(numthree) + ' is True.'"\n") 

    #Restart question 
    while True: 
     restart = input('Would you like to play again (Y/N)? ') 
     if restart == 'Y' or restart == 'y': 
      print('Restarting!' + ('\n' * 2)) 
      break 
     if restart == 'N' or restart == 'n': 
      print('Thank you for playing.' + ('\n' *2)) 
      break 
     else: 
      print("Invalid response. Please answer with a 'Y' or 'N'") 
     if restart == 'N' or restart == 'n': 
      break 
     else: 
      continue 

if __name__ == '__main__' : 
    main() #excucte main function 
+1

http://idownvotedbecau.se/itsnotworking/ Sie besser auf die Website-Richtlinien lesen würde zu verstehen, wie hier eine richtige Frage stellen – WNG

+0

Ihre zwischen Funktion falsch ist. Es fragt, ob b kleiner als a und c ist. –

+0

Welcher zwischen ihnen sein soll, sieht aus wie b aus der Funktion, aber numone im aufrufenden Code. Vielleicht sollten Sie deshalb die Parameter dokumentieren. –

Antwort

0

Die Logik Ihrer between Funktion war etwas falsch (ich habe die Variablen zu umbenennen, um es etwas deutlicher zu machen). Darüber hinaus waren Sie nicht returning der Wert der Funktion, so dass es im Grunde nichts getan hat. Sie waren auch immer Drucken "True".

Ich habe Ihren Code zu return das Ergebnis der between Funktion geändert. Ich habe das Ergebnis dieser Funktion eine Variable namens true_or_false gemacht, die dann am Ende jedes Spiels gedruckt wird.

Um Ihren Code in die Schleife zu bekommen, brauchen Sie nur noch eine while Schleife, aus der Sie ausbrechen können, wenn der Benutzer nicht fortfahren möchte.

def between(low,test,high): 
    if low < test < high: 
     return True 
    else: 
     return False 

def main(): #main function need in all programs for automated testing 
    print ("This program will ask the user for 3 numbers and determine if\nthe second number lies betweenthe first and the third") 

    while True: 
     while True: 
      numone=input('\nPlease enter the first number - the low number:') 
      if numone.isdigit(): 
       numone=int(numone) 
       break 
      else: 
       print('Invalid response. Please enter a whole number.') 

     while True: 
      numtwo=input('Please enter the second number - the test number: ') 
      if numtwo.isdigit(): 
       numtwo=int(numtwo) 
       break 
      else: 
       print('Invalid response. Please enter a whole number.') 

     while True: 
      numthree=input('Please enter the third number - the high number:') 
      if numthree.isdigit(): 
       numthree=int(numthree) 
       break 
      else: 
       print('Invalid response. Please enter a whole number.') 

     true_or_false =between(numone,numtwo,numthree) 
     print('The statement ' + str(numtwo) + ' lies between ' + str(numone) + ' and ' + str(numthree) + ' is ' + str(true_or_false) + "\n") 

     restart = "" 
     while restart.upper() != "Y": 

      restart = input('Would you like to play again (Y/N)? ') 
      if restart.upper() == "Y": 
       print('Restarting!') 

      elif restart.upper() == "N": 
       print ('Thank you for playing.') 
       sys.exit() 
      else: 
       print("Invalid response. Please answer with a 'Y' or 'N'") 


if __name__ == '__main__' : 
    main() #excucte main function 
+0

Vielen Dank, dass alles repariert ... wie sieht es so klar aus, wenn Sie es so sagen? Ich danke dir sehr! – Xaneph

+1

@ Xaneph Kein Problem :) Vergessen Sie nicht, diese Antwort zu aktualisieren und zu akzeptieren, wenn es Ihr Problem gelöst hat. – DavidG

+0

Es ist wichtig zu beachten, dass Python Werte _readability_. Je einfacher dein Code ist, desto besser wird es sein (und es ist viel einfacher für jemanden, Fehler zu lesen/zu beheben). – DavidG

0

Sie haben einen kleinen Fehler, entweder in der Problemdefinition oder im Beispielcode. Sowieso, wenn Sie es ein wenig ändern:

def between(a,b,c): if b>a and b<c: return 'True' 
else: return 'False' 

print('The statement ' + str(numtwo) + ' lies between ' 
+ str(numone) + ' and ' + str(numthree) + ' is ' + 
between(a,b,c) +"\n") 
Verwandte Themen