如何从用户输入的列表中随机选取答案?代码输出异常求助
问题分析与解决
你的代码核心问题是把split生成的列表嵌套进了另一个列表:
input().split(',')已经直接返回包含所有选项的列表,比如输入"苹果,香蕉,橘子"会得到['苹果', '香蕉', '橘子']- 但你用
choices.append(question)把这个列表当成单个元素塞进了choices,导致choices变成[['苹果', '香蕉', '橘子']]这种嵌套结构,random.choice()自然会返回整个子列表
另外还有两个可优化的细节:
t.sleep(5000)的单位是秒,5000秒等于1小时23分钟,显然不符合正常需求,应该改成t.sleep(5)(暂停5秒)- 输入时如果选项带空格(比如"苹果, 香蕉, 橘子"),split后元素会带空格,最好用列表推导式去掉前后空白
修正后的代码
import random import time as t def choose(): # 直接用split得到选项列表,同时处理可能的空格 choices = [item.strip() for item in input('请输入你的选项(用逗号分隔):\n').split(',')] # 直接从选项列表里随机选一个 print(random.choice(choices)) # 暂停5秒(不是5000秒) t.sleep(5) choose()
关键修改点
- 删掉了多余的
choices = []和choices.append(question),直接把split处理后的结果赋值给choices - 用
item.strip()清理每个选项的前后空格,避免出现带空格的无效选项 - 把
t.sleep(5000)改成t.sleep(5),符合正常的暂停需求
内容的提问来源于stack exchange,提问作者Arcade Luke
相关产品推荐
相关产品推荐

