2016-09-13 11 views
-1

10進数を2進数に変換するアルゴリズムを実装しようとしています。入力がNaNの場合、どのようにエラーを発生させることができますか?

これは私が持っているものです。

def binary_converter(n): 
    if n < 0:raise ValueError, "Invalid input" 
    if n >255:raise ValueError, "Invalid input" 
    if n > 1: 
     binary_converter(n//2) 
     print(n % 2,end = '') 

# Take decimal number from user 
dec = int(input("Enter an integer: ")) 
binary_converter(dec) 

私の質問は、これらの行についてです:私は入力を検証しようとしています

if n < 0:raise ValueError, "Invalid input" 
    if n >255:raise ValueError, "Invalid input" 

のみ0-9が含まれています。

どうすれば検証できますか?

+0

申し訳ありません、これはうまくいかない、またはコードのレビューを希望していますか?そのための別のサイトがあります:http://codereview.stackexchange.com/ – EdChum

+0

これはコードレビューのためのものではありません。問題があれば、私たちが助けることができるように指定してください。 – Tim

+0

'float( 'nan')'や '0-9'という文字だけで構成されていない入力について質問していますか?また、下の3行をそのようにインデントしていることを意味しますか? – SCB

答えて

0

いくつかの方法があります。そのうちの1つは、文字列.isdigit()を使用しています。 .isdigit()の一般的な問題は、ネガティブでは機能しませんが、コードでは問題にはなりません。次のカスタム関数を使って入力を交換してみてください:

def positive_int_input(): 
    s = input("Enter an integer: ") 
    if not s.isdigit(): 
     raise ValueError("Input is not a positive integer") 
    else: 
     return int(s) 

いくつかの例:

positive_int_input() 
# Enter an integer: 42 
#-> 42 

positive_int_input() 
# Enter an integer: 3.14 
# ValueError: Input is not an integer 

positive_int_input() 
# Enter an integer: Hello World! 
# ValueError: Input is not an integer 

言われていること:

int("Some String") 
# ValueError: invalid literal for int() with base 10: 'Some String' 

がエラーに関係なく返されたので、私はしないでくださいインデントを修正するだけでなく、あなたのコードが間違っていると思うことを正確に知ることができます。

+0

ありがとうございます。字下げ部分を修正します。私は8日前にpythonを学び始めた – OSMadeIT

関連する問題