Нужно ли инициализировать значения для работы в циклах for? - PullRequest
0 голосов
/ 04 октября 2018

Я изучаю c ++, и наш профессор хочет, чтобы мы поняли, будут ли изученные вещи работать или не работать на других языках.

Будет ли следующий код на python выводить: «Я люблю свою собаку»... "(для каждого экземпляра массива) И" моя любимая собака - джек "или просто последний?

pets = ['flufffy', "jack", 'larry']
for a in pets:
    print "I love my dog %s" % a
print "My favourite dog is %s" % pets[1]

в c ++, если a не был объявлен, цикл не будет компилироваться / выполнятьсяправильно, если ми правильно.

1 Ответ

0 голосов
/ 04 октября 2018

В Python присваивание включает в себя неявное объявление (просто объявление означает только «имя существует» и не вызывает статический тип).

for a in pets:

работает просто отлично (поэтому все строкивы ожидаете, что напечатаны, цикл не пропускается по той причине, на которую вы рассчитываете), потому что цикл for присваивает a, неявно объявляя его.Это не похоже на C ++, где требуется объявление типа std::string a (до или в цикле) или auto a (в цикле), чтобы объявить, что a существует с известным типом.

Для ясности, C ++ требует, чтобы a был объявлен только (и это могло бы быть сделано в самом цикле, например, for (const auto& a : pets) {), а не , инициализированным , чтобыЦикл работы.

...