Печатать пользовательский ввод в «каскаде» символов?

#python #string #printing

#python #строка #печать

Вопрос:

Я пытаюсь создать код, который собирает имя и фамилию пользователя (порядок ввода — последний, первый) и печатает его первым, последним каскадным способом:

    J
     o
       h
         n
   S
     m 
       i
         t
           h
  

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

вот мой код:

 last = raw_input('enter your last name:')
first= raw_input('enter your first name:')
print(first[0])
print('t'   first[1])
print('t'*2   first[2])
print('t'*3 first[3])
print('t'*4 first[4])
print('t'*5 first[5])
print('t'*6 first[6])
print(last[0])
print('t'   last[1])
print('t'*2   last[2])
print('t'*3 last[3])
print('t'*4 last[4])
print('t'*5 last[5])
  

Ответ №1:

Вы можете написать универсальную функцию, подобную показанной ниже, и повторно использовать ее для своих строк.

 def cascade_name(name):
    for i, c in enumerate(name):
        print 't'*(i 1), c
  

вывод:

 >>> cascade_name("foo")
    f
        o
            o
  

В вашем случае вы бы сделали:

 last = raw_input('enter your last name:')
first= raw_input('enter your first name:')
cascade_name(last)
cascade_name(first)