查找用户在Python中输入的单词长度

时间:2018-10-04 15:45:45

标签: python python-3.x

我是学习Python的新手。我想到了编写代码。

我希望用户输入一些单词,并且我希望程序给出单词的长度作为输出。

words = [raw_input("Enter a name: ")]

def len_name(words):
    for x in words:
        print(x, len(x))

len_name(words)

现在,当用户输入一个单词作为输入(例如飞机)时,程序将给出以下输出,这是正确的。

Enter a name: aeroplane
('aeroplane', 9)

但是,如果用户输入两个单词作为输出,则会显示以下内容:

Enter a name: aeroplane, fish
('aeroplane, fish', 15)

我正在寻找提供不同单词及其长度的代码。

我搞砸了什么?

3 个答案:

答案 0 :(得分:2)

words = [raw_input("Enter a name: ")]接受输入并将其作为单个元素放置在list中:['aeroplane, fish']。为了获得['aeroplane', 'fish'],您需要split输入带有适当的定界符:

words = raw_input("Enter a name: ").split(', ')
# or a little more robustly wrt white space:
words = [w.strip() for w in raw_input("Enter a name: ").split(',')]

答案 1 :(得分:0)

您当前正在一行中阅读,因此它不在乎空格或常见的分隔词等。

因此您需要使用split将读入的行拆分为单词

答案 2 :(得分:0)

当前代码的一个简单解决方法是,不为多个单词创建列表,因为它们都是一个条目,然后在将其传递给.split(', ')len_name()将该条目输入,然后执行您曾经与for i in x在一起。函数也应该返回一个值,而不仅仅是打印。修改后的版本为:

def len_name(x):
    lista = []
    for i in x.split(', '):
        lista.append((i, len(i)))
    return lista

words = input('Enter a name: ')
word_len = len_name(words)
for i in word_len:
    print(*i)
Enter a name: vash, the, stampede
vash 4
the 3
stampede 8

或使用列表理解和循环进行打印

word_len = [(i, len(i)) for i in input('Enter a name: ').split(', ')]
for i in word_len:
    print(i[0], i[1])