2017-10-24 16 views
-1

何らかの理由で私のコードがFalseを返さず、わかりません。数字が他の2つの数字の間にあるかどうかを調べる

私の問題は、私のbetweenの機能がどのように書かれていますが、それは私には意味があると思います。また、再起動機能を働かせるために苦労しています。誰かがこの2つの分野で私を助けることができたら、私は非常に感謝しています。

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/あなたは、より良い機能が間違っている – WNG

+0

あなたの間でここに適切な質問をする方法を理解するために、サイトのガイドラインを読みました。 bがaとcの両方よりも小さいかどうかを確認しています –

+0

どちらがどちらかと言えば、関数からはbのように見えますが、呼び出しコードではnumoneです。おそらくこれがパラメータを記録すべき理由です。 –

答えて

0

をごbetween機能のロジックは(私はそれが少し明確にするために、変数の名前を変更しました)少し間違っていました。また、あなたはreturningという値ではありませんでしたので、基本的に何もしていませんでした。あなたはでも常に "True"と表示されていました。

私はの結果のコードをreturnに変更しました。私はこの関数の結果に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 
+0

すべてを修正していただきありがとうございました...このようにすれば、どうやって明らかになりますか?どうもありがとうございます! – Xaneph

+1

@ Xaneph問題はありません:)あなたの問題を解決した場合、この回答をupvoteして受け入れることを忘れないでください。 – DavidG

+0

Pythonは_readability_を評価することに注意することが重要です。あなたのコードが単純であればあるほど、それは良いでしょう。(誰かがバグを読む/修正する方がはるかに簡単です) – DavidG

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") 
関連する問題