coderrrrrrrrrr12 Ответов: 3

Мне нужна помощь с рисунком


я хочу напечатать рисунок
например
если я возьму веревку Индия
он будет печатать
I I I I I I I I I
I N N N N N N N I
I N D D D D D N I
I N D I I I D N I
I N D I A I D N I
I N D I I I D N I
I N D D D D D N I
I N N N N N N N I
I I I I I I I I I


Заранее спасибо

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

class pat:
    def __init__(self,str):
        self.a=str
    def pattern(self):
        a=self.a
        b=len(a)
        for i in range(1,b+1):
            c=((10**i)//9)**2
            for j in range(b+1-i,1,-1):
                print (" ",end=" ")
            while c!=0:
                d=int((c%10)-1)
                c=c//10
                print (a[d],end=" ")
            print ()
        for i in range(b-1,0,-1):
            c=((10**i)//9)**2
            for j in range(1,b+1-i):
                print (" ",end=" ")
            while c!=0:
                d=int((c%10)-1)
                c=c//10
                print (a[d],end=" ")
            print ()
ob1=pat(input("ENter string\n"))
ob1.pattern()

он работает, но печатает бриллиант, а не квадрат

Patrice T

Я обновил ваш вопрос, чтобы показать квадрат.
Это кнопка "код", которая делает все это.

3 Ответов

Рейтинг:
2

Patrice T

Итак, вы не пытаетесь решить проблему самостоятельно, у вас нет вопросов, вы просто хотите, чтобы мы сделали вашу домашнюю работу.
Домашние задания-это упрощенные версии тех задач, которые вам придется решать в реальной жизни. цель это обучение и практикующий.

Мы не делаем вашу домашнюю работу.
Домашнее задание не предназначено для проверки ваших навыков просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, которые вы испытываете при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по исправлению положения.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это похоже на попытку научиться водить машину, обучая кого-то другого.
Создание алгоритма - это в основном поиск математики и необходимая адаптация к вашей реальной проблеме.

Идея "развития" заключается в следующем: "систематическое использование научно - технических знаний для достижения конкретных целей или требований." BusinessDictionary.com[^]
Это не то же самое, что "быстро гуглите и сдавайтесь, если я не могу найти точно правильный код".


coderrrrrrrrrr12

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

Patrice T

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

Patrice T

Начните с решения:

I I I I I
I N N N N
I N D D D
I N D I I
I N D I A

coderrrrrrrrrr12

a="INDIA"
b=len(a)
for i in range(0,b):
    for j in range(0,b):
        if i>j:
            print(a[j],end="")
        else:
            print(a[i],end="")
    print()

Patrice T

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

coderrrrrrrrrr12

сейчас же?

0x01AA

А 5. не за ответ, а за продолжение в комментарии ;)

Patrice T

Спасибо.
Поскольку ОП готов приложить некоторые усилия, я даю некоторые указания.
Поскольку ОП делает свою работу, я надеюсь, что он чему-нибудь научится.

coderrrrrrrrrr12

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

0x01AA

Только подсказка: следите за тем, на какую "нить - часть" вы отвечаете. Я вижу, что вы только что удалили свой комментарий в нужной теме и продолжили здесь.

Пока что не беспокойтесь об этом сообщении, ppolymorphe наверняка его узнает.
С уважением

Patrice T

Вы знаете, как написать Индию, что вам нужно сделать, чтобы написать АЙДНИ ?
Вы можете обновить вопрос с вашей фактической работой, чтобы получить помощь от других.

Рейтинг:
17

CPallini

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

max (|x-L| , |y-L|)
(Где L это длина строки)

Попробуй
def distance(x,y,l):
  return max( abs(x-l), abs(y-l))

s = "CODEPROJECT"
l = len(s)
for y in range(0,l*2-1):
  for x in range(0,l*2-1):
    d = distance(x,y,l-1)
    print(s[l-d-1], end='')
  print()


Рейтинг:
10

C Pottinger

а) обратите внимание, что слово состоит из n букв
б) обратите внимание, что количество строк и столбцов равно n * 2 - 1
в) обратите внимание, что при печати всего слова индекс буквы, напечатанной в столбце с, равен n - ABS(n - c)
г) обратите внимание, что для каждой строки r индекс напечатанной буквы не превышает n - ABS(n - r)

Теперь у вас должно быть достаточно информации, чтобы написать решение.