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

我的randrange函数触发AttributeError错误,该如何解决?

问题解决:AttributeError: 'int' object has no attribute 'randrange'

核心问题是变量名和导入的模块名重名:

  • 你先导入了random模块,接着又用random = random.randrange(0,10)把这个变量名赋值成了整数。
  • 当循环再次执行时,random已经变成int类型,自然找不到randrange(或randint)方法——这些方法只属于random模块,整数对象没有。

另外你的代码还有两处逻辑问题:

  1. 初始ans=0,第一次循环会执行,但猜数字的代码不在循环体内,导致游戏流程只能跑一次。
  2. 循环条件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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:58:08