Closed. This question needs to be more focused。它目前不接受答案。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
三年前关闭。
我现在正在上化学课,我想做一个能计算强酸/弱酸溶液pH值的程序会很有趣。代码在playgrounds中工作,我希望最终将其实现到一个iOS项目中。程序包含3个参数:酸的初始浓度、酸的化学式和酸的平衡常数(如果需要)。该程序首先获取酸的初始浓度,然后获取酸的化学式,并确定酸的强弱。接下来,我建立了一个if语句来根据酸的强度计算pH值。如果酸很弱,就需要一个平衡常数。以下是我目前掌握的情况:
由于我对编程很陌生,这是我第一次尝试编写任何代码,所以我想知道是否有什么方法可以清理我的代码,或者有什么技巧可以更好地组织代码。如有任何帮助,我们将不胜感激。谢谢。
下面是函数的使用示例:
下面是该函数的一个较小版本,它的编写效率稍高(工作原理相同):
还有一个更小的版本,不太可读:
想改进这个问题吗?更新问题,使其只关注一个问题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/