想学py的小白 发表于 2023-4-11 19:41:26

求两个题目的代码的思路和详细解释

本帖最后由 想学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 19:57:39

本帖最后由 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'

如您所见,修正后的代码已经解决了问题,并产生了正确的结果。

在这两个问题中,我们都需要遍历字典的键并访问对应的值(列表),在题目二中,我们统计列表元素的个数;

而在题目三中,我们找到最长的列表并返回其对应的键。

想学py的小白 发表于 2023-4-11 20:19:54

isdkz 发表于 2023-4-11 19:57
这里有两个题目,我会分别解释每个题目的代码思路和详细解释。

题目二:


您所说的原代码的错误和纠正之后的好像没什么区别呀?是我看错了吗

isdkz 发表于 2023-4-11 20:22:16

想学py的小白 发表于 2023-4-11 20:19
您所说的原代码的错误和纠正之后的好像没什么区别呀?是我看错了吗

是代码直接发上来[i]不见了,你的代码应该没有错,也是]不见了

想学py的小白 发表于 2023-4-11 20:24:57

isdkz 发表于 2023-4-11 20:22
是代码直接发上来不见了,你的代码应该没有错,也是]不见了

明白啦!感谢感谢!
页: [1]
查看完整版本: 求两个题目的代码的思路和详细解释