编写程序统计名字中的字母数量
写一个完整的Python程序,让用户输入他们的名字,然后程序会输出这个名字的字符数,并逐个列出这些字母。
当我运行这个程序时,我希望它的表现是这样的:
Please enter your name: Micheal
Your name has 7 characters in it
The 1 letter in your name is M
The 2 letter in your name is i
The 3 letter in your name is c
The 4 letter in your name is h
The 5 letter in your name is e
The 6 letter in your name is a
the 7 letter in your name is l
我需要这个程序的代码,并且程序应该能够在你输入任何名字时运行。我已经知道如何输入名字并使用len函数来计算名字中有多少个字符,但我不知道怎么做后面的部分。我使用的是Windows上的Python 2.7.6版本,所以我希望代码能适应这个版本。
这是我目前的代码:
name=raw_input("Please enter your name: ")
print
print"Your name has", len(name),"characters in it"
print
for char in name:
print char
2 个回答
0
我觉得你在找的是这个enumerate
函数。
enumerate
接收一个可迭代对象(比如字符串)作为参数,然后返回一个迭代器,这个迭代器会生成index, item
的元组。举个例子,enumerate("Michael")
会生成(0, "M"), (1, "i"), (2, "c")
这样的结果,听起来正好符合你的需求(如果你不想从索引0开始,可以传一个start
值)。你可以在循环中直接解包这些元组的值,像这样:for index, char in enumerate(name, start=1):
。
另外一个建议是使用str.format
来准备你的输出,而不是在print
语句中简单地用逗号把项目连接起来。你可能想要的格式是"The {} letter in your name is {}".format(index, char)
,或者类似的东西。
2
要获取一个可迭代对象中每个元素的值和索引,可以使用enumerate()
这个内置函数。这个函数会把每个元素和它的位置(索引)配对,然后把这些配对放进一个list
里,配对的形式是tuple
。
示例:
>>> for index, char in enumerate(name):
... print('The {} item in your name is {}'.format(i+1, item))
...
The 1 item in your name is M
The 2 item in your name is i
The 3 item in your name is c
The 4 item in your name is h
The 5 item in your name is a
The 6 item in your name is e
The 7 item in your name is l