0

uCheck変数にcmを入力すると、プログラムはelse条件で文字列を出力します

uCheck=input(print('Unit?')) #<--I enter 'cm' here
if uCheck=='nm':
    Wave=Wave
if uCheck=='cm': #<--it seems to skip this boolean
    Wave=Wave*(10**7)
if uCheck=='mm':
    Wave=Wave*(10**6)
if uCheck=='m':
    Wave=Wave*(10**9)
else:
    print('Invalid Unit! Valid units are: nm, mm, cm, m.') #<-- and prints this
    Frequency()
4

1 に答える 1

1

あなたのif発言は別です。1 つ目が true であっても、2 つ目、3 つ目、4 つ目をチェックすると、1 つ目だけが true だったので、elseブロックが実行されます。

それらを次のように変更するelifと、コードが機能するはずです。

uCheck = input('Unit? ')

if uCheck == 'nm':
    Wave = Wave
elif uCheck == 'cm':
    ...

また、これを行うより良い方法は、辞書を使用することです。

units = {
    'nm': 1,
    'mm': 10**6,
    'cm': 10**7,
    'm': 10**9
}

unit = input('Unit? ')

if unit in units:
    wave *= units[unit]
else:
    print('Invalid Unit! Valid units are: ' + ', '.join(units))
    frequency()
于 2013-10-07T02:15:11.757 に答える