You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码正确性咨询:实现公里转英里的双函数功能

代码正确性判断与优化建议

需求与示例

需求说明:需在main()中调用distanceTravelled和kmToMileOutput两个函数,获取用户输入的5个浮点型公里数生成列表,遍历列表将每个元素转换为英里后打印结果。

输入示例:
Enter distance in KM: 2
Enter distance in KM: 5.5
Enter distance in KM: 1
Enter distance in KM: 4
Enter distance in KM: 8

输出示例:
[2.0, 5.5, 1.0, 4.0, 8.0]
Converted output: [1.2428, 3.4177, 0.6214, 2.4856, 4.9712]

用户提交的代码

def kmToMileOutput(distance_covered):
    miles = distance_covered * 0.621371
    return miles

def distanceTravelled():
    lst = []
    for i in range(5):
        ele = float(input("Enter distance in Km: "))
        lst.append(ele)  # adding the element
    print(lst)
    lst2 = []
    for list in lst:
        x = list * 0.621371
        lst2.append(x)
    print("Converted output:",lst2)

def main():
     distanceTravelled()
     kmToMileOutput(2)

main()

代码存在的问题

  • 未复用已定义函数:distanceTravelled中硬编码了公里转英里的计算逻辑,没有调用已经写好的kmToMileOutput,违背了代码复用原则。
  • 冗余无效调用:main里的kmToMileOutput(2)仅计算了2公里转英里的结果,但没有输出或使用这个值,属于无效代码。
  • 变量命名冲突:循环中使用list作为变量名,这是Python内置类型的名称,容易引发混淆和潜在错误。
  • 输出精度不符:示例中转换结果保留4位小数,当前代码会输出更多小数位,格式不一致。

修正后的代码

def kmToMileOutput(distance_covered):
    miles = distance_covered * 0.621371
    # 保留4位小数,匹配示例输出格式
    return round(miles, 4)

def distanceTravelled():
    lst = []
    for i in range(5):
        ele = float(input("Enter distance in Km: "))
        lst.append(ele)
    print(lst)
    lst2 = []
    # 替换变量名为km,避免覆盖内置类型
    for km in lst:
        # 复用kmToMileOutput完成转换
        x = kmToMileOutput(km)
        lst2.append(x)
    print("Converted output:", lst2)

def main():
    # 调用distanceTravelled即可完成全部流程
    distanceTravelled()

main()

修正说明

  1. 让distanceTravelled复用kmToMileOutput函数,确保转换逻辑统一。
  2. 移除main中的冗余调用,简化执行流程。
  3. 修改循环变量名,避免命名冲突。
  4. 添加round函数控制输出精度,和示例格式保持一致。

内容的提问来源于stack exchange,提问作者newbie player

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 07:40:20