Closed. This question needs to be more focused。它目前不接受答案。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post
三年前关闭。
我现在正在上化学课,我想做一个能计算强酸/弱酸溶液pH值的程序会很有趣。代码在playgrounds中工作,我希望最终将其实现到一个iOS项目中。程序包含3个参数:酸的初始浓度、酸的化学式和酸的平衡常数(如果需要)。该程序首先获取酸的初始浓度,然后获取酸的化学式,并确定酸的强弱。接下来,我建立了一个if语句来根据酸的强度计算pH值。如果酸很弱,就需要一个平衡常数。以下是我目前掌握的情况:
import UIKit

func acidConcentration(acidMolarity: Double) -> Double {
    return acidMolarity
}

let initialConcentration = acidConcentration(0.50)

var hydroniumConcentration = 0.00

var pH = 0.00

func determineAcidStrength(acidName: String) -> String {

    var acidStrength = ""

    if acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3" {
        acidStrength = "strong"
    } else {
        acidStrength = "weak"
    }

    return acidStrength

}

let strength = determineAcidStrength("HBr")

if strength == "strong" {

    hydroniumConcentration = initialConcentration

    pH = -log10(hydroniumConcentration)

    print(String(format: "%.2f", pH))

} else {

    func equilibriumConstant(ka: Double) -> Double {
        return ka
    }

    let eqConstant = equilibriumConstant

    var weakAcidConcentration = sqrt(eqConstant(1.8e-5) * initialConcentration)

    pH = -log10(weakAcidConcentration)

    print(String(format: "%.2f", pH))

}

由于我对编程很陌生,这是我第一次尝试编写任何代码,所以我想知道是否有什么方法可以清理我的代码,或者有什么技巧可以更好地组织代码。如有任何帮助,我们将不胜感激。谢谢。

最佳答案

对于可以在单个函数中完成的任务,您发布的代码过于复杂。
下面的函数接受两个参数,acidName作为String,initialConcentration作为Double,并返回浓度作为Double值。

func calculateConcentration(acidName: String, initialConcentration: Double) -> Double {
    var acidIsStrong = false;

    if acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3" {
        acidIsStrong = true;
    }
    if acidIsStrong {
        return -log10(initialConcentration);
    } else {
        return -log10( (1.8e-5) * initialConcentration);
    }
}

下面是函数的使用示例:
//Just pass in your acid name and initial concentration
let concentration = calculateConcentration("HBr", initialConcentration: 0.50);
print(String(format: "%.2f", concentration));

下面是该函数的一个较小版本,它的编写效率稍高(工作原理相同):
func calculateConcentration(acidName: String, initialConcentration: Double) -> Double {
    if acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3" {
        return -log10(initialConcentration);
    }
    return -log10( (1.8e-5) * initialConcentration);
}

还有一个更小的版本,不太可读:
func calculateConcentration(acidName: String, initialConcentration: Double) -> Double {
    return -log10( initialConcentration * ((acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3") ? (1.8e-5) : 1.0));
}

关于ios - 该代码有效,但不确定如何在iOS中实现该代码。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36192759/

10-14 22:10
查看更多