You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编写彩票中奖模拟程序时While循环无限运行入门问题求助

彩票模拟代码问题修复方案

核心错误点

  • 类型不匹配:input() 函数默认返回字符串类型,你存入 chosen 列表的是字符串,而 random.randint() 生成的是整数,drawn_numbers[i] in chosen 的判断永远为假,count 永远无法累加到3,因此陷入死循环。
  • 计数逻辑错误:你使用的 count 是全局变量,未在每次开奖前重置,即使类型问题修复,只要累计命中3次数字就会退出,不需要同一次开奖全部命中,不符合头奖规则。
  • 匹配规则错误:头奖要求3个数字按顺序完全匹配,你当前的逻辑只要数字存在于选中列表就算命中,不需要位置对应,和需求规则不符。

修复后代码

import random

# 接收输入时转换为整数
chosen = []
for i in range(3):
    num = int(input("Please input your lucky number: "))
    chosen.append(num)

week_count = 0

print(f"Your chosen numbers are: {chosen[0]}, {chosen[1]}, {chosen[2]}")

while True:
    # 生成当期开奖号码
    drawn_numbers = [random.randint(1, 30) for _ in range(3)]
    week_count += 1
    # 按顺序匹配,完全一致则中奖
    if drawn_numbers == chosen:
        break

print(f"It took you {week_count} weeks to win.")

优化说明

  • 输入阶段直接将用户输入转换为整数,避免类型不匹配问题
  • 取消冗余的count变量,直接对比两个列表是否完全相等,天然满足顺序一致的要求
  • 每次循环直接生成当期开奖列表,不需要额外清空操作,逻辑更简洁
  • 当列表完全相等时跳出循环,返回累计的周数,完全符合需求规则

内容的提问来源于stack exchange,提问作者zаѓатhᵾѕтѓа

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:45:04