2017-10-26 24 views
0

私はデジタル記憶装置を変換するプログラムを作っています。同様に、いくつのビットがメガビットの量であるのかを尋ねることができます。私はif文でテストしていますが、答えを出力することはできません。この行でPython 2.7印刷でのトラブル

import re 

UNITS = ["bit", "byte", "exabit", "exabyte", "gigabit", "gigabyte", 
"kilobit", "kilobyte", "megabit", "megabyte", "petabit", "petabyte", 
"terabit", "terabyte"] 

PLURAL_UNITS = ["bits", "bytes", "exabits", "exabytes", "gigabits", 
"gigabytes", "kilobits", "kilobytes", "megabits", "megabytes", "petabits", 
"petabytes", "terabits", "terabytes"] 

PROMPT_1 = "How many " 
PROMPT_2 = "are in " 

def convert(): 
    first_unit = raw_input(PROMPT_1) 
    second_unit = raw_input(PROMPT_2) 

    number_of = re.findall('\d+', second_unit) 

    number = number_of[0] 

    if first_unit == PLURAL_UNITS[0] and second_unit == " " + PLURAL_UNITS[1]: 
     answer = float(number)*8 
     print(answer) 


convert() 
+0

正確にはどのようなことが起こり、期待される結果とどのように違うのですか? – stybl

+0

2番目の生の入力にスペースを追加していますか?これはあなたが – marsh

+0

@ styblをチェックしているからです。答えを表示すると思っていますが、IDLEシェルのコマンドラインプロンプトにスキップするだけです。 –

答えて

0

printステートメントには届かないため印刷されません。 if声明の条件のいずれかまたは両方がFalseです。その結果を表示するには、

def convert(): 
    first_unit = raw_input(PROMPT_1) 
    second_unit = raw_input(PROMPT_2) 

    number_of = re.findall('\d+', second_unit) 

    number = number_of[0] 

    print('first check:', first_unit == PLURAL_UNITS[0]) 
    print('second check:', second_unit == " " + PLURAL_UNITS[1]) 
    if first_unit == PLURAL_UNITS[0] and second_unit == " " + PLURAL_UNITS[1]: 
     answer = float(number)*8 
     print(answer) 


convert() 
0

ルック:この行では

if first_unit == PLURAL_UNITS[0] and second_unit == " " + PLURAL_UNITS[1]: 

最初の入力が"bits"であり、第二の入力が" bytes"であれば、あなたのコードは印刷されます。他に何かを入力すると、if文(あなたのprintを含む)の下のコードはスキップされます。

+0

純粋な数字を入力すると機能します。 –

+0

私がテストすると、[0]と[1]で動作するように入力します。 –

+0

@OwenStrandはい、if文は正確な入力バイトを探します。つまり、スペースの後ろにワードのバイトが続きます。数字(つまり、「1024バイト」)を追加すると、それは誤りになります。 – stybl

-2

で、printは関数ではなく文です。 印刷の回答

+0

この場合、これは問題を引き起こしているものではありません。 'print()'は特定の条件下でpython2で正常に動作します。 'print()'として評価されるだけです。 – quantik

+0

単一のオブジェクト 'x'を印刷すると、' print(x) 'と' print x'はPython 2で同じ*働きます。 – vaultah

関連する問題