Python实现Jackpot数字首位猜测功能问题求助
修复Jackpot首位数字猜测代码
需要编写jackpot_computer.ipynb实现电脑按顺序猜测用户输入的3位Jackpot数字,当前仅需完成首位数字的猜测功能:随机生成数字直到猜中首位,将猜中的数字加入listn。但现有代码无法正常运行,原尝试代码如下:
import random digits= int(input("How many digits do you want your jackpot number to have? ")) jackpotnumber= str(input("What is the lucky number? ")) if digits == 0: print("Choose your digits above zero... ") if jackpotnumber == 0: print("Choose your jackpotnumber with a value above 0..") if len(jackpotnumber) != digits: print("Match your digits and jackpotnumber correctly...") listj= [int(jackpotnumber)] listn= [] guess= random.randrange(9) while guess != listj[0]: guess= random.randrange(9) if guess == listj[0]: listn.append(guess) print(listn)
原代码问题分析
listj = [int(jackpotnumber)]错误地将完整Jackpot数字转为整数存入列表,导致listj[0]是多位数,而guess是0-8的单个数字,永远无法匹配。random.randrange(9)仅生成0-8的数字,遗漏了数字9,无法覆盖所有单个数字可能性。jackpotnumber == 0判断无效,jackpotnumber是字符串类型,与整数0比较永远为False。- 循环逻辑冗余,重复判断导致代码效率低且易出错。
修复后的代码
import random # 获取用户输入 digits = int(input("请输入Jackpot数字的位数:")) jackpotnumber = str(input("请输入幸运数字:")) # 输入合法性检查 if digits <= 0: print("位数必须大于0...") elif len(jackpotnumber) != digits: print("输入的数字位数与指定位数不匹配...") else: # 提取首位目标数字 target_first_digit = int(jackpotnumber[0]) listn = [] # 循环猜测直到命中首位数字 while True: guess = random.randrange(10) # 生成0-9的随机单个数字 if guess == target_first_digit: listn.append(guess) print(f"猜中首位数字!结果列表:{listn}") break
关键修改说明
- 修正输入判断逻辑,用
elif串联检查条件,避免无效代码执行。 - 提取Jackpot数字的首位字符转为整数,确保与猜测的单个数字类型匹配。
- 改用
random.randrange(10)生成0-9的完整单个数字,覆盖所有可能情况。 - 简化循环结构,猜中后直接添加结果并跳出循环,逻辑更清晰高效。
内容的提问来源于stack exchange,提问作者sammiejansen
相关产品推荐
相关产品推荐

