Найти - Пользователи
Полная версия: Проблема с кодом
Начало » Python для новичков » Проблема с кодом
1
h1guma
Добрый день. Начал ковырять питон. Но на первом же тестовом задании столкнулся с проблемой.
Не получается корректно вывести результат.

 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 чисел. Результат: числа должны быть написаны звездочками.
Вместо адекватного результата выводит некорректную лесенку.
Не подскажете в чем проблема? Хочу разобраться уже и к следующей теме переходить)
Спасибо
doza_and
У вас нет переводов строк.

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

 numb={
"0" : """
  *** 
 *    *
 *    *
  *** 
""",
"1" : """
 *
 *
 *
 *
"""
}
j="011"
arr=np.array([numb[i].split() for i in j]).T
h1guma
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 строк.
И поясните, пожалуйста, свой код. Я так понимаю у вас должны буквы вывестись друг под другом. Особенно интересен момент с массивом.
realivan
Как-то много кода, можно все проще.
 for k in range(5):
    n = input('input number:')
    print('*'*n+'\n')
doza_and
h1guma
а с массивами в питоне я еще не знаком
Ну массивов в питоне вообще нет. Есть списки и вы их знаете - пользуетесь ими.
У меня вообще ничего не выводится.

Объяснение:

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

Вместо абсолютно произвольных названий
 zero=["
использовать буквы которые вы хотите кодировать в конструкции которая называется словарем
 a={"0":....}
Это позволит добыть группы строк без длинного if
Дальше можно использовать двойной цикл как у вас, а можно переупорядочивания выполнить в пакете numpy. Это можно сделать множеством способов, я не стал дописывать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB