пробел автоматически добавил питон

1

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

n=int(input("enter length"))
for x,s in zip(range(0,n),reversed(range(n))):
     print(s*" ","*",((x-1)*2)*"f",(x!=0)*"*")

выход программы

    *  
   *dd*
  *dffd*
 *dffffd*
*dffffffd*

дополнительные пробелы обозначаются буквой "d".

  • 0
    print добавляет пробелы между аргументами по умолчанию
Теги:
python-3.x

3 ответа

1
Лучший ответ

print() автоматически добавляет пробелы между его параметрами:

>>> print(1, 2, 3)
1 2 3
>>> print("a", "b", "c")
a b c

Вы можете конкатенировать строки вручную, чтобы решить эту проблему:

print(s*" " + "*" + ((x - 1)*2)*"f" + (x != 0)*"*")

или используйте sep:

print(s*" ", "*", ((x-1)*2)*"f", (x!=0)*"*", sep="")

Из документации:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

Печать объектов в файл текстового потока, разделенных sep и с последующим end.

Обратите внимание, что аргумент sep умолчанию sep одному пробелу.

3

print выводит каждый аргумент с пробелом в качестве разделителя по умолчанию. Вы должны использовать параметр sep='' если вам не нужно места между выводами аргументов:

print(s*" ","*",((x-1)*2)*"f",(x!=0)*"*", sep='')
0

Это связано с разделителем по умолчанию между элементами.
Вы можете настроить его с помощью аргумента ключевого слова sep:

print(1,2,3,4, sep="-")
#1-2-3-4
print(1,2,3,4, sep="")
#1234

Ещё вопросы

Сообщество Overcoder
Наверх
Меню