检查数字是否位于另外两个数字之间

时间:2017-10-24 20:59:22

标签: python python-3.x

出于某种原因,我的代码不会返回False EVER,我无法弄明白?

我认为问题在于我的between函数是如何编写的,但对我来说是有道理的。此外,我正在努力让我的重启功能工作。如果有人可以帮我解决这两个问题,我将非常感激。

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

2 个答案:

答案 0 :(得分:0)

您在问题定义或示例代码中都有小错误。无论如何,如果你稍微修改它:

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")

答案 1 :(得分:0)

between函数的逻辑略有错误(我重命名变量以使其更加清晰)。另外,你不是returning函数的值,所以它基本上什么都不做。您还始终打印&#34; True&#34;。

我已将代码修改为return between函数的结果。我已经将这个函数的结果变成了一个名为true_or_false的变量,然后在每个游戏结束时打印出来。

为了让您的代码循环,您需要的只是另一个while循环,如果用户不想继续,您可以突破该循环。

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