Уведомления

Группа в Telegram: @pythonsu

#1 Май 17, 2019 11:46:14

Rudey
Зарегистрирован: 2019-02-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода.

Условие задачи: “Пользователь вводит англ. букву, вывести следующие три по алфавиту. Если алфавит закончился, то вывести циклично с начала алфавита, то есть если z, то a,b,c. Вывод только маленьких букв. Учесть, что пользователь может ввести заглавную”
Я решил эту задачу, можно ли сократить код? И сделать вывод только маленьких букв.
Вот код:

 alp = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
while True:
    user = str(input('Ведите английскую букву:'))
    if user.isalpha():
        break
if user == alp[0]:
    print('Следующие три буквы по алфавиту:',alp[1],alp[2],alp[3])
elif  user == alp[1]:
    print('Следующие три буквы по алфавиту:',alp[2],alp[3],alp[4])
elif user == alp[2]:
    print('Следующие три буквы по алфавиту:',alp[3],alp[4],alp[5])
elif user == alp[3]:
    print('Следующие три буквы по алфавиту:',alp[4],alp[5],alp[6])
elif user == alp[4]:
    print('Следующие три буквы по алфавиту:',alp[5],alp[6],alp[7])
elif user == alp[5]:
    print('Следующие три буквы по алфавиту:',alp[6],alp[7],alp[8])
elif user == alp[6]:
    print('Следующие три буквы по алфавиту:',alp[7],alp[8],alp[9])
elif user == alp[7]:
    print('Следующие три буквы по алфавиту:',alp[8],alp[9],alp[10])
elif user == alp[8]:
    print('Следующие три буквы по алфавиту:',alp[9],alp[10],alp[11])
elif user == alp[9]:
    print('Следующие три буквы по алфавиту:',alp[10],alp[11],alp[12])
elif user == alp[10]:
    print('Следующие три буквы по алфавиту:',alp[11],alp[12],alp[13])
elif user == alp[11]:
    print('Следующие три буквы по алфавиту:',alp[12],alp[13],alp[14])
elif user == alp[12]:
    print('Следующие три буквы по алфавиту:',alp[13],alp[14],alp[15])
elif user == alp[13]:
    print('Следующие три буквы по алфавиту:',alp[14],alp[15],alp[16])
elif user == alp[14]:
    print('Следующие три буквы по алфавиту:',alp[15],alp[16],alp[17])
elif user == alp[15]:
    print('Следующие три буквы по алфавиту:',alp[16],alp[17],alp[18])
elif user == alp[16]:
    print('Следующие три буквы по алфавиту:',alp[17],alp[18],alp[19])
elif user == alp[17]:
    print('Следующие три буквы по алфавиту:',alp[18],alp[19],alp[20])
elif user == alp[18]:
    print('Следующие три буквы по алфавиту:',alp[19],alp[20],alp[21])
elif user == alp[19]:
    print('Следующие три буквы по алфавиту:',alp[20],alp[21],alp[22])
elif user == alp[20]:
    print('Следующие три буквы по алфавиту:',alp[21],alp[22],alp[23])
elif user == alp[21]:
    print('Следующие три буквы по алфавиту:',alp[22],alp[23],alp[24])
elif user == alp[22]:
    print('Следующие три буквы по алфавиту:',alp[23],alp[24],alp[25])
elif user == alp[23]:
    print('Следующие три буквы по алфавиту:',alp[24],alp[25],alp[26])
elif user == alp[24]:
    print('Следующие три буквы по алфавиту:',alp[25],alp[0],alp[1])
elif user == alp[25]:
    print('Следующие три буквы по алфавиту:',alp[0],alp[1],alp[2])

Офлайн

#2 Май 17, 2019 11:52:40

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оптимизация кода.

Rudey
Отличный код, работает - не трогай!



Офлайн

#3 Май 17, 2019 12:03:42

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Оптимизация кода.

Это эталонное решение из области “как не надо делать”. Прям как няшка.
1) английский алфавит уже есть в модуле string
2) воспользоваться переводом строки в нижний регистр методом lower()
3) Почитать что такое “циклический буфер” в общем. И его конкретная реализация в модуле itertools который называется circle. Что бы им воспользоваться нужно понимать концепцию итераторов. Да и еще знать что такое циклы.

Я вот достаточно в общем накинул. Одно из решений займет строчек 10 наверное кода, а может и меньше.
Попробуете сами что нибудь придумать на основании этой информации?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Май 17, 2019 12:05:12

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Оптимизация кода.

 >>> ns = ord('a')
>>> ks = ord('z')
>>> def nextSibvol(nomer):
...     return chr((nomer - ks) + ns if nomer+1 > ks else nomer+1)
>>> bukva = 'x'
>>> tuple(map(nextSibvol, range(ord(bukva), ord(bukva)+3)))
('y', 'z', 'a')
>>> bukva = 'z'
>>> tuple(map(nextSibvol, range(ord(bukva), ord(bukva)+3)))
('a', 'b', 'c')
>>> bukva = 'a'
>>> tuple(map(nextSibvol, range(ord(bukva), ord(bukva)+3)))
('b', 'c', 'd')



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Май 17, 2019 13:45:25

Rudey
Зарегистрирован: 2019-02-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода.

JOHN_16
Смотрите, я загуглил модуль string, и нашел string.ascii_lowercase, но как мне с ним работать? там все буквы в одном элементе, то есть, я не могу получить доступ к каждой букве, когда я вношу его в массив там все одним элементом идет.

 import string
alp = [string.ascii_lowercase]
print(alp[0])

Офлайн

#6 Май 17, 2019 14:26:06

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оптимизация кода.

Rudey
Какие учебники по питону вы уже прочитали? Какие материалы по программированию усвоили?

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



Отредактировано FishHook (Май 17, 2019 14:27:46)

Офлайн

#7 Май 17, 2019 15:02:30

Rudey
Зарегистрирован: 2019-02-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода.

FishHook
Я изучаю Python пол года, книги я не читал, т.к предпочитаю практику, а в книгах одна теория, я освоил синтаксис языка, циклы, типы данных, простейшие алгоритмы(по этому курсу-https://www.youtube.com/watch?v=KdZ4HF1SrFs ), поигрался с библиотекой PyGame, сейчас изучаю Django.
Еще решаю задачи на этом сайте - http://www.itmathrepetitor.ru/prog/zadachi-na-vychisleniya/.
Ну в принципе все. Меня не надо учить элементарной логике, но то что мне не понятно, я спрашиваю.

Отредактировано Rudey (Май 17, 2019 15:09:19)

Офлайн

#8 Май 17, 2019 15:35:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Оптимизация кода.

Rudey
Вы, дорогой товарищ, очень веселый персонаж и вы бы удачно подошли на вакантное ныне место форумного клоуна, но если честно нет никого желания тратить на вас время и по существу вас и троллить то как-то западло. Давайте вы не будете больше приходить сюда? Учитесь дальше по ютубу, не в коем случае не изучайте теорию, не читайте книг, не учитесь логике, вам это не надо, потому что вы умственно отсталый и программист из вас не получится никогда ни при каких усилиях. Послушайте искреннего совета: освойте рабочую специальность, например сварщика. Вы будете всегда при деньгах, а голову напрягать вам не надо.

Тему я закрываю ввиду невероятной тупости контента.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version