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

Jay Klope спросил: 12 мая 2018 в 04:51 в: python

Например

Hello World
 Hello World
  Hello World
   Hello World

Я попытался сделать это, но он не работает:

for i in range(4):
    print(""*i, "Hello World") 

3 ответа

chevybow ответил: 12 мая 2018 в 05:01

Это работает для меня

for i in range(4):
    print(' '*i + "Hello World") 

Используйте + для конкатенации строк. Это позволяет вашему коду работать как на python 2, так и на 3.

Основная проблема заключалась в том, что вы хотите объединить фактические пробелы ' ' вместо пустых строк ''. Умножение пустой строки само по себе много раз приводит к самой пустой строке.

Martijn Pieters♦ ответил: 12 мая 2018 в 04:55
Или используйте sep='', чтобы удалить пробел, вставленный print().
castis ответил: 12 мая 2018 в 04:56
Основной проблемой OPs было отсутствие места. print(" "*i, "Hello World") также будет работать с python 3+
chevybow ответил: 12 мая 2018 в 05:00
Конечно. Я должен был указать, что я использую + для конкатенации, чтобы он работал как на python 2, так и на @castis. Версия не была помечена для этого вопроса, поэтому, если кто-нибудь придет к этому вопросу в будущем, + будет работать независимо от того, какую версию они используют.
Alaa Akiel ответил: 12 мая 2018 в 04:53
 for i in range(4):
     print(" "*i, "Hello World")
Martijn Pieters♦ ответил: 12 мая 2018 в 04:55
Это будет запускать с одним пробелом и перейти до четырех пробелов.
Alex ответил: 12 мая 2018 в 04:56

Это работает, если вы исправите опечатку - вместо "" в печати:

for i in range(4):
    print(" "*i, "Hello World") 

Теперь добавляет дополнительное пространство в начале, даже если первый аргумент print () - пустая строка, поэтому для получения вывода, где в первой строке нет начальных пространств, вы можете использовать печать с одним аргументом:

print(" " * i + "Hello World")