Трудности перевода с C++ на Python

Рейтинг: -11Ответов: 2Опубликовано: 12.07.2023

В языке программирования C++ оператор for очень МОЩНОЕ и ГИБКОЕ средство. Поэтому перевод его на другие языки программирования подчас вызывает большие сложности. Подскажите, пожалуйста, как лучше перевести на язык-Python следующую конструкцию языка-C++:

int length = 10

char test_m[length] = {'.', '.', '#', '#', '.', '.', '#', '#', '.', '.', }

for(int x=0; x<length; x++)
    cout << "x: " << x << " ->  sym: " << test_m[x] << endl;
    if (test_m[x] == '#')
        # --------------------------------------------------------------
        for(; x<length && test_m[x] == '#'; x++)
            cout << "x: " << x << " ->  sym: " << test_m[x] << endl;
        # --------------------------------------------------------------

// Вывод:
// c: 0 ->  sym: .
// c: 1 ->  sym: .
// c: 2 ->  sym: #
// c: 3 ->  sym: #
// c: 4 ->  sym: .
// c: 5 ->  sym: .
// c: 6 ->  sym: #
// c: 7 ->  sym: #
// c: 8 ->  sym: .
// c: 9 ->  sym: .
  • Я, конечно, переводил, но мои варианты как правило были ЗАПУТАННЫМИ и НЕУДОБОЧИТАЕМЫМИ! Может есть какие-то СТАНДАРТНЫЕ решения для подобных случаев? И они будут УДОБОВАРИМЫЕ?

Ответы

▲ 2Принят

В Питоне оператор for немного отличается от других языков. По сути он перебирает элементы чего-нибудь, по чему можно итерироваться. При желании в Питоне можно имитировать и ваш "вырожденный" for из С++ именно через for с хитрым итератором, но лучше, а главное, понятнее это не будет, чем если разложить ваш for на:

while условие:
    ...
    x += 1
▲ 0
  • Вы наверное поняли, что я переписываю уже готовый код с языка-C++ на язык-Python. Спасибо всем! С Вашей помощью, я ОКОНЧАТЕЛЬНО ОСОЗНАЛ, что пытаться сделать в операторе-for языка-Python что-то подобное языку-C++ - НЕ ПОЛУЧИТСЯ. Особое спасибо Вам CrazyElf!
  • Видимо придется куски кода C++, подобные приведенному мной, тупо переписывать с помощью операторов-while. Хотя это и не так лаконично и изящно, как на языке-C++.