Форум сайта python.su
Всем примет!
Уже второй день изучаю Python. И, т.к. это мой первый язык, то я много не знаю вовсе и не догадываюсь о существовании даже. Поэтому прошу вашей помощи, если есть время, силы и желание поделиться мудростью.
Помощь нужна в следующем: нужно упростить код. Повторюсь, я не в Python-е новичок, а совсем зелененький в этом, как оказалось интересном деле. Поэтому я обдумаю все, что напишите и предложите. Зарание спасибо!
Назначение программы не столь важно ибо я все в качестве тренировки делаю и усвоения того, что нашел на просторах интернета.
Код такой:
#!/usr/bin/env python3 #Программа позволит узнать какой месяц соответствует введенному числу и еще немного #-------Создаем словари для программ------------ months = {1:'Январь', 2:'Февраль', 3:'Март', 4:'Апрель', 5:'Май', 6:'Июнь', 7:'Июль', 8:'Август', 9:'Сентябрь', 10:'Октябрь', 11:'Ноябрь', 12:'Декабрь'} day = {1:'31', 2:'28', 3:'31', 4:'30', 5:'31', 6:'30', 7:'31', 8:'31', 9:'30', 10:'31', 11:'30', 12:'31'} #------Создаем словари для аунтификации--------- users = {'Brick':'Brick'} passwords = {'123':'123'} #-----------------Меню входа-------------------- print() print("+----------------+") print("| 1. Вход |") print("| 2. Регистрация |") print("| 0. Выйти |") print("+----------------+") print() #------------------Код меню--------------------- q = 1 while q == 1: v = int(input("Введите номер пункта меню ")) if v == 1: # Первый пункт меню print() q = 0 # Переходим к коду аунтификации elif v == 2: # Второй пункт меню print("Регистрация нового пользователя") print() w = 1 while w == 1: usr = input("Придумайте имя пользователя?" ) # Проверим, есть ли такой позователь в словаре users if usr in users: # Если есть - выведем это print("Имя пользователя занято" ) w = 0 # вернемся обратно else: # Добавим имя его в словарь в словарь users users[usr] = usr psw = input("Придумайте пароль" ) # введем пароль и заведем его в словарь passwords passwords[psw] = psw w = 0 # Вернемя обратно с сохраненными именем пользователя и паролем elif v == 0: # Третий пункт меню print() print('Программа завершена') raise SystemExit(1) # Программа будет завершена else: # Выведет ошибку и вернет к вводу пункта меню print() print('Нет такого пункта') print() #----------Требование ввести логин и пароль------------------ psw = 1 while psw == 1: usrname = input('Введите имя пользователя => ') pwd = input('Введите пароль => ') #-----------------Проверка имени и пароля--------------------- if usrname in users: if pwd == passwords[pwd]: print ('Здравствуйте, %s. Вход выполнен.' % usrname) psw = 0 else: print ('Пароль неверный. Вход не выполнен.') else: print ("Извините, но такого пользователя нет. Вход не выполнен.") #----------------------Меню программы-------------------------- loop = 1 while loop == 1: print() print("+--------------------------------------------------------+") print("| 1. Узнать название месяца по его порядковому номеру |") print("| 2. Узнать сколько в конкретном месяце дней |") print("| 3. Узнать номер месяца по названию |") print("| 0. Выйти |") print("+--------------------------------------------------------+") print() b = int(input("Введите номер пункта меню ")) print() #-------Программа №1---------------------- if b == 1: z = 1 while z == 1: response = int(input("Введите номер месяца или '0' для выхода в меню => ")) if response in months: print() print(response, "месяц - это", months[response]) print() a = input("Вы хотите продолжить? y/n ") print() if a == 'n': print() z = 0 elif response == 0: z = 0 else: print() print('Нет такого месяца') print() #-------Программа №2---------------------- if b == 2: d = 1 while d == 1: response = int(input("Введите номер месяца или '0' для выхода в меню => ")) if response in day: print() print("В", months[response],"е", day[response], "дней") print() a = input("Вы хотите продолжить? y/n ") print() if a == 'n': print() d = 0 elif response == 0: d = 0 else: print() print('Нет такого месяца') print() #-------Программа №3----------------------НЕ ДОДЕЛАНА if b == 3: c = 1 while c == 1: print("Данная часть программы не дописана") print() a = input("Вы хотите продолжить? y/n ") print() if a == 'n': print() c = 0 #----------------------------------------- elif b == 0: print() print('Программа завершена') loop = 0 else: print() print('Нет такого пункта') print()
Прикреплённый файлы: months.py (5,3 KБ)
Офлайн
Разбей весь код на функции, каждый пункт меню должен вызывать свою функцию..
[code python][/code]
Отредактировано PEHDOM (Март 4, 2018 20:42:04)
Офлайн
PEHDOMДа, я такое пробывал провернуть, но мануалов как запихнуть код в функцию так и не нашел. Можешь показать пример записи и вызова на любой части кода?
Разбей весь код на функции, каждый пункт меню должен вызывать свою функцию..
Отредактировано Brick (Март 4, 2018 20:50:17)
Офлайн
Brickоч смешно. Давай вы для начала возьмете учебник и прочитаете, благо они достаточно доступны. Основы основ познаются самыми зелеными новичками ну за неделю максимум.
мануалов как запихнуть код в функцию
Офлайн
JOHN_16Хорошо, я почитаю еще, может что и найду.
Офлайн
JOHN_16Да, возможно я не так выразился. Я имел ввиду находил только что-то типа def func(1,10), тогда как я полагаю есть возможность взять n строк в функцию и применять их по вызову в нужной строке одной командой. Именно второго я и не находил. Согласен. возможно плохо искал. Пойду посмотрю еще.
Офлайн
Brick по русски, на пальцах.. https://pythonworld.ru/tipy-dannyx-v-python/vse-o-funkciyax-i-ix-argumentax.html
А вообще, вы б может книжку какую почитали, или онлайн самоучитель типа такого, для начала
https://pythonworld.ru/samouchitel-python
ну и офф документация тоже не лишней будет в закладках https://docs.python.org/3/tutorial/index.html
[code python][/code]
Отредактировано PEHDOM (Март 4, 2018 22:45:47)
Офлайн