计算一组字符串中的字母[关闭]

Posted

技术标签:

【中文标题】计算一组字符串中的字母[关闭]【英文标题】:Counting letter in a group of strings [closed] 【发布时间】:2017-09-08 14:09:44 【问题描述】:

创建一个包含每个班级成员名字的列表。然后构建一个循环,从列表中打印出同学的名字,并计算每个名字中的字母数。在循环结束时,打印名字最长的同学的名字。 例如,如果您班级中的姓名列表是 Dave、Tom、Ivan、Margaret 和 Maria,则输出应该是。

Dave 4
Tom 3
Ivan 4
Margaret 8
Maria 5
Longest Name is Margaret

我该怎么做。我需要帮助。谢谢

这是我当前的代码:

from collections import Counter 
names = ["Ryan", "Ian", "Pat", "Dom", "Louis", "Ryan", "Marisa", "Owen", "Matt", "Fines", "Jack", "Gare", "Annie", "Brett", "Cole"] 
print(names) 
for letter in names: 
    print(names.count(letter)) 

【问题讨论】:

不要让我们做你的功课。告诉我们您尝试了什么,什么失败了,也许我们可以通过这种方式帮助您。 “我该怎么做[整个家庭作业]”对于 Stack Overflow 来说不是一个合适的问题。 向我们展示您编写的代码并描述它如何达到或没有达到您的期望。 从集合导入计数器名称 = [“Ryan”、“Ian”、“Pat”、“Dom”、“Louis”、“Ryan”、“Marisa”、“Owen”、“Matt” , "Fines", "Jack", "Gare", "Annie", "Brett", "Cole"] print(names) for letter in names: print(names.count(letter)) 我试过了,它会打印名字,它会吐出一堆数字,但我不知道它在数什么 【参考方案1】:

您的打印命令错误!

from collections import Counter
names = ["Ryan", "Ian", "Pat", "Dom", "Louis", "Ryan", "Marisa", "Owen", "Matt", "Fines", "Jack", "Gare", "Annie", "Brett", "Cole"]
print(names)
for letter in names:
    print((letter))

【讨论】:

这不算什么。 OP 在我回答后更新他的问题... 关于从头开始计数的问题。 @ScottHunter 谢谢,现在意识到了:)!【参考方案2】:

len() 返回括号中任何内容的长度,如果是 len(your_list),它将返回列表中元素的数量

max(your_list, key=len) 这里的重要部分是“key=len”,否则 max(your_list) 将根据 python 排序方法返回最大值,选择一个字母最接近字母表末尾的单词, z 例如。 key=len 反而让它返回最长的元素

names = ["Ryan", "Ian", "Pat", "Dom", "Louis", "Ryan", "Marisa", "Owen",
         "Matt", "Fines", "Jack", "Gare", "Annie", "Brett", "Cole"]
for name in names:
    print (name,' ',len(name))
longest = max(names, key=len)
print ('\nLongest name: ',longest,' with ',len(longest),' letters.')

打印:

Ryan   4
Ian   3
Pat   3
Dom   3
Louis   5
Ryan   4
Marisa   6
Owen   4
Matt   4
Fines   5
Jack   4
Gare   4
Annie   5
Brett   5
Cole   4

Longest name:  Marisa  with  6  letters.

或者,如果您想存储信息以供以后使用,我想您可以使用字典来执行此操作,并且每次迭代列表中的名称时,检查它的长度与字典中名称的长度。

在字典中查找值时,您可以通过通常用方括号括起来的“键”来执行此操作,如果键是变量,您可以这样做:

my_dictionary =  #create an empty dictionary
variable = ('mystring')
my_dictionary [variable] = 10
print (my_dictionary)

打印:

'mystring': 10

但是如果你不使用变量来添加字典键,而是使用字符串,你必须像这样写键

my_dictionary ['mystring'] 

或使用整数作为键:

my_dictionary [1]

这里是你的代码:

longest = 'name': '', 'length': 0

for name in names:
    print (name,' ',len(name))
    if len(name) > longest ['length']:
        longest ['name'] = name
        longest ['length'] = len(name)

print ('\nLongest name: ',longest['name'],
       ' with ',longest['length'],' letters.')

【讨论】:

你是最棒的。谢谢

以上是关于计算一组字符串中的字母[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在一组特定字符中的每一个之后将字母变为大写

C++ - 如何有效地找出向量中的任何字符串是不是可以由一组字母组合而成

将字符串中的 int 转换为字母; [关闭]

用一组字符替换字符串中的“#”,给出所有可能的字符串组合[关闭]

检查字符串中的一个字符是数字还是字母[Python] [关闭]

使用 SQL 按字母顺序重新排列字符串中的字符 [关闭]