Форум сайта python.su
Условие задачи: “Пользователь вводит англ. букву, вывести следующие три по алфавиту. Если алфавит закончился, то вывести циклично с начала алфавита, то есть если 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])
Офлайн
Rudey
Отличный код, работает - не трогай!
Офлайн
Это эталонное решение из области “как не надо делать”. Прям как няшка.
1) английский алфавит уже есть в модуле string
2) воспользоваться переводом строки в нижний регистр методом lower()
3) Почитать что такое “циклический буфер” в общем. И его конкретная реализация в модуле itertools который называется circle. Что бы им воспользоваться нужно понимать концепцию итераторов. Да и еще знать что такое циклы.
Я вот достаточно в общем накинул. Одно из решений займет строчек 10 наверное кода, а может и меньше.
Попробуете сами что нибудь придумать на основании этой информации?
Офлайн
>>> 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')
Офлайн
JOHN_16
Смотрите, я загуглил модуль string, и нашел string.ascii_lowercase, но как мне с ним работать? там все буквы в одном элементе, то есть, я не могу получить доступ к каждой букве, когда я вношу его в массив там все одним элементом идет.
import string alp = [string.ascii_lowercase] print(alp[0])
Офлайн
Rudey
Какие учебники по питону вы уже прочитали? Какие материалы по программированию усвоили?
Я хочу напомнить, что тема форума - язык программирования питон, никто здесь не будет вас учить основам алгоритмирования и элементарной логике.
Отредактировано FishHook (Май 17, 2019 14:27:46)
Офлайн
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)
Офлайн
Rudey
Вы, дорогой товарищ, очень веселый персонаж и вы бы удачно подошли на вакантное ныне место форумного клоуна, но если честно нет никого желания тратить на вас время и по существу вас и троллить то как-то западло. Давайте вы не будете больше приходить сюда? Учитесь дальше по ютубу, не в коем случае не изучайте теорию, не читайте книг, не учитесь логике, вам это не надо, потому что вы умственно отсталый и программист из вас не получится никогда ни при каких усилиях. Послушайте искреннего совета: освойте рабочую специальность, например сварщика. Вы будете всегда при деньгах, а голову напрягать вам не надо.
Тему я закрываю ввиду невероятной тупости контента.
Офлайн