Вам может потребоваться передать параметр конструктору:
https://gcc.gnu.org/onlinedocs/gcc-4.9.1/libstdc++/api/a00899.html
'%10s' %'*'*x
анализируется как
('%10s' % '*') * x
, поскольку операторы %
и *
имеют одинаковый приоритет и группу слева направо [ docs ]. Вам нужно добавить круглые скобки, например:
x = 1
while x < 10:
print '%10s' % ('*' * x)
x = x + 1
Если вы хотите провести цикл по диапазону чисел, считается более идиоматичным использование цикла for
, чем цикл while. Например:
for x in range(1, 10):
print '%10s' % ('*' * x)
for x in range(0, 10)
эквивалентно for(int x = 0; x < 10; x++)
в Java или C.
print '\n'.join(' ' * (10 - i) + '*' * i for i in range(10))
Это из-за приоритета оператора, используйте этот:
x=1
while x<10:
print '%10s' % ('*'*x)
x=x+1
Чтобы быть точным, поскольку ваше изображение заканчивается на 10 звездочек, вам нужно.
for i in range(1, 11):
print "%10s"%('*' *i)
имеет методы rjust
и ljust
для этой вещи.
>>> n = 10
>>> for i in xrange(1,n+1):
... print (i*'*').rjust(n)
...
*
**
***
****
*****
******
*******
********
*********
**********
или, альтернативно:
>>> for i in reversed(xrange(n)):
... print (i*' ').ljust(n, '*')
...
*
**
***
****
*****
******
*******
********
*********
**********
В моем втором примере используется символ пробела в качестве печатаемого символа и * как символ заполнения.
Аргумент ljust
или rjust
- это ширина терминала. Я часто использую их для разделения разделов с заголовками, когда у вас есть отладочная отладочная распечатка, например. print '--Spam!'.ljust(80, '-')
.