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

Python实现合规公司名称输入功能的代码问题求助

Python新手作业代码修正与疑问解答

用户需求

本人是Python新手,需编写代码实现以下功能:让用户输入至少3个公司名称,需满足两个条件:a) 不能输入已录入的公司名称,若重复需重新输入;b) 输入的公司必须存在对应的股票CSV文件,若不存在需重新输入。收集符合要求的公司列表后,将其传入其他模块以读取对应CSV文件的开盘价和收盘价。

原代码

from os import path
import csv

def read_company():
    companies = []

    while True:
        company = input("Enter a company")
        if company in companies:
            print("Company already entered. Enter a new one.")
        else:
            company.append(company)
        if company == False:
            company = "Company"
            if not path.exists(company + '.csv'):
                print(company + ' does not exist. Enter a new one') .format(company=company)
            else: 
                break

    return company

疑问解答

1. 修复break的错误

原代码的break逻辑完全错误:它会在第一次检测到文件存在时直接终止循环,根本无法收集到至少3个符合要求的公司。同时代码里还有个低级错误——company.append(company),字符串不能调用append方法,应该是给列表companies添加元素。

正确逻辑应该是:

  • 每次输入后先检查是否重复,重复则提示重新输入,不加入列表
  • 不重复的情况下,检查对应CSV文件是否存在,不存在则提示重新输入
  • 只有同时满足「不重复」+「文件存在」的公司,才加入列表
  • 当列表内公司数量≥3时,才终止循环

2. 是否应该使用False?

原代码里if company == False完全是错误逻辑——用户输入的是字符串,不可能等于布尔值False,这部分代码属于无效内容,直接删除即可。

修正后的完整代码

from os import path

def read_companies():
    companies = []
    # 循环直到收集到至少3个符合要求的公司
    while len(companies) < 3:
        company = input("请输入公司名称:").strip()  # 去除首尾空格,避免无效输入
        # 检查是否重复录入
        if company in companies:
            print(f"公司「{company}」已录入,请输入新的公司名称。")
            continue
        # 检查对应CSV文件是否存在
        csv_filename = f"{company}.csv"
        if not path.exists(csv_filename):
            print(f"公司「{company}」对应的{csv_filename}文件不存在,请重新输入。")
            continue
        # 符合所有条件,加入列表
        companies.append(company)
        print(f"已录入公司「{company}」,当前已完成{len(companies)}/3个。")
    
    return companies

# 测试调用,后续可将返回的companies传入其他模块处理
if __name__ == "__main__":
    valid_companies = read_companies()
    print(f"最终有效公司列表:{valid_companies}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:10:16