Я запускаю этот код, чтобы напечатать шаблон треугольника, но я не могу понять, почему между ними добавляются два лишних пробела.
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".
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
одному пробелу.
print
выводит каждый аргумент с пробелом в качестве разделителя по умолчанию. Вы должны использовать параметр sep=''
если вам не нужно места между выводами аргументов:
print(s*" ","*",((x-1)*2)*"f",(x!=0)*"*", sep='')
Это связано с разделителем по умолчанию между элементами.
Вы можете настроить его с помощью аргумента ключевого слова sep
:
print(1,2,3,4, sep="-")
#1-2-3-4
print(1,2,3,4, sep="")
#1234