我参加了一个编程课并完成了我们的第一个任务。我理解它应该如何运作,但显然我没有找到正确的术语来寻求帮助(而且这本书也没那么无用)。
分配是获取提供的数据集(名称和数字)并使用它执行一些操作和计算。
我能够将名字列入一个列表,并且知道我给出的命令的一般格式,但具体情况正在躲避我。我知道您将数字称为名称[0] [1],名称[1] [1]等,但不是如何仅仅引用正在更改的记录。例如,我们必须让程序检查名称是否以Q或更晚的字母开头;如果是,我们将与该名称相关联的数字翻倍。
这是我到目前为止用的???表明我知道某些事情发生了什么,但不确定它被称为搜索它的内容。
它的家庭作业,所以我并不是真的在寻找答案,而是指导找出正确的术语来搜索我的答案。我已经在网站上找到了一些东西(比如统计功能),但是却无法找到书中没有提到的所有内容。
names = [("Jack",456),("Kayden",355),("Randy",765),("Lisa",635),("Devin",358),("LaWanda",452),("William",308),("Patrcia",256)]
length = len(names)
count = 0
while True
count < length:
if ??? > "Q" # checks if first letter of name is greater than Q
??? # doubles number associated with name
count += 1
print(names) # self-check
numberNames = names # creates new list
import statistics
mean = statistics.mean(???)
median = statistics.median(???)
print("Mean value: {0:.2f}".format(mean))
alphaNames = sorted(numberNames) # sorts names list by name and creates new list
print(alphaNames)
答案 0 :(得分:1)
首先,你需要了解你的名单。为此,请使用for
循环:
for person in names:
print(person)
但名称是元组列表,因此您需要通过访问元组的第一项来获取人名。您就像使用列表一样执行此操作
name = person[0]
score = person[1]
最后要获得角色的ASCII code,请使用ord()函数。如果名称以Q或以上开头,那将会有所帮助。
print(ord('A'))
print(ord('Q'))
print(ord('R'))
这应该足以让你开始使用。
答案 1 :(得分:1)
我看到你问题的一些部分,所以我会在回复中尝试将它们分开。
希望这会帮助您使用此处的语法。与list
类似,str
也支持使用[]
语法通过索引进行元素访问。
$ names = [("Jack",456),("Kayden",355)]
$ names[0]
('Jack', 456)
$ names[0][0]
'Jack'
$ names[0][0][0]
'J'
$ names[0][0][0] < 'Q'
True
$ names[0][0][0] > 'Q'
False
$ names[0][1]
456
$ names[0][1] * 2
912
我们正在尝试更新与名称相关联的值。
在我之前的代码示例的主题中 - 也就是说,我们希望更新tuple
中list
中存储在索引0处的names
的索引1处的值
但是,tuple
是不可变的所以如果我们想要使用您正在使用的数据结构,我们必须有点棘手。
$ names = [("Jack",456), ("Kayden", 355)]
$ names[0]
('Jack', 456)
$ tpl = names[0]
$ tpl = (tpl[0], tpl[1] * 2)
$ tpl
('Jack', 912)
$ names[0] = tpl
$ names
[('Jack', 912), ('Kayden', 355)]
我们需要为整个列表执行此操作,看起来您已经使用while
循环进行了此操作。用于索引列表的计数器变量名为count
,因此只需使用它来索引特定元组,例如:names[count][0]
以计算 th 名称或names[count][1]
计算 号码。
statistics
计算mean
和median
如果您想知道如何使用该模块,我建议您查看该模块的文档。以下是mean
的示例:
<强>平均(数据)强>
返回数据的算术算术平均值。
$ mean([1, 2, 3, 4, 4])
2.8
希望这些示例可以帮助您了解继续执行作业的语法,尽管这可能会成为一个长时间的讨论。
您帖子的标题是&#34;需要帮助处理列表中的列表&#34; ...好吧,您的代码示例使用list
tuple
s
$ names = [("Jack",456),("Kayden",355)]
$ type(names)
<class 'list'>
$ type(names[0])
<class 'tuple'>
$ names = [["Jack",456], ["Kayden", 355]]
$ type(names)
<class 'list'>
$ type(names[0])
<class 'list'>
注意[]
和()
如果您可以自由地构建数据,那么我建议使用dict
(读取:字典)。
答案 2 :(得分:0)
我知道您将数字称为名称[0] [1],名称[1] [1]等,但 不是如何仅仅引用正在改变的记录。对于 例如,我们必须让程序检查名称是否以a开头 Q或以后的字母;如果是这样,我们将相关数量加倍 用那个名字。
目前还不完全清楚您在此作业中还需要做些什么,但对于上述问题,请在names
列表中引用 i “正在更改的记录” ,只需使用names[i]
即可。因此,如果要访问names
中的第一条记录,只需使用names[0]
,因为Python中的索引从零开始。
由于列表中的每个元素都是tuple
(也可以编入索引),因此使用names[0][0]
和names[0][1]
等结构可以为元组中的值编制索引,就像您一样指出。
如果您尝试迭代每个名称并检查它是否以“Q”开头,我不确定您使用while True
的原因。似乎for
循环会更好,除非你的班级尚未到达那里。
至于检查第一个字母是否为'Q',str
(字符串)对象的索引与列表和元组类似。例如,要访问字符串中的第一个字母,请参阅以下内容:
>>> my_string = 'Hello'
>>> my_string[0]
'H'
如果您提供更多信息,我们也可以帮助您指导statistics
件。但我首先建议你得到一些关于均值和中位数的背景(如果你不熟悉的话)。