我是学习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)
我正在寻找提供不同单词及其长度的代码。
我搞砸了什么?
答案 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])