coderrrrrrrrrr12 Ответов: 1

Как напечатать приведенный ниже шаблон в Python


может ли кто-нибудь помочь мне напечатать этот шаблон на python
предположим, что Стинг-это Индия:тогда внешний слой-это i,следующий слой-n и так далее.
предварительный просмотр неверен.Он должен быть ромбовидной формы.
Спасибо.



        i
      i n i
    i n d n i
  i n d i d n i
i n d i a i d n i
  i n d i d n i
    i n d n i
      i n i
        i


Что я уже пробовал:

я уже пробовал

stra="india"
a=len(stra)
for i in range(1,a+1):
    b=(10**i//9)**2
    while b>=0:
        c=b%10
        b=b/10      
        print stra[c-1],
        if b==0:
            break         
    print
for i in range(a-1,0,-1):
    b=(10**i//9)**2
    while b>=0:
            c=b%10
            b=b/10      
            print stra[c-1],
            if b==0:
                break         
    print

Patrice T

Это хорошая идея, чтобы показать фактический результат, не у всех есть python, готовый к запуску на своем компьютере.
Когда вы просите о помощи, вам нужно предоставить код, фактический результат, ожидаемый результат.

1 Ответов

Рейтинг:
12

OriginalGriff

Это ваше домашнее задание, поэтому мы не будем делать его за вас - никакого кода!
Но это не такая уж трудная задача:
1) получить слово для печати.
2) получить длину слова - это определяет, сколько строк вам нужно
3) петля: печать "верхней половины"
3.1) выведите строку от 0 до (длина * 2 - 1):
3.1.1) цикл: выведите пробелы перед первым символом
3.1.2) цикл: выведите начало слова.
3.1.3) цикл: выведите конец слова.
4) повторите 3 в обратном порядке.

Начните с печати только верхней половины и только начала слова. Когда у вас это работает, добавьте ведущие пробелы. Когда это сработает, добавьте конец слова.
Когда это сработает, переверните процесс, чтобы принести нижнюю половину. (Это должно быть довольно тривиально, потому что у вас есть полностью рабочий код для верхней половины.)


coderrrrrrrrrr12

я сделал шаблон, как в предварительном просмотре..
я хочу сделать его ромбовидным узором
я ничего не понял из 3.1
specifically.my проблема понимания заключается в том...как вы определяете начало и конец слова
в вопросе..я немного изменил свое решение

OriginalGriff

Посмотрите на то, что вы пытаетесь произвести:
....я
...Ини
..indni
.indidni
indiaidni
.indidni
..indni
...Ини
....я

Где ". " - это пробел.
Это явно две части: верхушка:
....я
...Ини
..indni
.indidni
indiaidni
И соответствующее дно:
.indidni
..indni
...Ини
....я
Так что сначала поработайте над одной половиной: верхней.
Это набор строк, где каждая строка начинается с некоторого количества пробелов, относящихся к номеру строки:
0: 4 .... я
1: 3 ...Ини
2: 2 ..индни
3: 1 .индидни
4: 0 indiaidni
А количество пробелов-это длина слова (5) минус номер строки плюс 1
Поэтому вам нужен цикл, который дает вам номер строки, и каждая строка начинается с цикла для печати пробелов. Достаточно просто?
Затем выведите количество символов для этой строки: номер строки плюс 1. Тоже довольно легко.
Затем выведите те же символы в обратном порядке! Опять же, это не трудно, когда вы сделали все предыдущие вещи.

Разбейте его на биты и работайте над каждым битом одновременно: таким образом, каждая задача, которую вы пытаетесь выполнить, достаточно проста!

Попробуйте - посмотрите, как далеко вы доберетесь.

coderrrrrrrrrr12

стра=raw_input()
a=len(stra)
список=[]
список2=[]
для i в диапазоне(1,a+1):
b=(10**i//9)**2
для j в диапазоне(a+1-i,1,-1):
печатать " ",
в то время как b>=0:
c=b%10
b=b/10
распечатать стра[с-1],
если b==0:
перерыв
печатать

для i в диапазоне(a-1,0,-1):
b=(10**i//9)**2
для j в диапазоне(1,a+1-i):
печатать " ",
в то время как b>=0:
c=b%10
b=b/10
распечатать стра[с-1],
если b==0:
перерыв
печатать


Большое вам спасибо ......

OriginalGriff

Всегда пожалуйста!