Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- cls = lambda clsed: print('\n' * clsed)
- formules = (
- "Q=L*m",
- "I=q/t",
- "I=U/R",
- "R=p*l/S"
- )
- pre = [
- 'да', 'г', 'к', 'М', 'Г', 'Т', 'П', 'Э', 'З', 'И',
- 'д', 'с', 'м', 'мк', 'н', 'п', 'ф', 'а', 'з', 'и'
- ]
- prek = [
- '**1', '**2', '**3', '**6', '**9', '**12', '**15', '**18', '**21', '**24',
- '**-1', '**-2', '**-3', '**-6', '**-9', '**-12', '**-15', '**-18', '**-21', '**-24'
- ]
- si = {'t' : 'c', 'I' : 'А', 'q' : 'Кл', 'Q' : 'Дж', 'L' : 'Дж/Кг', 'm' : 'кг', 'U' : 'В', 'R' : 'Ом',
- 'p' : 'Ом*мм2/м', 'S' : 'мм', 'l' : 'м'}
- def calc(input_str):
- global pre, prek
- input_str = input_str.split('=')
- input_str[0] = input_str[0].replace(' ', '')
- x = input_str[1]
- x = x.split(" ")
- x = list(filter(None, x))
- x[0] = eval(x[0])
- for i in range(0, len(pre)):
- if pre[i] + 'А' == x[1]:
- x[0] = eval(str(x[0]) + '*10'+ prek[i])
- x[0] = str(x[0])
- x[1] = 'А'
- x[0] = str(round(float(x[0]), 6))
- break
- elif pre[i] + 'Ом' == x[1]:
- x[0] = eval(str(x[0]) + '*10'+ prek[i])
- x[0] = str(x[0])
- x[1] = 'Ом'
- x[0] = str(round(float(x[0]), 6))
- break
- elif pre[i] + 'В' == x[1]:
- x[0] = eval(str(x[0]) + '*10'+ prek[i])
- x[0] = str(x[0])
- x[1] = 'В'
- x[0] = str(round(float(x[0]), 6))
- break
- elif pre[i] + 'м' == x[1]:
- x[0] = eval(str(x[0]) + '*10'+ prek[i])
- x[0] = str(x[0])
- x[1] = 'м'
- x[0] = str(round(float(x[0]), 6))
- break
- elif pre[i] + 'Кл' == x[1]:
- x[0] = eval(str(x[0]) + '*10'+ prek[i])
- x[0] = str(x[0])
- x[1] = 'Кл'
- x[0] = str(round(float(x[0]), 6))
- break
- elif pre[i] + 'с' == x[1]:
- x[0] = eval(str(x[0]) + '*10'+ prek[i])
- x[0] = str(x[0])
- x[1] = 'с'
- x[0] = str(round(float(x[0]), 6))
- break
- elif 'мин' == x[1]:
- x[0] = eval(str(x[0]) + '*60')
- x[0] = str(x[0])
- x[1] = 'с'
- x[0] = str(round(float(x[0]), 6))
- break
- elif 'ч' == x[1]:
- x[0] = eval(str(x[0]) + '*3600')
- x[0] = str(x[0])
- x[1] = 'с'
- x[0] = str(round(float(x[0]), 6))
- break
- elif 'гр' == x[1]:
- x[0] = eval(str(x[0]) + '/1000')
- x[0] = str(x[0])
- x[1] = 'кг'
- x[0] = str(round(float(x[0]), 6))
- break
- elif 'т' == x[1]:
- x[0] = eval(str(x[0]) + '*1000')
- x[0] = str(x[0])
- x[1] = 'кг'
- x[0] = str(round(float(x[0]), 6))
- break
- else:
- x[0] = eval(str(x[0]))
- x[0] = str(x[0])
- if float(x[0]) % 1 == 0:
- x[0] = x[0].replace('.0', '')
- x[0] = int(x[0])
- x[0] = str(x[0])
- x = ' '.join(x)
- input_str[1] = x
- return '='.join(input_str)
- def express(formule, find):
- formule2 = formule.split('=')
- if len(formule) == 5:
- if '+' in formule:
- if formule2[1].find(find) == 0:
- formule = formule2[1][0] + '=' + formule2[0] + '+' + formule2[1][-1]
- if formule2[1].find(find) == 2:
- formule = formule2[1][-1] + '=' + formule2[1][0] + '-' + formule2[0]
- elif '-' in formule:
- if formule2[1].find(find) == 0:
- formule = formule2[1][0] + '=' + formule2[0] + '-' + formule2[1][-1]
- if formule2[1].find(find) == 2:
- formule = formule2[1][-1] + '=' + formule2[1][0] + '-' + formule2[0]
- elif '*' in formule:
- if formule2[1].find(find) == 0:
- formule = formule2[1][0] + '=' + formule2[0] + '/' + formule2[1][-1]
- if formule2[1].find(find) == 2:
- formule = formule2[1][-1] + '=' + formule2[0] + '/' + formule2[1][0]
- elif '/' in formule:
- if formule2[1].find(find) == 0:
- formule = formule2[1][0] + '=' + formule2[0] + '*' + formule2[1][-1]
- if formule2[1].find(find) == 2:
- formule = formule2[1][-1] + '=' + formule2[1][0] + '/' + formule2[0]
- elif len(formule) == 7:
- if '+' in formule:
- pass
- elif '/' in formule and '*' in formule:
- if formule2[1].find(find) == 0:
- formule = find + '=' + formule2[0] + '*' + formule2[1][4] + '/' + formule2[1][2]
- if formule2[1].find(find) == 2:
- formule = find + '=' + formule2[0] + '*' + formule2[1][4] + '/' + formule2[1][0]
- if formule2[1].find(find) == 4:
- formule = find + '=' + formule2[1][0] + "*" + formule2[1][2] + '/' + formule2[0]
- return formule
- def given():
- global si
- given_str, regiven_str = [], []
- i, wformule = 0, [0, 0, 0, 0]
- print("Дано:")
- while i <= 20:
- given_str.append(input())
- if '?' in given_str[i]:
- find = given_str[i].replace(' ', '')
- find = find.split('-')
- find = find[0]
- break
- regiven_str.append(calc(given_str[i]))
- if 'q' in regiven_str[i] or 't' in regiven_str[i]:
- wformule[1] += 1
- elif 'Q' in regiven_str[i] or 'm' in regiven_str[i] or 'l' in regiven_str[i]:
- wformule[0] += 1
- elif 'U' in regiven_str[i]:
- wformule[2] += 1
- elif 'I' in regiven_str[i]:
- wformule[2] += 1
- wformule[1] += 1
- elif 'p' in regiven_str or 'l' in regiven_str[i] or 'S' in regiven_str[i]:
- wformule[3] += 1
- elif 'R' in regiven_str[i]:
- wformule[3] += 1
- wformule[2] += 1
- i += 1
- for j in range(0, len(regiven_str)):
- s = regiven_str[j].split(' ')
- s = s[0]
- exec(s)
- if wformule[1] == 2:
- result_formule = express(formules[1], find)
- result_formule = result_formule.split('=')
- result = eval(result_formule[1])
- i = 1
- elif wformule[0] == 2:
- i = 0
- result_formule = express(formules[0], find)
- result_formule = result_formule.split('=')
- result = eval(result_formule[1])
- elif wformule[2] == 2:
- i = 2
- result_formule = express(formules[2], find)
- result_formule = result_formule.split('=')
- result = eval(result_formule[1])
- elif wformule[3] == 2:
- i = 3
- result_formule = express(formules[3], find)
- result_formule = result_formule.split('=')
- result = eval(result_formule[1])
- regiven_str2 = []
- regiven_str2 += regiven_str
- try:
- for lk in range(0, len(regiven_str)):
- test_regiven = regiven_str2[lk].replace(' ', '')
- test_given = given_str[lk].replace(' ', '')
- if test_given == test_regiven:
- del(regiven_str2[lk])
- lk -= 1
- except: pass
- print("СИ:\n" + '\n'.join(regiven_str2))
- if '='.join(result_formule) == formules[i]:
- print("Решение:\n" + formules[i])
- else:
- print("Решение:\n" + formules[i] + ' -> ' + '='.join(result_formule))
- for po in range(0, len(regiven_str)):
- sreg = regiven_str[po].split('=')
- exec(sreg[0] + '=' + "'" + sreg[1] + "'")
- if result > 0.00006:
- result = round(result, 4)
- else:
- result = round(result, 8)
- if len(result_formule[1]) == 3:
- print(result_formule[0] + '=' + str(eval(result_formule[1][0])) + result_formule[1][1] + str(eval(result_formule[1][2])) + ' = ' + str(result) + ' ' + si[find])
- elif len(result_formule[1]) == 5:
- print(result_formule[0] + '=' + str(eval(result_formule[1][0])) + result_formule[1][1] + str(eval(result_formule[1][2])) + result_formule[1][3] + eval(result_formule[1][4]) + ' = ' + str(result) + ' ' + si[find])
- print("Ответ: " + find + ' = ' + str(result) + ' ' + si[find])
- def start():
- while True:
- a = input("1. Начать писать через дано. 2. Посмотреть формулы\n ")
- if a == '1':
- given()
- elif a == '2':
- cls(100)
- print("""
- Формула Удельной Теплоты Плавления:
- Q = lambda*m
- где Q - это количество теплоты, lambda - удельная теплота правления, m - это масса.
- Формула Удельной Теплоты Парообразования:
- Q = L*m
- где Q - это количество теплоты, L - удельная теплота парообразования, m - это масса.
- Формула Силы Тока:
- I = q/t
- где I - это сила тока, q - это электрический разряд, t - это время
- """)
- if a == 'close':
- break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement