Python单位转换程序中函数未触发调用的问题求助
Python单位转换程序中函数未触发调用的问题求助
嗨,别担心,刚学Python遇到这种小问题太正常啦😉,我来帮你拆解下问题所在:
第一个核心问题:条件判断的索引使用错误
你在第14行写的判断条件measurementLst[0][1]和measurementLst[7][8]完全不是你想表达的意思:
measurementLst[0]是列表里的第一个元素"cm",[0][1]是取这个字符串的第二个字符,也就是"m",所以只有当storedStr2输入的是"m"时,这部分才会成立,而不是你想要的匹配厘米单位;measurementLst[7]是"mm",它的长度只有2,索引最大是1,[7][8]会直接触发索引越界错误,这部分逻辑根本跑不通。
你真正想要的是判断:用户输入的转换目标是厘米类单位("cm"或"centimetres"),且转换源是毫米类单位("mm"或"millimetres")。
第二个问题:函数代码块的缩进错误
Python是靠缩进区分代码块的,你定义的mmtocm函数里的两行代码没有缩进,这会导致函数没有实际执行体——就算调用了这个函数,也不会执行任何操作,甚至可能引发语法错误。
修正后的代码示例
我把你的代码调整了一下,修复了上述问题,还优化了单位匹配的逻辑:
measurementLst = ["cm", "centimetres", "inch", "inches", "metres", "m", "metre", "mm", "millimetres"] # 整理单位分组,方便后续匹配 unit_groups = { "cm": ["cm", "centimetres"], "mm": ["mm", "millimetres"], "m": ["m", "metre", "metres"], "inch": ["inch", "inches"] } # Millimetres to Centimetres conversion subroutine def mmtocm(value): conversionMMtoCM = value / 10 print("CM: ", conversionMMtoCM) # User decides conversion to use for the program storedStr1 = input("Which measurement would you like to convert from: mm, cm, inch or m? ") storedStr2 = input("Which measurement would you like to convert to: mm, cm, inch or m? ") # 增加输入验证,避免非整数输入报错 try: storedVal = int(input("What is the value of your measurement? ")) except ValueError: print("请输入有效的数字!") exit() # 修正后的条件判断 from_unit = storedStr1.casefold() to_unit = storedStr2.casefold() if from_unit in unit_groups["mm"] and to_unit in unit_groups["cm"]: mmtocm(storedVal)
额外小建议
- 把转换值作为参数传给函数,这样函数的复用性更强,不用依赖全局变量
storedVal; - 增加输入验证,避免用户输入非数字导致程序崩溃;
- 后续可以给其他转换逻辑(比如cm转mm、inch转cm等)也加上对应的函数和判断条件,让程序更完整。
备注:内容来源于stack exchange,提问作者brandz




