如何从文件中获取最大和最短名称?

问题描述 投票:1回答:3

我正在尝试从文件中获取最长和最短的名称并打印出来。如果两个人的名字长度相同且最大/最小,我也需要打印出来。

我尝试过的事情:

try:
    marvel_number = 0
    with open("Marvel.txt") as numbers_file:
        for line in numbers_file:
            marvel_number = marvel_number + 1
            print(len(marvel_number))

当我运行这段代码时,它给了我这个错误:

TypeError:类型为'int'的对象没有len()

这是我试图从中读取的Marvel.txt文件This is the Marvel.txt file which I am trying to read from

python python-3.x pycharm
3个回答
0
投票

以下代码将标识numbers_file中的最长行,并将其打印出来。

try:
    longest_name = ''
    with open("Marvel.txt") as numbers_file:
        for line in numbers_file:
            if len(line) > len(longest_name):
                longest_name = line
        print(longest_name)

0
投票

您可以遍历文件中的所有这些名称,将它们存储在名为names的列表中,然后根据每个项目的长度对该列表进行排序。默认情况下,Python的顺序是升序的,因此最短的名称是第一个元素,最长的名称是最后一个元素:

with open('marvel.txt', 'r') as numbers_file:
    names = sorted([line.strip() for line in numbers_file], key=len)
    print('Shortest name: ' + names[0])
    print('Longest name: ' + names[-1])

这将打印:

Shortest name: Thanos
Longest name: Black Widow

0
投票

lines = ["aaa","aa", "aaaaa", 1111,"aaaaaaa","aaa", "aaaaaaaaa", 1111,"aaa","aa", "aaaaaaaaa"]

max = 0
max_name = ""
cmax = 1

min = 100000
min_name = ""
cmin = 1

for name in lines:
    if name == max_name:
        cmax += 1
    if name == min_name:
        cmin += 1
    counter = 0
    for char in str(name):
        counter += 1
    if counter > max:
        max = counter
        max_name = name
        cmax =1
    if min > counter:
        min = counter
        min_name = name
        cmin=1


if cmax == 2:
    print(max_name)
if cmin == 2:
    print(min_name)


© www.soinside.com 2019 - 2024. All rights reserved.