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

Python中if/elif返回值展示异常:CSV转换结果全为4的问题排查

问题分析与修复

核心问题

  1. seyrogus函数逻辑错误:
    你写的seyrogus函数接收整个数字列表,一进入循环就处理列表第一个元素(CSV里的1),计算1*3+1=4后直接return,导致每次调用都返回4,完全没处理其他数字。这个函数应该用来处理单个数字,而非整个列表。

  2. displayData调用参数错误:
    在displayData的循环里,你调用seyrogus(numbers)时传的是整个列表,而不是当前循环到的单个数字numbers[counter]。

修正后的代码

def getData():
    numbers = []
    # 用with语句自动关闭文件,更安全
    with open("numbers.csv", "r") as file:
        for line in file:
            data = line.strip()
            numbers.append(int(data))
    return numbers

# 修改为接收单个数字作为参数
def seyrogus(num):
    if num % 2 != 0:
        return int(num * 3) + 1
    elif num % 2 == 0:
        return int(num / 2)

def displayData(numbers):
    print("Original Numbers\tConverted Numbers")
    # 直接遍历列表元素,更简洁
    for num in numbers:
        print(f"{num}\t\t{seyrogus(num)}")
  
def main():
    numbers = getData()
    displayData(numbers)
 
main()

额外优化点

  • 用with语句管理文件,避免手动关闭文件时的资源泄漏问题。
  • 遍历列表时直接用for num in numbers,比通过counter索引更直观简洁。
  • getData函数中line.strip()已处理空格和换行,无需重复调用data.strip()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:55:13