这是我的程序版本。是否有更短更简单的方法来做到这一点?
d = open('txt.txt','r')
l = d.readlines()
string = l[0]
stringsplit = string.split()
d = []
for i in stringsplit:
d.append(len(i))
e = max(d)
for j in stringsplit:
if len(j) == e:
print("The longest word is", j, "and it is", len(j),"characters long")
答案 0 :(得分:1)
您可以使用列表推导将输入转换为单个列表,然后在结果列表中使用reduce来查找最长的字符串。
f = open("input.txt", "r")
s = [y for x in f.readlines() for y in x.split()]
longest = reduce(lambda x, y: y if len(x) < len(y) else x, s, "")
print("The longest word is", longest, "and it is", len(longest),"characters long")
答案 1 :(得分:0)
您可以使用max()
内置功能:
longest = max(stringsplit, key=len)
print("The longest word is {} and it is {} characters long".format(longest, len(longest)))
但值得注意的是,stringsplit
是文件第一行中的单词列表,而不是整个文件本身。如果您希望它是所有单词,请使用stringsplit = d.read().split()