2015-12-12 2 views
0

Мне нужно напечатать елку, которая выглядит следующим образом:Python: Christmas Tree

/\ 
/\ 
/ \ 

Вот мой код до сих пор:

for count in range (0,20): 
    variable1 = count-20 
    variable2 = count*2 

print('{0:{width1}}{1:{width2}}' .format('/','\\', width1=variable1 , width2=variable2)) 

Я использую Python 3.5. И кодирование говорит знак не allowded в формате sstring спецификатора

+0

Я думаю, вам нужно использовать 'variable1' и т. Д. Вместо жестких кодов' 20' –

+0

что вы имеете в виду? вы имеете в виду, что я не должен использовать ширину? – HelloRV

+0

Также 'variable1 = count - 20' без строковых котировок и т. Д. –

ответ

0

следующие работы с Python 3.4, я бы предположить, что это также работает с Python 3.5.

for count in range (20): 
     print('{0:>{width1}}{1:>{width2}}' .format('/','\\', width1=20-count , width2=2*count+1)) 

Импорт часть - как и другие, упомянутые в комментариях - не использовать фиксированную ширину для форматирования.

Обратите внимание на необходимый символ выравнивания '>', необходимый для правильного выравнивания.

1

В случае, если вы можете использовать другой подход, это один использует генератор и конкатенацию

n=10 
print('\n'.join(' '*(n-i)+'/'+' '*2*i+'\\' for i in range(n))) 

производит

  /\ 
     /\ 
     / \ 
    / \ 
    /  \ 
    /  \ 
    /   \ 
/   \ 
/    \ 
/    \ 

или, как предложенный ниже @zvone, почему бы не добавить некоторые случайные украшения?

print('\n'.join(' '*(n-i)+'/'+''.join(random.choice(' # *') for _ in range(2*i))+'\\' for i in range(n))) 

производит гораздо более красивый результат (даже частично освещенный синтаксический анализатор SO) в

  /\ 
     /*#\ 
     /###\ 
     /* # #\ 
     /# *** \ 
    /*# # ## \ 
    / #* * * # \ 
    /## **## *#*\ 
/ * # # ## #\ 
/*# ## *# * * #* \ 

С Рождеством Христова !!!

:)

+0

спасибо !!!!!!! – HelloRV

+1

Почему бы не добавить некоторые случайные украшения? 'print ('\ n'.join (' '* (ni) +'/'+' '. join (random.choice (' # * ') для _ в диапазоне (2 * i)) +' \\ ' для i в диапазоне (n))) «Веселого Рождества :) – zvone

+1

@zvone Hahahaha, gr8! Я добавил его к моему простому и базовому ответу. Престижность! :) – Pynchia

1
import builtins 
builtins.unicode = str 
print ('     ',chr(0x2605)) 
for count in range (20): 
    print ('{0:>{width1}}{1:>{width2}}' .format('/','\\', width1 = 20-count , width2 = 2*count+1)) 
print ('-----------------------------------------' 
print ('     [  ]    ') 
print ('     [  ]    ') 
print ('     [  ]    ') 
print ('     [  ]    ') 
print ('     [  ]    ') 
print ('-----------------------------------------') 

Благодарим вас за людей, которые помогли мне закончить!