Python 对代码及其工作原理的澄清+如何返回到代码的开头?

Python 对代码及其工作原理的澄清+如何返回到代码的开头?,python,python-2.7,Python,Python 2.7,刚开始学习一些Python。我正在尝试建立一个简单的算法来进行化学离子复合反应,即。EKBr+NaCl->KCl+NaBr 基本上,我要求用户输入两种反应物,如KBr和NaCl,我希望python重新排列这两种反应物,其中第一种反应物的第一部分与第二种反应物的第二部分相匹配,如KCl和NaBr。我遇到的一个问题是处理像钾或碘化物这样的单字母输入,我不确定如果是KBr或KI,我将如何分割字符串。我在下面的代码中尝试过这样做,但是我得到了一些奇怪的结果,比如KIBr和Mg 最后,我想知道如何将用户返

刚开始学习一些Python。我正在尝试建立一个简单的算法来进行化学离子复合反应,即。EKBr+NaCl->KCl+NaBr

基本上,我要求用户输入两种反应物,如KBr和NaCl,我希望python重新排列这两种反应物,其中第一种反应物的第一部分与第二种反应物的第二部分相匹配,如KCl和NaBr。我遇到的一个问题是处理像钾或碘化物这样的单字母输入,我不确定如果是KBr或KI,我将如何分割字符串。我在下面的代码中尝试过这样做,但是我得到了一些奇怪的结果,比如KIBr和Mg

最后,我想知道如何将用户返回到最后一行之后的代码开头?也就是说,当程序输出数据时,我如何让它以循环的方式返回并再次询问用户

参考‘C’=阳离子,‘N’=阴离子

# Asks user for reactants input.
Alpha = raw_input("Alpha reactant = ")
Beta = raw_input("Beta reactant = ")

# Searches for one-letter elements to prevent mixed output.
if str(['K','H']) in a:
    Alpha_C = a[0]
else:
    Alpha_C = a[:2]

if str(['F','I']) in a:
    Alpha_N = a[-1]
else:
    Alpha_N = a[2:]

if str(['K','H']) in b:
    Beta_C = b[0]
else:
    Beta_C = b[:2]

if str(['F','I']) in b:
    Beta_N = b[-1]
else:
    Beta_N = b[2:]

# Recombines the reacted ions.
Re_Alpha = Alpha_C + Beta_N
Re_Beta = Alpha_N + Beta_C

# Final statement additions, product response, and return to start.
z = "Your products are the following: "; Q = " , "
print z + Re_Alpha + Q + Re_Beta

您需要将所有内容放入某种形式的循环中,例如:

while True:
    Alpha = raw_input("Alpha reactant = ")
    Beta = raw_input("Beta reactant = ")
    ...
但是你需要打破这个循环,例如

    if Alpha == 'q' or Beta == 'q':
        break
这将在为真时保持循环,直到用户为任一输入输入q为止

您发布的参考代码正确吗?因为我在其中没有看到任何关于Alpha或Beta的参考,只有a和b
什么是预期的输入阿尔法和贝塔和预期的输出,因为我不认为你的条件做你期望他们做什么,例如STR [’k’,' h’]只是等于[’k’,' h ' ],我怀疑这是在您的用户输入。< /p> 关于第一个问题:考虑使用正则表达式分析反应物。
import re
regex = re.compile('([A-Z][a-z]?)([A-Z][a-z]?)')
alpha_parts = re.match(regex, Alpha)
beta_parts = re.match(regex, Beta)

if alpha_parts and beta_parts:
    Alpha_C, Alpha_N = alpha_parts.groups()[0], alpha_parts.groups()[1]
    Beta_C, Beta_N = beta_parts.groups()[0], beta_parts.groups()[1]
else:
    # handle invalid input

你在哪里定义a和b?你让它以循环的方式返回。我建议在编写更多代码之前先阅读Python的基础知识,因为循环是几乎所有程序的基本构造块之一。@Dannnno我想你让我意识到我是个傻瓜,没有解决这个问题。我以前用过a和b,但后来改用了alpha-beta,不知怎么的,我没有想到要改变这些变量。感谢您的重大认识@TigerhawkT3就可以了。谢谢你的帮助!是的。我以前用过a和b,把它们改成了Alpha和Beta,只是因为。也忘了更改这些变量。谢谢