0

when I enter cm into the uCheck variable the program prints the string in the else condition

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陈述是分开的。即使第一个是真的,你仍然会检查第二个,第三个和第四个,因为只有第一个是真的,所以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 回答