2017-02-13 6 views
0

これはナンバーチェッカーのコードです。私が「80」のように入力を与える場合、これは私が見るものである関数からの戻り値がFalseの場合を除いて試してください

number = int(input("Give me a whole number. >> ")) 
standardNum = 50 

def numberChecker(number, standardNum): 
    result = standardNum - number 
    print(result) 
    if result >= 0: 
     print("Result is positive.") 
     return True 
    else: 
     print("Result is negative.") 
     return False 

while True: 
    try: 
     numberChecker(number, standardNum) 
     break 
    except numberChecker() == True: 
     print("Your number is too big.") 
     amountProduct = int(input("Give me a whole small number >> ")) 

-

Give me a whole number. >> 80 
-30 
Result is negative. 

しかし、numberChecker除く()線の下に、コードのブロックを印刷しません。

「あなたの番号が大きすぎます」というコードを印刷して、「小さな番号全体を教えてください」という文章で別の入力を求めますが、動作しないようです。

条件をT​​rueからFalseに変更しようとしましたが、それでも効果はありませんでした。

誰かが助けることができますか?お願いします! 多くのありがとうございます。

+1

あなたは例外処理を使用するべきではありません...がありますここには例外はありません。 –

答えて

4

try-exceptブロックの意味が間違っていると思います。あなたは明確にif-elseを使用する必要があります。

while True: 
    if numberChecker(number, standardNum): 
     break 
    else: 
     print("Your number is too big.") 
     number = int(input("Give me a whole small number >> ")) 
+0

しかし、新しい番号を入力するようにユーザーに再通知したい場合は、if-elseステートメントを使用することはできません。他の代替方法は何ですか? –

+1

@BobSmith私の答えを更新しました –

+0

素晴らしいです!時間制限が終了するとすぐにあなたの答えをチェックします!どうもありがとう!可能であれば、他のユーザーに恩恵を受けるための質問をしてください。 –

1

あり、この値のチェックを策定するにはいくつかの方法がありますが、あなたは、例外を使用したい場合は、このアプローチは、あなたが今いる場所からわずかに小さい飛躍です:

standardNum = 50 

def numberChecker(number, standardNum): 
    if number > standardNum: 
     raise ValueError 

    return True 

while True: 
    my_number = int(input("Give me a small whole number: ")) 

    try: 
     if numberChecker(my_number, standardNum): 
      break 
    except ValueError: 
     print("Your number is too big.") 
+0

これも有効なアプローチです。とても有難い!ありがとう!私はまた、私のコードの別のバージョンとしてそれを含めます! –

0

例外の目的を理解しているかどうかは不明です。ことで、ここではそれらを誤用するより良い方法は、あなたがしようとしているものを達成することができるのです。

STANDARD_NUM = 50 

class NumberTooBigError(Exception): pass 

def numberChecker(number, standardNum): 
    result = standardNum - number 
    if result < 0: # number >= standardNum 
     raise NumberTooBigError() 

while True: 
    try: 
     number = int(input("Give me a whole number. >> ")) 
     numberChecker(number, STANDARD_NUM) 
     break 
    except NumberTooBigError: 
     print("Your number is too big.") 

print("Your number was accepted.") 

使用例:

Give me a whole number. >> 80 
Your number is too big. 
Give me a whole number. >> 55 
Your number is too big. 
Give me a whole number. >> 50 
Your number was accepted. 
関連する問題