while循环满足difficoltà <= difficoltà*2条件却不退出,求修正记忆数字游戏Python代码
问题根因
- 循环条件逻辑错误:
difficoltà <= difficoltà*2是永远成立的永真式,不管变量值涨到多少,正数必然小于等于自身两倍,所以循环永远不会因为这个条件退出,你复用了同一个变量存初始目标和当前计数,没有单独保存初始设定的目标判断次数。 - 答对判断逻辑错误:所有随机数都是从
randomlist中抽取的,numero not in randomlist永远不可能成立,导致用户答对“没见过数字”的情况永远无法触发加分。 - 胜利判断逻辑错误:
check变量在循环内部每次被覆盖,循环结束后无法正确判断是否完成目标。
修正后代码(已汉化交互提示)
import random # 生成1-50不重复的随机数池 randomlist = [] for i in range(0,50): n = random.randint(1,50) if n not in randomlist: randomlist.append(n) life = 3 punti = 0 numeri_visti = [] # 读取用户设定的目标判断次数 target = int(input("你想要完成多少次数字判断? ")) while life > 0 and punti < target: numero = str(random.choice(randomlist)) print(f"当前数字:{numero}") risposta = input("你之前见过这个数字吗?输入是/否:") # 答对见过的情况 if risposta == "是" and numero in numeri_visti: punti += 1 print(f"答对了!当前得分:{punti}") # 答对没见过的情况 elif risposta == "否" and numero not in numeri_visti: numeri_visti.append(numero) punti += 1 print(f"答对了!当前得分:{punti}") # 答错扣生命值 else: life -= 1 print(f"答错了!剩余生命值:{life}") # 循环结束后判断胜负 if life > 0: print("恭喜你通关游戏,你是记忆大师!!!") else: print(f"很遗憾你输了,不要气馁,你最终获得了{punti}分!!!")
内容的提问来源于stack exchange,提问作者Mark Furlanis
相关产品推荐
相关产品推荐

