def firstChars( s ):
for word in s:
print (s[0][0])
这就是它打印的内容:
>>> s='hello','world'
>>> firstChars(s)
h
h
如何更改此代码,以便打印出来' h'和' w'?
答案 0 :(得分:2)
s[0]
将始终是传递给函数的序列中的第一个元素。为了在上面的for
循环中使用正在检查的特定单词,请在循环中使用word
。
答案 1 :(得分:2)
word
表示元组/ iterable的每个元素。对于元组("Hello", "World")
,word
将等于" Hello"然后"世界"。要获取每个字母的第一个字母,请下标word
:word[0]
。
请注意,这不是最安全的方法,因为它会在空字符串上崩溃(因为""
没有第0个元素)。我可能会定义一个" firstLetter"如果你不能保证字符串不会为空,那么处理空字符串的情况的函数。
详细说明JL的答案,你所写的内容"罚款"因为字符串和元组都是可迭代的(如列表)。
当您撰写s[0][0]
,s[0]
评估为"您好"时,您将离开"Hello"[0]
,评估为' H& #39 ;.它输出两次,每次循环迭代一次,因为你基于元组的循环,它有2个元素。
答案 2 :(得分:1)
替代pythonic方式
s='hello','world'
print('\r\n'.join(item[0] for item in s))
h
w
答案 3 :(得分:1)
使用for word in s
循环,word
将首先指向s
的第一个元素,然后指向第二个元素等。如果解释对您没有意义,跑这个:
def each_word(s):
for word in s:
print s
s = ("hello", "wolrd")
each_word(s)
现在字符串word
的第一个字符是word[0]
,这应该足以解决您的问题。
答案 4 :(得分:1)
这很有效。现在,一点警告,它又回到另一个关于命名的评论。在Python中,将字符串与列表或元组区分开来可能非常困难。他们都迭代,他们都有长度和指数。
小心你如何命名,因为没有编译器来捕捉goofup。
def firstChars( s ):
#iterate through list/tuple passed in
for word in s:
#now, pick the first character
print (word[0])
答案 5 :(得分:1)
for word in s:
print (s[0][0])
在此代码片段中word
依次成为s
的每个元素 - s[0]
('hello'),然后s[1]
('world')。而s[0][0]
直接访问s
('h')的第一个元素的第一个元素。您希望依次访问每个元素的第一个元素。所以:
for word in s:
print (word[0])
会做你想要完成的事情。
答案 6 :(得分:1)
试试这个:
def firstChars( s ):
for word in s:
print (word[0])
在函数firstChars
中,您正确地遍历s
中的项目,但请注意,在for
块内,您应该使用word
,因为这是变量在s
中分配了当前项目。
另请注意,当您在s[0][0]
中排列多个索引时,每个索引都会更深入"进入上一个项目。因此,s[0]
引用s
中的第一项(字符串' hello'),以下[0]
引用该项目的第一个字符(&#39} ; H'。)