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
相关产品推荐
相关产品推荐

