0

这是我第一次发帖,而且我已经很久没有学习编码了。这是我尝试自己构建的第一个脚本,请多多关照。

该程序链接到元素及其原子质量的 CSV。用户输入一个化学式,返回的是分子量和分子量百分比的分解。它运行良好,但目前它需要6 个值,例如 H2SO4 的 H 2 S 1 O 4 。显然我希望有长公式的选项,但对于较短的,脚本返回一个错误,说它需要 6 个变量,但只有 4 个要解包,例如:H2O1。

如果没有用户输入/输入只是空白,是否有一种直接的方法可以使脚本跳过/忽略变量?我一直在谷歌上搜索它,但要么它比我想象的要困难,要么我没有很好地使用搜索引擎。我搞砸了 for 循环,但没有任何东西可以打球。

附上代码,我知道如果我有更多的知识,它可能会简单/流畅两倍。提前致谢。

def formula():
element_1, element_1_size, element_2, element_2_size, element_3, element_3_size = input("Enter your formula: ").split()

element_1_mass = float(elements_data_symbols.loc[element_1, "Atomic Mass"])
element_2_mass = float(elements_data_symbols.loc[element_2, "Atomic Mass"])
element_3_mass = float(elements_data_symbols.loc[element_3, "Atomic Mass"])

element_1_molecular_mass = element_1_mass * int(element_1_size)
element_2_molecular_mass = element_2_mass * int(element_2_size)
element_3_molecular_mass = element_3_mass * int(element_3_size)

molecular_mass = element_1_molecular_mass + element_2_molecular_mass + element_3_molecular_mass

molecule_name = str(element_1 + element_1_size + element_2 + element_2_size + element_3 + element_3_size)

print("Molecular mass of " + molecule_name + ": " + str(molecular_mass) + " g/mol")

element_1_percentage = element_1_molecular_mass / molecular_mass * 100
element_2_percentage = element_2_molecular_mass / molecular_mass * 100
element_3_percentage = element_3_molecular_mass / molecular_mass * 100


print(element_1 + ": " + str(element_1_percentage) + " %")
print(element_2 + ": " + str(element_2_percentage) + " %")
print(element_3 + ": " + str(element_3_percentage) + " %")
print(" ")
4

1 回答 1

0

你是对的,一种更有效的方法是使用循环遍历数组中的每一对元素,但为了简单起见,你可以修改代码以有条件地设置元素,前提是输入数组为特定长度:

    # Receive user input as an array
    elements = input("Enter your formula").split()

    # First element should always exist (but could also do this conditionally)
    element_1 = elements[0]
    element_1_size = elements[1]

    # Check if array has at least 4 elements
    if len(elements) >= 4:
        element_2 = elements[2]
        element_2_size = elements[3]

    # Check if array has at leat 6 elements
    if len(elements) >= 6:
        element_3 = elements[4]
        element_3_size = elements[5]
于 2020-02-24T11:35:00.597 回答