Python实现赛马模拟器随机累加字符串功能异常求助
赛马模拟器代码问题排查
核心问题
- 字符串为Python不可变类型,原代码
random.choice((h1, h2, h3, h4, h5))取到的是字符串副本,给Horse_Select追加=的操作完全不会修改h1到h5的原始值,所有赛马进度一直为空,无法推进比赛。 - 注释的终止判断逻辑存在语法错误:
len(h1) or len(h2) or ... >=15的执行逻辑是先判断每个长度的布尔值,只要任意赛马长度不为0就会触发终止,不符合「任意长度达15结束」的需求,且该逻辑被注释后当前代码是死循环。
修正后可运行代码
import random import os from time import sleep # 用列表存储赛马进度,方便修改元素值 horses = ['', '', '', '', ''] MAX_LENGTH = 15 while True: os.system('clear') # 随机选择赛马索引,直接修改对应位置的进度 selected_idx = random.randint(0, 4) horses[selected_idx] += '=' # 打印所有赛马进度,带编号方便识别 for num, progress in enumerate(horses, 1): print(f"赛马{num}: {progress}") # 正确终止判断:任意赛马进度达到最大值即结束 if any(len(p) >= MAX_LENGTH for p in horses): win_num = [i for i, p in enumerate(horses, 1) if len(p)>=MAX_LENGTH][0] print(f"\n比赛结束,赛马{win_num}获胜!") break sleep(0.5)
内容的提问来源于stack exchange,提问作者Shimis
相关产品推荐
相关产品推荐

