Найти - Пользователи
Полная версия: Как упростить и что можно заменить другими методами записи?
Начало » Центр помощи » Как упростить и что можно заменить другими методами записи?
1
Brick
Всем примет!
Уже второй день изучаю 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()
PEHDOM
Разбей весь код на функции, каждый пункт меню должен вызывать свою функцию..
Brick
PEHDOM
Разбей весь код на функции, каждый пункт меню должен вызывать свою функцию..
Да, я такое пробывал провернуть, но мануалов как запихнуть код в функцию так и не нашел. Можешь показать пример записи и вызова на любой части кода?
JOHN_16
Brick
мануалов как запихнуть код в функцию
оч смешно. Давай вы для начала возьмете учебник и прочитаете, благо они достаточно доступны. Основы основ познаются самыми зелеными новичками ну за неделю максимум.
Мы тут просто не особо любим отвечать на элементарные и примитивные вопросы, решение которых в первых ссылах поисковика даже на самый кривой запрос.
Brick
JOHN_16
Хорошо, я почитаю еще, может что и найду.
Brick
JOHN_16
Да, возможно я не так выразился. Я имел ввиду находил только что-то типа def func(1,10), тогда как я полагаю есть возможность взять n строк в функцию и применять их по вызову в нужной строке одной командой. Именно второго я и не находил. Согласен. возможно плохо искал. Пойду посмотрю еще.
PEHDOM
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
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