0

我想编写一个函数来返回一串单词中最短字符串的长度。示例:“I eat apples”将返回 1,因为“I”是短字符串。这就是我所做的,但 mincount 在每个字符串的末尾既不增加也不设置为 0。它有什么问题?

def find_short(s):
    min=99
    for i in s:
        mincount = 0
        for j in i:
            print(j)
            mincount += 1
            print(mincount)
        if (mincount < min):
            min = mincount
    return min 
4

4 回答 4

4
line = "I eat apples"
mins = min(len(word) for word in line.split())
print(mins)

line.split()将行拆分为单词列表,然后只找到最小长度

于 2017-06-10T08:39:29.267 回答
1

您可以使用min键功能:

# split the string by spaces and pick the min based on the lenght of splitted string
# Example:

string = "I eat apples"
final = min(string.split(), key = lambda x: len(x))

print(final)
# >>> I
于 2017-06-10T09:00:08.827 回答
1

确定文本中最小单词长度的函数

def lenmin(text):
    return len(min(text.split()))

lenmin("I eat apples")

这将返回 1

使用 lambda

>>> lenmin = lambda t: len(min(t.split()))
>>> lenmin("you eat apples")
2
于 2017-06-10T19:41:18.807 回答
1

如果您想要一个快速简便的解决方案,我会建议@pramod 的答案,但我会使用您的功能并向您展示发生了什么。

def find_shortest(string):
    smallest_length = 99
    for word in string.split():
        current_length = 0
        for letter in word:
            current_length += 1
        if current_length < smallest_length:
            smallest_length = min_length
    return smallest_length

变化

  • 我重命名了大多数变量以使其目的更清晰
    • 值得注意的是,该变量min已重命名。由于min已经定义为一个函数,这可能会导致问题。
  • 改为。for word in string_ for word in string.split()默认情况下split(),将字符串分隔为基于空格的列表。以前您只是简单地遍历每个字符,这是有问题的。

注意:smallest_length设置为 99 假设最小单词的长度为 99 个字符或更少。对于较大的单词,将其设置得更高。

于 2017-06-10T08:53:52.977 回答