python - 用属性和功能提问
问题描述
这是我的代码:
class People:
def __repr__(self):
return f"A('{self.name}', {self.age})"
def __init__(self, name, age):
self.name = name
self.age = age
def sortlist():
people = []
file = open('people.txt', 'r').readlines()
for k in file:
k = k.split()
people.append(People(k[0], float(k[1])))
people.sort(key=lambda c: (c.age, c.name))
g = 0
for g in range(len(people)):
people[g].height = g + 1
return people
def question_height():
for i in sortlist():
print(random(i[0]))
def question_name():
for i in sortlist():
for i in range(0,104):
print(random.choice(i.name))
代码的最后一部分(在返回人员之后)没有按我想要的方式工作。我希望 question_height 函数从 height 属性中选择一个随机数,并且 question_name 函数从 name 属性中选择一个随机名称。
有没有人知道我可以做些什么来使它工作?
解决方案
你只对random.choice
功能很好。它需要一系列项目,并随机选择其中一个。首先,您必须将People
对象列表转换为名称或高度列表。然后,只需将列表传递给random.choice
函数。
def question_height():
all_heights = [person.height for person in sortlist()]
print(random.choice(all_heights))
def question_name():
all_names = [person.name for person in sortlist()]
print(random.choice(all_names))
另一种选择是将 Person 对象列表直接传递给random.choice
然后打印其名称或高度。
def get_random_person(people):
return random.choice(people)
def question_height():
people = sortlist()
random_person = get_random_person(people)
print(random_person.height)
def question_name():
people = sortlist()
random_person = get_random_person(people)
print(random_person.name)
推荐阅读
- amazon-cloudwatch - 如何将弹性 beantalk 的自定义日志流式传输到 Cloudwatch?
- ceph - 头孢。什么 osd 选择从它实际返回数据(ceph 逻辑)
- c# - ASP.NET MVC Core - 通过 HttpClient 使用 API
- jsf - 在 af:selectItems 中显示子列表
- ios - TestFlight - 测试相同版本的新版本
- cucumber - Gherkin/ Cucumber - 如何从数据表中的单元格引用到另一个数据表中的行
- php - 从 ASID 迁移 Facebook PSID
- visual-studio - Xamarin - 我们如何在针对不同版本框架的应用程序之间轻松切换
- javascript - PHP 包含 != JS 加载
- c# - 使用 automapper 配置文件将 2 种不同类型映射为一种