我做了一个代码,将一个测量转换为另一个。 (我不允许使用字典) 我不停地收到一条错误消息:NameError:name'num2'没有被定义,这意味着第二个循环中的if语句永远不会变成true我猜。不过,我不知道哪里出了问题。Python,公制转换程序,无字典
任何想法将不胜感激。谢谢!
# Metric conversion program
def displayWelcome():
print('This program converts convert one length unit into another unit')
print('Following are the available units: (mm), (cm), (m), (km), (inches), (ft), (yds), (miles)')
def getConvertfrom():
which1 = input('Which unit would you like to convert from: ')
def getConvertto():
which2 = input ('Which unit would you like to convert to: ')
num1 = float(input('Enter a value: '))
available_units = ('mm', 'cm', 'm', 'km', 'inches', 'ft', 'yds', 'miles')
conversions = (1, 10, 1000, 1e6, 25.4, 304.8, 914.4, 1.609344e6)
# Display program welcome
displayWelcome()
# Get which conversion
which1 = getConvertfrom()
which2 = getConvertto()
index = 0
for i in range (0, len(available_units)):
if available_units[i] == str(which1):
num_in_mm = num1 * conversions[i]
for j in range (0, len(available_units)):
if available_units[j] == str(which2):
num2 = num_in_mm/conversions[j]
print(num1, which1, "is equal to", num2, which2)
'range(0,len(available_units))' - >'range(len(available_units))'。 'which1'已经是一个字符串了,所以'str(which1)' - >'which1'。当找到一个匹配项时,你会想'break',然后在你的for循环中添加一个'else'块,它会抱怨这个单元是未知的...... –
我发现我从来没有在第一部分使用过return。感谢大家! – Lexi