Уведомления

Группа в Telegram: @pythonsu

#1 Март 4, 2018 20:05:37

Brick
Зарегистрирован: 2018-03-03
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как упростить и что можно заменить другими методами записи?

Всем примет!
Уже второй день изучаю 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()

Прикреплённый файлы:
attachment months.py (5,3 KБ)

Офлайн

#2 Март 4, 2018 20:41:51

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как упростить и что можно заменить другими методами записи?

Разбей весь код на функции, каждый пункт меню должен вызывать свою функцию..



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 4, 2018 20:42:04)

Офлайн

#3 Март 4, 2018 20:49:55

Brick
Зарегистрирован: 2018-03-03
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как упростить и что можно заменить другими методами записи?

PEHDOM
Разбей весь код на функции, каждый пункт меню должен вызывать свою функцию..
Да, я такое пробывал провернуть, но мануалов как запихнуть код в функцию так и не нашел. Можешь показать пример записи и вызова на любой части кода?

Отредактировано Brick (Март 4, 2018 20:50:17)

Офлайн

#4 Март 4, 2018 22:05:08

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

Как упростить и что можно заменить другими методами записи?

Brick
мануалов как запихнуть код в функцию
оч смешно. Давай вы для начала возьмете учебник и прочитаете, благо они достаточно доступны. Основы основ познаются самыми зелеными новичками ну за неделю максимум.
Мы тут просто не особо любим отвечать на элементарные и примитивные вопросы, решение которых в первых ссылах поисковика даже на самый кривой запрос.



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

Офлайн

#5 Март 4, 2018 22:17:07

Brick
Зарегистрирован: 2018-03-03
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как упростить и что можно заменить другими методами записи?

JOHN_16
Хорошо, я почитаю еще, может что и найду.

Офлайн

#6 Март 4, 2018 22:23:05

Brick
Зарегистрирован: 2018-03-03
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как упростить и что можно заменить другими методами записи?

JOHN_16
Да, возможно я не так выразился. Я имел ввиду находил только что-то типа def func(1,10), тогда как я полагаю есть возможность взять n строк в функцию и применять их по вызову в нужной строке одной командой. Именно второго я и не находил. Согласен. возможно плохо искал. Пойду посмотрю еще.

Офлайн

#7 Март 4, 2018 22:39:45

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как упростить и что можно заменить другими методами записи?

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)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version