boys=("david","andrew","ted","tom","james","nicholas","kyle","michael","mark")
startn=()
uname=raw_input("What is your first name?: ")
begin=uname[0]
for name2 in range(len(boys)):
if begin== boys[name[0]]:
startn+=(boys[name2],)
print startn,"start with",begin
else:
print "Sorry there are no names that begin with", begin
您在
访问boys
时使用name[0]
作为索引。您想使用name2
:
if begin == boys[name2][0]:
startn += boys[name2]
或者,您可以只遍历boys
数组本身:
for boy_name in boys:
boy_name[0] == begin:
startn += boy_name
(我不完全确定你在用startn
做什么,因为你没有包含那段代码。
这里有一些你可以改进的地方。让我们看看如何清理它并使其正常工作。
for name2 in range(len(boys)):
您不需要range()
或len()
通话。如果要遍历名称,可以直接使用 for 循环进行迭代。
for name in boys:
现在在你的循环中,你有两个变量。您有输入的名称uname
和循环name
中的当前名称。您可以通过比较uname[0]
和name[0]
来轻松比较每个字符的第一个字符
作为实现这一目标的pythonic方式,请使用str.startswith()
:
>>> boys=("david","andrew","ted","tom","james","nicholas","kyle","michael","mark")
>>> boys[1].startswith('a')
True
>>> boys[2].startswith('b')
False
所以你的代码必须是:
boys=("david","andrew","ted","tom","james","nicholas","kyle","michael","mark")
startn=()
uname=raw_input("What is your first name?: ")
for name2 in boys:
if name2.startswith(uname[0]):
startn+=(boys[name2],)
print startn,"start with",begin
else:
print "Sorry there are no names that begin with", begin