Python彩票号码生成器if语句失效:生成重复号码问题排查
问题分析与解决
核心问题
你的代码里有两个关键错误导致重复:
random.choices()(你写的random. Choices()多了空格且首字母大写,本身是语法错误)返回的是列表类型,比如生成数字8时,y实际是[8],而你的z里存的是单个整数。所以if y in z是在判断[8]这个列表是否存在于z的整数元素里,永远不会成立,自然检测不到重复。- 就算能检测到重复,你用
break会直接终止整个循环,而不是跳过当前重复的数继续生成下一个,逻辑完全错误。
修正后的手动循环版代码
import random i = 0 z = [] while i < 6: y = random.randint(1, 49) # 生成单个整数,而非列表 if y in z: continue # 重复就跳过,进入下一次循环 z.append(y) i += 1 print(z)
更简洁的写法
Python的random模块自带生成不重复随机样本的方法,直接用random.sample一步就能完成需求,不用自己写循环:
import random z = random.sample(range(1, 50), 6) print(z)
这个方法会从range(1,50)里随机挑选6个不重复的元素,完全符合彩票号码的生成要求。
内容的提问来源于stack exchange,提问作者Paterau Bogdan
相关产品推荐
相关产品推荐

