如何实现Python程序从CSV文件中随机输出指定医学院的面试问题
解决方案:针对特定医学院生成随机面试问题
你的现有代码已经完成了数据读取和基础处理,但核心问题是它会遍历所有医学院输出问题,而不是聚焦用户选择的特定学院。我们可以调整代码,让它先获取用户的选择,再精准筛选对应学院的问题池,最后随机抽取一道题。
修改后的完整代码
import random import pandas as pd csv_file = "question_data.csv" # 读取CSV并指定列名,同时处理空值 df = pd.read_csv(csv_file, names=["College", "Question"]) modified_df = df.dropna() # 获取所有可用的医学院列表(去重后),方便用户选择 available_colleges = modified_df["College"].unique().tolist() def generate_random_question(selected_college): # 筛选出用户选择的医学院对应的所有问题 college_questions = modified_df[modified_df["College"] == selected_college]["Question"] # 处理找不到对应学院的情况 if college_questions.empty: print(f"抱歉,没有找到关于「{selected_college}」的面试问题。") return # 随机抽取一道问题(用random.randint生成随机种子,保证每次结果不同) random_question = college_questions.sample(n=1, random_state=random.randint(1, 1000)).iloc[0] # 友好输出结果 print(f"\n来自「{selected_college}」的随机面试问题:") print(random_question) # 让用户选择医学院(用序号选择避免拼写错误) print("可选的医学院:") for idx, college in enumerate(available_colleges, 1): print(f"{idx}. {college}") # 处理用户输入 try: choice = int(input("\n请输入对应的序号选择医学院:")) if 1 <= choice <= len(available_colleges): selected_college = available_colleges[choice-1] generate_random_question(selected_college) else: print("输入的序号无效,请重新运行程序并选择正确范围的序号。") except ValueError: print("请输入有效的数字序号,不要输入字母或其他字符。")
关键改动说明
- 获取可用医学院列表:通过
unique().tolist()提取所有不重复的医学院名称,展示给用户选择,避免手动输入时的拼写错误(比如长名称的医学院很容易输错)。 - 新增精准筛选逻辑:在
generate_random_question函数中,用modified_df[modified_df["College"] == selected_college]精准定位用户指定学院的所有问题。 - 异常情况处理:加入
college_questions.empty判断,如果用户输入的学院不存在,会给出友好提示,避免程序报错。 - 随机化优化:把固定的
random_state=2换成random.randint(1,1000),这样每次运行都会得到不同的随机问题,而不是固定的那一道。 - 结果格式化:用
iloc[0]把Series类型的结果转换成纯字符串,打印出来更整洁,不会显示多余的索引信息。
运行示例
当用户选择序号1(对应Baylor College of Medicine),程序可能输出:
来自「Baylor College of Medicine」的随机面试问题:
What do you think is the biggest problem in today's healthcare?
内容的提问来源于stack exchange,提问作者HDC2898
相关产品推荐
相关产品推荐

