Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 22, 2016 05:47:32

h1guma
Зарегистрирован: 2016-09-22
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодом

Добрый день. Начал ковырять питон. Но на первом же тестовом задании столкнулся с проблемой.
Не получается корректно вывести результат.

 def metamorph(number):
    try:
        zero=["  ****  ", " *    * ", " *    * ", " *    * ", " *    * ", "  ****  "]
        one=["    *   ", "  * *   ", " *  *   ", "    *   ", "    *   ", "    *   "]
        two=[" *****  ", " *   *  ", "    *   ", "   *    ", "  *     ", " *****  "]
        three=[" ****** ", "     *  ", "    *   ", "   ***  ", "      * ", " ****** "]
        four=[" * 4  * ", " * 4  * ", " * 4  * ", " **4*** ", "   4  * ", "   4  * "]
        five=[" ****** ", " *      ", " ****** ", "      * ", "      * ", " ****** "]
        six=[" ****** ", " *      ", " ****** ", " *    * ", " *    * ", " ****** "]
        seven=[" ****** ", "     *  ", "    *   ", "   *    ", "  *     ", "  *     "]
        eight=[" ****** ", " *    * ", " ****** ", " *    * ", " *    * ", " ****** "]
        nine=[" ****** ", " *    * ", " ****** ", "      * ", "      * ", " ****** "]
        result=[]
        for num in number:
            if num == "0":
                result.append(zero)
            elif num == "1":
                result.append(one)
            elif num == "2":
                result.append(two)
            elif num == "3":
                result.append(three)
            elif num == "4":
                result.append(four)
            elif num == "5":
                result.append(five)
            elif num == "6":
                result.append(six)
            elif num == "7":
                result.append(seven)
            elif num == "8":
                result.append(eight)
            elif num == "9":
                result.append(nine)
        text=[]
        for index in range(0,6):
            for i in range(0,5):
                text.append(result[i][index])
            print (' '.join(text))               
                       
    except ValueError:
        print('Вы ввели неверное число!')
a=list(input('Введите число:'))
metamorph(a)

Задача: ввести 5 чисел. Результат: числа должны быть написаны звездочками.
Вместо адекватного результата выводит некорректную лесенку.
Не подскажете в чем проблема? Хочу разобраться уже и к следующей теме переходить)
Спасибо

Офлайн

#2 Сен. 22, 2016 07:47:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Проблема с кодом

У вас нет переводов строк.

p.s.
Обратите внимание на то что у вас много повторяющейся писанины. Это верный признак “GOVNOCOD”.
неужели так в задании рекомендуют?
Уж если делаете сообщение об ошибке, то укажите путь как ее избежать.

 numb={
"0" : """
  *** 
 *    *
 *    *
  *** 
""",
"1" : """
 *
 *
 *
 *
"""
}
j="011"
arr=np.array([numb[i].split() for i in j]).T



Офлайн

#3 Сен. 22, 2016 08:21:09

h1guma
Зарегистрирован: 2016-09-22
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодом

doza_and
У вас нет переводов строк.p.s. Обратите внимание на то что у вас много повторяющейся писанины. Это верный признак “GOVNOCOD”. неужели так в задании рекомендуют?Уж если делаете сообщение об ошибке, то укажите путь как ее избежать.
Ну, насчет “GOVNOCOD”, я думаю это правда, ибо это вообще первое что я написал)
а так, конечно, хочу изначально писать правильно, дабы входило в привычку)

Насчет перевода строк, его, я так понимаю, и не должно быть, конкретно в моем случае (а с массивами в питоне я еще не знаком). Т.к. здесь:
 for index in range(0,6):
            for i in range(0,5):
                text.append(result[i][index])
            print (' '.join(text))    
я пытаюсь, вытаскивать сначала первый элемент списка каждого числа в новый список, а потом новый список выводить построчно. Т.е. сначала выводится строка верхушки всех цифр, потом середины всех цифр и потом заканчивает последней строкой. Это упрощенно, а так там 6 строк.
И поясните, пожалуйста, свой код. Я так понимаю у вас должны буквы вывестись друг под другом. Особенно интересен момент с массивом.

Офлайн

#4 Сен. 22, 2016 09:45:53

realivan
Зарегистрирован: 2015-08-15
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодом

Как-то много кода, можно все проще.

 for k in range(5):
    n = input('input number:')
    print('*'*n+'\n')

Отредактировано realivan (Сен. 22, 2016 22:53:36)

Офлайн

#5 Сен. 22, 2016 21:45:33

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Проблема с кодом

h1guma
а с массивами в питоне я еще не знаком
Ну массивов в питоне вообще нет. Есть списки и вы их знаете - пользуетесь ими.
У меня вообще ничего не выводится.

Объяснение:

Предлагается не мучаться с конструкциями
 ["  ****  ", " *    * ", " *    * ", " *    * ", " *    * ", "  ****  "]
заменить на более естественные
 """
  *** 
 *    *
 *    *
  *** 
"""

Вместо абсолютно произвольных названий
 zero=["
использовать буквы которые вы хотите кодировать в конструкции которая называется словарем
 a={"0":....}
Это позволит добыть группы строк без длинного if
Дальше можно использовать двойной цикл как у вас, а можно переупорядочивания выполнить в пакете numpy. Это можно сделать множеством способов, я не стал дописывать.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version