Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с кодом на пайтоне

Николай Минаев Профи (848), на голосовании 7 месяцев назад
хочу сделать химический калькулятор.

x = input('первый реактив:')
y = input('второй реактив:')
K = str(1)
V_1 = str(1)
V_2 = str(1)
D = x
P = y
K1 = str(1)
K2 = str(1)
G = int(1)

if x == str('Al'):
V_1 = str(3)

if y == str('H2'):
V_2 = str(1)
y = str('H')
if y == str('O2'):
V_2 = str(2)
y = str('O')
if y == str('Cl2'):
y = str('Cl')
K2 = str(1)

if x == str('H2'):
V_1 = str(1)
x = str('H')
if x == str('O2'):
V_2 = str(2)
x = str('O')
if x == str('Cl2'):
x = str('Cl')
K2 = str(1)
#это не работает
CHnumbers = ['2', '4', '6', '8', '10']
if V_1 in CHnumbers:
K = str(1)
else:
K = str(2)

if K == str(1):
G = int(1)
else:
G = int(K)

two_atom = ['H2', 'O2', 'Cl2', 'I2', 'N2', 'Br2', 'F2' ]
if y in two_atom:
K2 = str((int(G) * int(V_1)) / 2)
else:
K2 = str(int(G) * int(V_1))

if x in two_atom:
K1 = str((int(G) * int(V_2)) / 2)
else:
K1 = str(int(G) * int(V_2))
#это не работает

if V_1 == str(1):
V_1 = str( )
if V_2 == str(1):
V_2 = str( )
if K == str(1):
K = str( )
if K2 == str(1):
K2 = str( )
if K1 == str(1):
K1 = str( )

print(f'{K1}{D} + {K2}{P} => {K}{x}{V_2}{y}{V_1}')
я только начинаю и буду рад вашей помощи.
Голосование за лучший ответ
Egor_PivoZavr Профи (703) 8 месяцев назад
Так что надо?
Egor_PivoZavrПрофи (703) 8 месяцев назад
А, понял, сам новичок, не знаю
Николай МинаевПрофи (848) 8 месяцев назад
первый реактив:Al
второй реактив:O2
4Al + 6O2 => 2Al2O3
эта шестерка должна делиться на 2 но она не делиться
Egor_PivoZavr Профи (703) Николай Минаев, ну я вообще не разбираюсь. Я прям новичок новичо. Я мало шарю
Татьяна Просветленный (36384) 8 месяцев назад
 def get_valence(element): 
valences = {
'H': 1, 'O': 2, 'Cl': 1, 'I': 1, 'N': 3, 'Br': 1, 'F': 1,
'Al': 3, 'C': lambda n: 4 if n in [2, 4, 6, 8, 10] else 2
}
if element in valences:
if callable(valences[element]):
return valences[element](len(element))
else:
return valences[element]
return None

# Функция для обработки двухатомных молекул
def process_diatomic(element, coefficient):
diatomic_elements = ['H', 'O', 'Cl', 'I', 'N', 'Br', 'F']
if element in diatomic_elements:
return f'{coefficient // 2}{element}2'
return f'{coefficient}{element}'

# Ввод реактивов
reactant1 = input('Первый реактив: ').strip()
reactant2 = input('Второй реактив: ').strip()

# Определение валентностей и коэффициентов
valence1 = get_valence(reactant1[0])
valence2 = get_valence(reactant2[0])

if valence1 is None or valence2 is None:
print('Неверный ввод реактивов.')
else:
# Вычисление коэффициентов
lcm = lambda a, b: a * b // gcd(a, b)
gcd = lambda a, b: a if b == 0 else gcd(b, a % b)
coefficient = lcm(valence1, valence2)
coefficient1 = coefficient // valence1
coefficient2 = coefficient // valence2

# Формирование результата
result1 = process_diatomic(reactant1[0], coefficient1)
result2 = process_diatomic(reactant2[0], coefficient2)
product = f'{result1} + {result2} => {reactant1}{coefficient2}{reactant2}{coefficient1}'

print(product)
Николай МинаевПрофи (848) 8 месяцев назад
спасибо конечно, но он не так работает
Похожие вопросы