2017-02-17 108 views
-1

for循环中的语法是什么意思?Python for循环的语法为什么

我特别迷茫什么是

for X 

在下面的例子,为什么我使用“字母”是什么意思?是否因为'函数'是函数执行时我想返回的东西的单个组件?

我花了几个小时在函数内切换单词'letter','line','row'和'row_index'的位置以获得有效的工作。

我必须写作为一项任务的每一个函数,我都有同样的困惑。

def make_str_from_row(board, row_index): 
""" (list of list of str, int) -> str 

Return the characters from the row of the board with index row_index 
as a single string. 

>>> make_str_from_row([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 0) 
'ANTT' 
""" 

line = '' 

for letter in board[row_index]: 
     line = line + letter 

return line 
+0

为字母,打印信件中的每个字母。 '在“abcdef ...”中输入字母:print(letter)' – Li357

+0

https://opentechschool.github.io/python-beginners/en/loops.html – Alexander

+0

您可以使用'line + = letter'作为短手对于'line = line + letter'。另外我认为值得一提的是,这个方法可以用'''.join(board [row_index])'来完成。它会加入board [row_index]的每个字母,在每个字母之间加上''''(无)。 – Alexander

回答

0

试着去思考“for x in letter”为“用于在信每隔x” 例如,如果运行在Python下面的代码:

small_list = ["A","B","C","D"] 
for x in small_list: 
    print x 

You will get the output: 
A 
B 
C 
D 
None 

上面的代码只是检查在列表“small_list” EVERY元件和印刷的相应的值。

1

语法与用于存在测试的语法相同;

letter = 'a' 
mystring = 'Hello World' 
if letter in mystring: 
    print("Letter "+letter+" in "+mystring) 
else: 
    print("Letter "+letter+" not in "+mystring) 

在这个例子中,你正在问口译员一个问题;如果letter(是)在mystring则打印“该字母在我的字符串中”,否则打印“该字母不在我的字符串中”。

一个for循环要求除了字母列表/串/容器同样的问题; for(every)letter in board[row_index]连接行和字母。

我学到这个的方式来自我过去使用boost.foreach循环的经验。如果你曾经使用它们,你会明白,循环会自动迭代容器中的每个项目,给定一个容器和容器中的项目的缓冲区;

std::string hello = "Hello world!"; 

BOOST_FOREACH(char ch, hello) 
{ 
    std::cout << ch; // Print each character individually 
} 

正如你所看到的,boost.foreach环和Python的for循环在功能上等同。 (除此之外,你会发现Python的for循环要灵活得多,Python的for循环会解开元组的列表并支持分支以防止循环被破坏)

+0

第二个代码中使用的语言 – kouty

+0

@kouty - 这就是C++。 – TigerhawkT3