【发布时间】:2022-06-10 21:54:33
【问题描述】:
我正在尝试打印一系列数字,但以下错误不断发生
Traceback (most recent call last):
File "/home/user/scripts/./a.py", line 36, in <module>
out()
File "/home/user/scripts/./a.py", line 32, in out
a = Class()
File "/home/user/scripts/./a.py", line 27, in __init__
n.var = (str(random_n))
AttributeError: 'int' object has no attribute 'var'
我不知道为什么它说“int object has no attribute var”,因为我在声明n.var = (str(random_n))时已将其更改为字符串
实际代码
import random
class Class:
def __init__(ddd):
for n in range(13):
random_n = random.randint(11, 25)
n.var = (str(random_n))
def out():
a = Class()
print(n.var)
out()
我想这样做,因为以前我是这样做的
旧代码
def numbers():
#global count
for n in range(13):
random_n = random.randint(11, 25)
#print(random_n)
for pre in range(32):
random_fixos = random.randint(67, 99)
print(str(random_n)+str(random_fixos))
for f in range(1000000):
random_numbers = random.randint(1000000, 10000000)
numeros = (str(random_ddd)+str(random_fixos)+str(random_numbers))
print(numbers)
time.sleep(1.0)
numbers()
问题在于,虽然最后一部分 (for f in range (1000000)) 随机打印数字,但第一个 (for n in range(13)) 和第二个 (for pre in range (32)) 以一种稳定的方式打印。
例如: 第一次执行
11845407780
11847790993
11845521441
11844457881
11841447069
第二次执行
18794056402
18797877007
18796405493
18799151318
18796108887
在执行的两个输出中,前四位数字不是随机打印的(第一个输出卡在1184,第二个输出卡在1887)。
据我所知,只有当其余数字达到所有可能的组合时,那些“卡住”的数字才会改变。此外,一旦我重置执行,前四位数字就会改变。
我的目标是以完全随机的方式打印数字,但考虑到我已经为他们的range 设置了什么
抱歉,问题太长了。我提前感谢任何帮助过我的人!!!
【问题讨论】:
-
我觉得与您的意图很接近的是: 1. 接受
self作为__init__的第一个参数(每个实例方法都应该这样;我不知道ddd是什么应该是),以及 2. 分配self.var = ... something ...。不过,您显然根本不了解 Python 类;这有很多问题,如果我想的话,我无法解释所有这些(因为根本问题是试图编写你不理解的代码)。你需要完成一个深入涵盖这些内容的 Python 课程或教程,StackOverflow 无法从头开始教你课程。
标签: python-3.x class random