Python抽奖程序输入名单打印带括号及中奖校验逻辑问题求解
抽奖校验工具代码修正
核心问题说明
- 分割字符串的符号错误:原代码用中文逗号
,作为split分割符,而提示用户输入的格式是英文逗号分隔,会导致分割失败。同时split返回的是列表,直接打印整个列表就会带方括号,需要遍历列表取单个姓名输出。 - 校验逻辑完全倒置:原代码遍历中奖名单,判断整个宾客列表是否属于中奖名单,逻辑不成立,应该遍历每个输入的宾客,单独判断是否在中奖名单中。
修正后代码
import random # 随机生成中奖名单 raffle_generator = random.randint(1,4) if raffle_generator == 1: raffle_winners = ['Bob','Alice'] elif raffle_generator == 2: raffle_winners = ['Matt','Joe'] elif raffle_generator == 3: raffle_winners = ['Tim','Doug'] else: raffle_winners = ['Rick','Jim'] print('请按以下格式输入宾客名单 -> xxx,xxx,xxx.....') # 用英文逗号分割,同时去除每个姓名前后的多余空格 guests = input('>').split(',') guests = [name.strip() for name in guests] # 遍历每个宾客判断中奖情况 for guest in guests: if guest in raffle_winners: print(f'{guest} 中奖了!') else: print(f'{guest} 未中奖') # 测试用输入:Bob,Alice,Matt,Joe,Tim,Doug,Rick,Jim
优化说明
- 将原代码的多层独立if判断改为elif+else结构,减少不必要的逻辑判断
- 新增姓名去空格处理,兼容用户输入时不小心添加的前后空格
- 采用f-string格式化输出,语法更简洁易读
内容的提问来源于stack exchange,提问作者WereWolf_Hunter
相关产品推荐
相关产品推荐

