用户:
自信的树毛虫fSM8查看:0 回复:1 评论:0 创建时间:2022-03-13T13:41:42
【作品展示】

【作品介绍】
九下金属三种化学反应归纳,单纯列出可能性,没有反应条件,也不一定全部符合所以实际情况
【作品源代码】
#定义函数
def produce_oxide(key,value):
if type(value) == list:
b = []
for i in value:
a = count2(key,i,'O')
b.append(a)
return b
else:
return count2(key,value,'O')
def produce_solution(key,value,j,k):
if k == -2:
return count2(key,value,j)
if k == -1:
return count1(key,value,j)
def count1(key,value,p):
if value == 1:
a = key + p
else:
if p == 'O' or p == 'Cl':
a = key + p + str(value)
else:
a = key + '('+p+')' + str(value)
return a
def count2(key,value,p):
if value == 2:
a = key+p
elif value == 1:
a = key+'2'+p
else:
if value % 2 == 1:
if p == "O" or p == 'Cl':
a = key + '2' + p + str(value)
else:
a = key + '2' + '('+p+')' + str(value)
if value % 2 == 0:
if p == 'O' or p == 'Cl':
a = key+ p + str(value//2)
else:
a = key+ '('+p+')' + str(value//2)
return a
#定义变量
metal = {
'K': 1,
'Ca': 2,
'Na': 1,
'Mg': 2,
'Al': 3,
'Zn': 2,
'Fe': [2,3],
'Sn': [2,4],
'Pb': [2,4],
'H': 1,
'Cu': [1,2],
'Hg': 2,
'Ag': 1,
'Pt': [2,4],
'Au': 3
}
negative_ion = {
'NO3': -1,
'SO4': -2,
'CO3': -2,
'Cl': -1
}
metal_number = ['K', 'Ca', 'Na', 'Mg', 'Al', 'Zn', 'Fe', 'Sn', 'Pb', 'H', 'Cu', 'Hg', 'Ag', 'Pt', 'Au' ]
#A (1)制造金属氧化物
metal_oxide = {}
for key,value in metal.items():
a = produce_oxide(key,value)
metal_oxide[key] = a
# (2)制造盐溶液
metal_SalineSolution = {}
for key,value in metal.items():
metal_SalineSolution[key] = {}
for key,value in metal.items():
if type(value) == list:
for i in value:
metal_SalineSolution[key][i] = {}
for key,value in metal.items():
for j,k in negative_ion.items():
if type(value) == list:
for i in value:
a = produce_solution(key,i,j,k)
metal_SalineSolution[key][i][j] = a
else:
a = produce_solution(key,value,j,k)
metal_SalineSolution[key][j] = a
'''print(metal_SalineSolution)'''
#B (1)第一种反应类型:金属与O2反应
metal_reaction = []
print('第一种')
reaction_O2 = {}
for key,value in metal.items():
for j,k in metal_oxide.items():
if j == key:
if type(value) == list:
b = []
for i in k:
a = key+' + O2 --> '+i
b.append(a)
reaction_O2[key] = b
else:
a = key+' + O2 --> '+k
reaction_O2[key] = a
for key,value in reaction_O2.items():
if type(value) == list:
for i in value:
print(i)
metal_reaction.append(i)
else:
print(value)
metal_reaction.append(value)
# (2)第二种反应类型:金属与酸反应
print('第二种')
reaction_acid = {}
for key in metal:
reaction_acid[key] = []
for key,value in metal.items():
if key == 'H':
break
if type(value) == list:
for i in value:
for j,k in metal_SalineSolution[key][i].items():
for m,n in metal_SalineSolution['H'].items():
if j == m:
a = key+' + '+n+' --> H2 + '+k
reaction_acid[key].append(a)
else:
for j,k in metal_SalineSolution[key].items():
for m,n in metal_SalineSolution['H'].items():
if j == m:
a = key+' + '+n+' --> H2 + '+k
reaction_acid[key].append(a)
for key,value in reaction_acid.items():
for i in value:
print(i)
metal_reaction.append(i)
# (3)第三种反应类型:金属与盐溶液反应
print('第三种')
reaction_solution = {}
for key in metal:
reaction_solution[key] = []
for key,value in metal.items():
if key == 'H':
continue
p = metal_number.index(key)
for k,v in metal.items():
q = metal_number.index(k)
if p < q:
if type(value) == list:
for i in value:
if type(v) == list:
for s in v:
for j,l in metal_SalineSolution[key][i].items():
for m,n in metal_SalineSolution[k][s].items():
if j == m:
a = key+' + '+n+' --> '+k+' + '+l
reaction_solution[key].append(a)
else:
for j,l in metal_SalineSolution[key][i].items():
for m,n in metal_SalineSolution[k].items():
if j == m:
a = key+' + '+n+' --> '+k+' + '+l
reaction_solution[key].append(a)
else:
if type(v) == list:
for s in v:
for j,l in metal_SalineSolution[key].items():
for m,n in metal_SalineSolution[k][s].items():
if j == m:
a = key+' + '+n+' --> '+k+' + '+l
reaction_solution[key].append(a)
else:
for j,l in metal_SalineSolution[key].items():
for m,n in metal_SalineSolution[k].items():
if j == m:
a = key+' + '+n+' --> '+k+' + '+l
reaction_solution[key].append(a)
for key,value in reaction_solution.items():
for i in value:
print(i)
metal_reaction.append(i)
#C 存入文件
file = open('metal_reaction.txt','w')
for i in metal_reaction:
file.write(i+'\n')
file.close()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn