2017-02-17 8 views
-1

Что означает синтаксис в цикле for на простом английском языке?Почему этот синтаксис для цикла Python для цикла

Я особенно смущает то, что подразумевается под

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

Попробуйте подумать о «для 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» и распечатываются соответствующие значения.

1

Синтаксис такой же, как тот, который используется для тестирования существования;

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

В этом примере вы задаете вопрос переводчику; если letter (есть) в mystring затем напечатайте «письмо в моей строке», в противном случае напечатайте «письмо не в моей строке».

A for цикл задает тот же вопрос, за исключением каждый письмо в списке/строка/контейнер; для (каждый) letter в board[row_index] конкатенировать линию и письмо.

Способ, которым я узнал это из моего прошлого опыта с boost.foreach. Если вы когда-либо использовали их, вы поймете, что цикл будет автоматически перебирать каждый элемент в контейнере, заданном контейнером, и буфер для элементов в контейнере;

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

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

Как вы можете видеть, цикл boost.foreach и цикл for Python функционально эквивалентны. (В стороне вы обнаружите, что петли Python для более гибких систем. Питоны для Python будут распаковывать списки кортежей и поддержки ветвления в случае, если цикл не разбит)

+0

Какой язык используется во втором коде – kouty

+0

@ kouty - Это C++. – TigerhawkT3