IronCarbonPhaseDiagramCalculator(铁碳相图计算)
def calculate_ferrite_and_cementite(a):
"""根据碳含量计算总铁素体和总渗碳体的百分比"""
TFe = ((6.67 - a) / (6.67 - 0.025)) * 100
TCe = 100 - TFe
return TFe, TCe
def print_output(steel_type, TFe, TCe, prior_ferrite=None, pearlite=None, prior_cementite=False):
"""打印输出信息"""
print("\t\t\t输入的信息\n")
print(f"这是 {steel_type}。")
print(f"总铁素体含量为: {TFe:.2f}%")
print(f"总渗碳体含量为: {TCe:.2f}%")
if prior_ferrite is not None:
print(f"{'先共析铁素体量' if not prior_cementite else '先共析渗碳体量'}为: {prior_ferrite:.2f}%")
if pearlite is not None:
print(f"珠光体量为: {pearlite:.2f}%")
def main():
while True:
print("\t\t\t杠杆规则(铁-渗碳体图)\n")
try:
# 提示用户输入碳含量并说明不要加百分号
a_input = input("请输入碳含量(例如:0.5 表示 0.5%,而不是 0.5%):\n").strip()
if '%' in a_input:
raise ValueError("请不要在数值后加上百分号。")
a = float(a_input)
except ValueError as e:
print(f"输入错误: {e}. 请输入一个有效的数字。\n")
continue
TFe, TCe = calculate_ferrite_and_cementite(a)
if 0.025 < a < 0.8:
prior_ferrite = ((0.8 - a) / (0.8 - 0.025)) * 100
pearlite = 100 - prior_ferrite
print_output("亚共析钢", TFe, TCe, prior_ferrite=prior_ferrite, pearlite=pearlite)
elif a == 0.8:
print_output("共析钢", TFe, TCe, pearlite=100)
elif 0.8 < a <= 2.14:
prior_cementite = ((a - 0.8) / (6.67 - 0.8)) * 100
pearlite = 100 - prior_cementite
print_output("过共析钢", TFe, TCe, prior_ferrite=None, pearlite=pearlite, prior_cementite=True)
elif a > 2.14:
print("\t\t\t 输入的信息\n")
print("这是铸铁(根据铁-渗碳体图)。")
else:
print("\t\t\t 输入的信息\n")
print("被认为是间隙自由钢(IF钢)。")
y = input("\n是否继续计算?(继续='y', 退出=任意键):\n")
if y.lower() != 'y':
break
if __name__ == "__main__":
main()