求两个题目的代码的思路和详细解释
本帖最后由 想学py的小白 于 2023-4-11 19:42 编辑二、 假设已经执行了下列语句序列:
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} #值为列表
animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
编写函数 howMany(Dict),返回结果为字典中值的总个数(包含每个列表中的元 素个数)。如:
>>> print (howMany(animals))
又如:
>>>print(howMany({'a': , 'H': , 'L': , 'O': , 'p': , 's': [], 't': [], 'y': }) )
21
代码:
def howMany(Dict):
k = Dict.keys()
ans = 0
for i in k:
ans += len(Dict)
return (ans)
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
print(howMany(animals))
print(howMany({'a': , 'H': , 'L': , 'O': , 'p': , 's': [], 't': [], 'y': }) )
三、假定已经执行了以下语句序列:
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} #值都是列表
animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
编写函数: bigest(Dict) ,返回其值包含元素个数最多的键值。
例如:
>>> biggest(animals)
'd'
又如:
>>>biggest({'a': , 'c': , 'b': , 'd': })
'b'
代码:
def biggest(Dict):
max=-1
max_key=''
k = Dict.keys()
for i in k:
if(len(Dict)>max):
max=len(Dict)
max_key=i
return max_key
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} #值都是列表
animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
print(biggest(animals))
test={'a': , 'c': , 'b': , 'd': }
print(biggest(test)) 本帖最后由 isdkz 于 2023-4-11 20:21 编辑
这里有两个题目,我会分别解释每个题目的代码思路和详细解释。
题目二:
思路:遍历字典的键,通过键索引字典的值(列表),计算列表的长度并累加到结果中。
详细解释:
[*]定义一个函数 howMany,接收一个字典作为参数。
[*]获取字典的所有键。
[*]初始化一个变量 ans,用来存储所有列表元素的个数。
[*]遍历字典的键,通过键索引字典的值(列表),累加列表的长度到 ans。
[*]返回累加结果。
但是,原代码中存在一个错误,应该将 ans += len(Dict) 更改为 ans += len(Dict[i])。
修正后的代码如下:
def howMany(Dict):
k = Dict.keys()
ans = 0
for i in k:
ans += len(Dict)
return (ans)
题目三:
思路:遍历字典的键,通过键索引字典的值(列表),比较列表的长度,保留最长列表的键。
详细解释:
[*]定义一个函数 biggest,接收一个字典作为参数。
[*]初始化一个变量 max 为 -1,用来存储最长列表的长度。
[*]初始化一个变量 max_key 为空字符串,用来存储最长列表对应的键。
[*]获取字典的所有键。
[*]遍历字典的键,通过键索引字典的值(列表)。
[*]如果当前列表的长度大于 max,更新 max 为当前列表的长度,并将当前键赋值给 max_key。
[*]返回 max_key。
但是,原代码中存在一个错误,应该将 if(len(Dict)>max): 更改为 if(len(Dict[i])>max):,并将 max=len(Dict) 更改为 max=len(Dict])。
修正后的代码如下:
def biggest(Dict):
max=-1
max_key=''
k = Dict.keys()
for i in k:
if(len(Dict)>max):
max=len(Dict)
max_key=i
return max_key
测试代码如下:
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']} #值都是列表
animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
print(howMany(animals))
print(howMany({'a': , 'H': , 'L': , 'O': , 'p': , 's': [], 't': [], 'y': }))
print(biggest(animals))
test={'a': , 'c': ,'b': , 'd': }
print(biggest(test))
测试结果如下:
howMany(animals) 的结果为: 6
howMany({'a': , 'H': , 'L': , 'O': , 'p': , 's': [], 't': [], 'y': }) 的结果为: 21
biggest(animals) 的结果为: 'd'
biggest(test) 的结果为: 'b'
如您所见,修正后的代码已经解决了问题,并产生了正确的结果。
在这两个问题中,我们都需要遍历字典的键并访问对应的值(列表),在题目二中,我们统计列表元素的个数;
而在题目三中,我们找到最长的列表并返回其对应的键。 isdkz 发表于 2023-4-11 19:57
这里有两个题目,我会分别解释每个题目的代码思路和详细解释。
题目二:
您所说的原代码的错误和纠正之后的好像没什么区别呀?是我看错了吗 想学py的小白 发表于 2023-4-11 20:19
您所说的原代码的错误和纠正之后的好像没什么区别呀?是我看错了吗
是代码直接发上来[i]不见了,你的代码应该没有错,也是]不见了 isdkz 发表于 2023-4-11 20:22
是代码直接发上来不见了,你的代码应该没有错,也是]不见了
明白啦!感谢感谢!
页:
[1]