一个专业 有 三个班级,每个班级生成随机 1-3名学生,最后得到的三个班级对象的地址如下,为什么每个班级的学生都是一样的,有什么办法 可以生成随机班级 和 随机学生?
import random
# 学生
class Student:
ID = ''
name = ''
def __init__(self):
pass
pass
# 班级
class Group:
stuArr = {}
def __init__(self):
x = random.randint(1,3)
for i in range(x):
self.stuArr['学生'+str(i)] = Student()
pass
pass
# 专业
class Professional:
groArr = {}
def __init__(self):
r = 3
for i in range(r):
self.groArr['班级'+str(i)] = Group()
pass
pass
if __name__ == '__main__':
p = Professional()
for groValue in p.groArr.values():
print()
print(groValue.stuArr)
{'学生0': <__main__.Student object at 0x000002725947D1C0>, '学生1': <__main__.Student object at 0x0000027259482A60>, '学生2': <__main__.Student object at 0x0000027259482F70>}
{'学生0': <__main__.Student object at 0x000002725947D1C0>, '学生1': <__main__.Student object at 0x0000027259482A60>, '学生2': <__main__.Student object at 0x0000027259482F70>}
{'学生0': <__main__.Student object at 0x000002725947D1C0>, '学生1': <__main__.Student object at 0x0000027259482A60>, '学生2': <__main__.Student object at 0x0000027259482F70>}
import random
# 学生
class Student:
def __init__(self,id,name):
self.ID = id
self.name = name
pass
pass
# 班级
class Group:
def __init__(self):
self.stuArr = {}
x = random.randint(1,3)
for i in range(x):
self.stuArr['学生'+str(i)] = Student(i,'学生'+str(i))
pass
pass
# 专业
class Professional:
def __init__(self):
self.groArr = {}
r = 3
for i in range(r):
self.groArr['班级'+str(i)] = Group()
pass
pass
if __name__ == '__main__':
p = Professional()
for groValue in p.groArr.values():
print()
print(groValue.stuArr)
你看一下这个,如果没有灵感我在给你写
```python
from random import randint
class_orrered = [[], [], []]
teachers = ['教师A','教师B','教师C','教师D','教师E','教师F','教师G','教师H']
for teacher in teachers:
class_orrered[randint(0,2)].append(teacher)
for j in range(len(class_orrered)):
print('办公室',(j+1),'的人数为:',len(class_orrered[j]),sep='')
for teacher in class_orrered[j]:
print(teacher,end=" ")
print()
```
把类属性改为实例属性就行了, stuArr = {} 改为 self.stuArr = {} 放到init里
import random
# 学生
class Student:
ID = ''
name = ''
def __init__(self):
pass
pass
# 班级
class Group:
def __init__(self):
self.stuArr = {}
x = random.randint(1,3)
for i in range(x):
self.stuArr['学生'+str(i)] = Student()
pass
pass
# 专业
class Professional:
groArr = {}
def __init__(self):
r = 3
for i in range(r):
self.groArr['班级'+str(i)] = Group()
pass
pass
if __name__ == '__main__':
p = Professional()
for groValue in p.groArr.values():
print()
print(groValue.stuArr)
基于 python 实现的中小学随机化分班算法
https://blog.csdn.net/jnxxhzz/article/details/108637551
可以给班级和学生订好序号,用random方法