我的randrange函数触发AttributeError错误,该如何解决?
问题解决:AttributeError: 'int' object has no attribute 'randrange'
核心问题是变量名和导入的模块名重名:
- 你先导入了
random模块,接着又用random = random.randrange(0,10)把这个变量名赋值成了整数。 - 当循环再次执行时,
random已经变成int类型,自然找不到randrange(或randint)方法——这些方法只属于random模块,整数对象没有。
另外你的代码还有两处逻辑问题:
- 初始
ans=0,第一次循环会执行,但猜数字的代码不在循环体内,导致游戏流程只能跑一次。 - 循环条件
ans!='N' or ans!='n'逻辑错误,应该用and,否则不管输入什么都会继续循环。
修正后的完整代码
import random ans = 'Y' # 初始值设为Y,启动第一次游戏 while ans != 'N' and ans != 'n': # 换变量名存随机数,避免覆盖模块 secret_num = random.randrange(0, 10) chances = 0 guess = int(input("Enter your guess: ")) while secret_num != guess and chances < 2: chances += 1 guess = int(input("Try again: ")) if chances == 2: print(f"Game over!! The number is {secret_num}") if secret_num == guess: print("You won!!") ans = input("Do you want to play again? N for no and Y for yes: ")
关键修改点
- 将存储随机数的变量从
random改为secret_num,避免覆盖导入的模块。 - 调整外层循环条件为
ans != 'N' and ans != 'n',符合“输入N/n才退出”的逻辑。 - 把整个猜数字逻辑放到外层循环内,支持多次游戏。
- 将
chances!=2改为chances < 2,确保玩家拥有3次猜测机会(初始0,加两次后到2,刚好用完)。
内容的提问来源于stack exchange,提问作者Malek M. Gebreel-3C
相关产品推荐
相关产品推荐

