Найти - Пользователи
Полная версия: Оцените переделку кода
Начало » Python проекты » Оцените переделку кода
1
Xakep321
 def info():
	print('\nИнформация(info)\nНазвание: console+\nАвтор кода: Xakep321\n')
def help():
	print('\nhelp\t-\tсписок комманд\ncalc2\t-\tкалькулятор с двумя переменными\nсalc3\t-\tкалькулятор с тремя переменными\ncompar\t-\tсравнение чисел\nexit + (название приложения)\t-\tвыход из среды\ninfo\t-\tинформация\n')	
def console():
	while True:
		enter=str(input('console > '))
		if enter=='help':
			help()
		elif enter=='exit console':
			print('close console')
			print(exit(0))
		elif enter=='calc2':
			cacl2()
		elif enter=='calc3':
			calc3()
		elif enter=='info':
			info()
		elif enter=='compar':
			compar()
		else:
			print('Неверная команда')
def cacl2():
	print('\n\tКалькулятор с двумя переменными(calc1)')
	while True:
		a=input('Первая переменная: ')
		if a=='exit calc2':
			print('close calc2')
			a=str(a)
			console()
			break
		else:
			a=float(a)
		b=input('Операция: ')
		if b=='exit calc2':
			print('close calc2')
			console()
			break
		c=input('Вторая переменная: ')
		if c=='exit calc2':
			print('close calc2')
			c=str(c)
			console()
			break
		else:
			c=float(c)
		if b in ('+','-','*','/','**','//'):
			if b=='+':
				print(a,b,c,'=',a+c)
			elif b=='-':
				print(a,b,c,'=',a-c)
			elif b=='*':
				print(a,b,c,'=',a*c)
			elif b=='/':
				print(a,b,c,'=',a/c)
			elif b=='**':
				print(a,b,c,'=',a**c)
			elif b=='//':
				print(a,b,c,'=',a//c)
		else:
			print('Неверная операция')
def calc3():
	print('\n\tКалькулятор с тремя переменными(calc3)')
	while True:
		a=input('Первая переменная: ')
		if a=='exit calc3':
			print('close calc3')
			a=str(a)
			console()
			break
		else:
			a=float(a)
		b=input('Операция: ')
		if b=='exit calc3':
			print('close calc3')
			console()
			break
		c=input('Вторая переменная: ')
		if c=='exit calc3':
			print('close calc3')
			c=str(c)
			console()
			break
		else:
			c=float(c)
		d=input('Операция: ')
		if d=='exit calc3':
			print('close calc3')
			console()
			break
		e=input('Третья переменная: ')
		if e=='exit calc3':
			print('close calc3')
			e=str(e)
			console()
			break
		else:
			e=float(e)
		if b in ('+','-','*','/','**','//') and d in ('+','-','*','/','**','//'):
			if b=='+':
				if d=='+':
					print(a,b,c,d,e,'=',a+c+e)
				elif d=='-':
					print(a,b,c,d,e,'=',a+c-e)
				elif d=='*':
					print(a,b,c,d,e,'=',a+c*e)
				elif d=='/':
					print(a,b,c,d,e,'=',a+c/e)
				elif d=='**':
					print(a,b,c,d,e,'=',a+c**e)
				elif d=='//':
					print(a,b,c,d,e,'=',a+c//e)
				else:
					print('Неверная операция')
			elif b=='-':
				if d=='+':
					print(a,b,c,d,e,'=',a-c+e)
				elif d=='-':
					print(a,b,c,d,e,'=',a-c-e)
				elif d=='*':
					print(a,b,c,d,e,'=',a-c*e)
				elif d=='/':
					print(a,b,c,d,e,'=',a-c/d)
				elif d=='**':
					print(a,b,c,d,e,'=',a-c**e)
				elif d=='//':
					print(a,b,c,d,e,'=',a-c//e)
				else:
					print('Неверная операция')
			elif b=='*':
				if d=='+':
					print(a,b,c,d,e,'=',a*c+e)
				elif d=='-':
					print(a,b,c,d,e,'=',a*c-e)
				elif d=='*':
					print(a,b,c,d,e,'=',a*c*e)
				elif d=='/':
					print(a,b,c,d,e,'=',a*c/e)
				elif d=='**':
					print(a,b,c,d,e,'=',a*c**e)
				elif d=='//':
					print(a,b,c,d,e,'=',a*c//e)
				else:
					print('Неверная операция')
			elif b=='/':
				if d=='+':
					print(a,b,c,d,e,'=',a/c+e)
				elif d=='-':
					print(a,b,c,d,e,'=',a/c-e)
				elif d=='*':
					print(a,b,c,d,e,'=',a/c*e)
				elif d=='/':
					print(a,b,c,d,e,'=',a/c/e)
				elif d=='**':
					print(a,b,c,d,e,'=',a/c**e)
				elif d=='//':
					print(a,b,c,d,e,'=',a/c//e)
				else:
					print('Неверная операция')
			elif b=='**':
				if d=='+':
					print(a,b,c,d,e,'=',a**c+e)
				elif d=='-':
					print(a,b,c,d,e,'=',a**c-e)
				elif d=='*':
					print(a,b,c,d,e,'=',a**c*e)
				elif d=='/':
					print(a,b,c,d,e,'=',a**c/e)
				elif d=='**':
					print(a,b,c,d,e,'=',a**c**e)
				elif d=='//':
					print(a,b,c,d,e,'=',a**c//e)
				else:
					print('Неверная операция')
			elif b=='//':
				if d=='+':
					print(a,b,c,d,e,'=',a//c+e)
				elif d=='-':
					print(a,b,c,d,e,'=',a//c-e)
				elif d=='*':
					print(a,b,c,d,e,'=',a//c*e)
				elif d=='/':
					print(a,b,c,d,e,'=',a//c/e)
				elif d=='**':
					print(a,b,c,d,e,'=',a//c**e)
				elif d=='//':
					print(a,b,c,d,e,'=',a//c//e)
				else:
					print('Неверная операция')
			else:
				print('Неверная операция')
def compar():
	print('Сравнение числа(ел)(compar)')
	while True:
		a=input('Первая переменная: ')
		if a=='exit compar':
			print('close compar')
			a=str(a)
			console()
			break
		else:
			a=float(a)
		b=input('Вторая переменная или пробел: ')
		if b=='exit compar':
			print('close compar')
			b=str(b)
			console()
			break
		else:
			if b!=' ':
				if b!='':
					b=float(b)
		if a>0:
			print(a,'> 0')
		elif a<0:
			print('0 >',a)
		if b!=' ':
			if b!='':
				if a>b:
					print(a,'>',b)
				elif a<b:
					print(a,'<',b)
				elif a==b:
					print(a,'=',b)
				if b>0:
					print(b,'> 0')
				elif b<0:
					print('0 >',b)
open=str(input('console > '))
if open=='open':
	console()
elif open=='exit console':
	print('close console')
	print(exit(0))
else:
	print('Неверная команда')

Ввот тот самый код который я переделал с помощью ваших советов. Оцените переделку, код построен на вызове функций, а не на, как было, бесконечной функции. И убрал кучу копипасты, код более радует глаз
Python 3.6.4/Теперь пишу в Sublime
py.user.next
У тебя остались рекурсивные вызовы. Вот эти внутренние вызовы console() - это всё рекурсивные вызовы. От них надо избавиться, замени их на return или break.
PEHDOM
уже лучше, но всеравно много копипасты
                        if b=='+':
				if d=='+':
					print(a,b,c,d,e,'=',a+c+e)
...............
			elif b=='-':
				if d=='+':
					print(a,b,c,d,e,'=',a-c+e)
...........
и так далее		
1. по хорошему, тебе нужно от этого отказаться, завтра ты добавишь еще логарифм, или производные, это еще туева хуча ифов. По уму нужно написать на кажде мат действие свою функцию, типа summ(a,b), diff(a, b), mult(a,d), div(a,b) и тд… Потом тебе нужно сделать анализ мат. действий, по типу если среди операндов есть * или / то выполняем снначала их, иначе выполняем все по порядку.
2. вот это:
 	
                if enter=='help':
			help()
		elif enter=='exit console':
			print('close console')
			print(exit(0))
		elif enter=='calc2':
			cacl2()
		elif enter=='calc3':
			calc3()
		elif enter=='info':
			info()
		elif enter=='compar':
			compar()
		else:
			print('Неверная команда')
я бы заменил на словарь, както так:
 commands - {'exit console':exit, 'calc2':calc2, 'calc3'calc3:, 'info':info,.... ну и тд..}
if enter in commands:
    command = command[enter]
    command()
else:
    print('Неверная команда')
    
Xakep321
PEHDOM
уже лучше, но всеравно много копипасты
Здравствуйте,
Спасибо, буду учиться и исправляться
Xakep321
py.user.next
У тебя остались рекурсивный вызовы. Вот эти внутренние вызовы console() - это всё рекурсивные вызовы. От них надо избавиться, замени их на return или break.
Здравствуйте,
Спасибо, хорошо, я попробую их заметить, но я лишь начал изучать функции и плохо понимаю суть работы return
py.user.next
Xakep321
но я лишь начал изучать функции и плохо понимаю суть работы return
Это всё равно нужно изучить. Что изучишь сегодня, будешь знать завтра. Завтра нужно будет учить следующее. Материала много и всё нужно.
Xakep321
py.user.next
Я как раз этим занимаюсь)
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