Python 如果语句比较失败

Python 如果语句比较失败,python,if-statement,lowercase,Python,If Statement,Lowercase,我有以下提示: 你必须做化学作业,但你讨厌抬头看 元素周期表上的元素!编写一个名为的程序 来自标准输入和输出的元素(作为字符串,独立于大小写) 将表示其原子量的双精度打印到标准输出。 仅执行前三个要素的计划,hydrogren, 氦和锂的原子量分别为1.008, 4.0026和6.94。如果输入了其他内容,请打印语句“对不起,我不认识该元素!” 我写了一个代码,但总是得到错误的结果。不管我打什么,它总是打错。标准输出会一直声明“输入元素名称:”以及原子量编号 以下是我写的: hydrogen =

我有以下提示:

你必须做化学作业,但你讨厌抬头看 元素周期表上的元素!编写一个名为的程序 来自标准输入和输出的元素(作为字符串,独立于大小写) 将表示其原子量的双精度打印到标准输出。 仅执行前三个要素的计划,hydrogren, 氦和锂的原子量分别为1.008, 4.0026和6.94。如果输入了其他内容,请打印语句“对不起,我不认识该元素!”

我写了一个代码,但总是得到错误的结果。不管我打什么,它总是打错。标准输出会一直声明“输入元素名称:”以及原子量编号

以下是我写的:

hydrogen = 1.008
helium = 4.0026
lithium = 6.94
atomic_weight = input("Enter element name:").lower()
if atomic_weight == hydrogen:
    print(hydrogen)
elif atomic_weight == helium:
    print(helium)
elif atomic_weight == lithium:
    print(lithium)
else:
    print("Sorry, I don't recognize that element!")
更新代码

hydrogen = 1.008
helium = 4.0026
lithium = 6.94
element_name = input("Enter element name:").lower()
if element_name == hydrogen:
    print(hydrogen)
elif element_name == helium:
    print(helium)
elif element_name == lithium:
    print(lithium)
else:
    print("Sorry, I don't recognize that element!")

您正在将输入与原子量进行比较。您可能希望将其与字符串进行比较,例如,
“氢”
“氦”
“锂”
,您正在将输入与原子量进行比较。您可能希望将其与字符串进行比较,例如
“氢”
“氦”
“锂”
,如果您试图使用以下名称访问原子量,您可能需要一本字典:

elements = {'hydrogen': 1.008,
            'helium': 4.0026,
            'lithium': 6.94}

name = input("Enter element name:").lower()
print(elements.get(name, 'element not found!'))

如果您试图使用以下名称访问原子量,您可能需要一本词典:

elements = {'hydrogen': 1.008,
            'helium': 4.0026,
            'lithium': 6.94}

name = input("Enter element name:").lower()
print(elements.get(name, 'element not found!'))

我终于明白了,输入应该是空的

hy = 1.008
he = 4.0026
li = 6.94


element_name = input("").lower()

if element_name == "hydrogen":
    print(hy)
elif element_name == "helium":
    print(he)
elif element_name == "lithium":
    print(li)
else:
    print("Sorry, I don't recognize that element!")

我终于明白了,输入应该是空的

hy = 1.008
he = 4.0026
li = 6.94


element_name = input("").lower()

if element_name == "hydrogen":
    print(hy)
elif element_name == "helium":
    print(he)
elif element_name == "lithium":
    print(li)
else:
    print("Sorry, I don't recognize that element!")

感谢所有在上面分享、编写我的版本并成功的人(我的第一篇堆栈溢出帖子):


感谢所有在上面分享、编写我的版本并成功的人(我的第一篇堆栈溢出帖子):


atomatic_weight
是一个字符串;这就是您从
输入中得到的结果(否则
.lower()
将不起作用。要将字符串与浮点数进行比较(因为元素是浮点数),您必须将字符串转换为浮点数。另外注意:浮点数比较不精确。这对我们很有帮助,但解释什么对您更有帮助你得到的是“错误的结果”。如果你写了“无论我输入什么名字,我都会得到‘对不起……’”"您可能已经看到了这个问题。正确命名变量也可以省去您的麻烦;您并不是要一个我们知道是数字的
原子量
。您要的是一个
元素名
,这将为输入字符串提供一个更好的名称。感谢您的命名建议!可能是
原子量的重复t
是一个字符串;这是您将从
输入中得到的(否则
.lower()
将不起作用。要将字符串与浮点进行比较(因为您的元素是浮点),您必须将字符串转换为浮点。另外注意:浮点比较是不精确的。这对我们很有帮助,但解释您得到的“错误结果”对您更有帮助。如果您输入了“无论输入什么名称,我都会得到‘对不起…”您可能已经看到了这个问题。正确命名变量也可以省去您的麻烦;您并不是要一个我们知道是数字的
原子量
。您要的是一个
元素名
,这将为输入字符串提供一个更好的名称。感谢您的命名建议!这当然是可能的重复如果你要回答的话,请注意你正在投掷字典和一个非典型的访问模式(<代码>获取< /代码>)当然,这是一种比较复杂的方式,但要考虑你的听众。如果你要回答的话,请注意你正在投掷字典和一个非典型的访问模式(<代码>获取< /代码>)。如果你指的是
输入(“”
)中的字符串,那没关系。你要放在那里的任何东西都会在某人给出的实际输入之前使用一个字符串(问题)。让
“输入元素名”是非常好的:
在那里。如果你指的是
输入(“”)中的字符串,那没关系。你放在那里的任何东西都会在某人给出的实际输入之前使用一个字符串(问题)。让
在那里输入元素名:
是非常好的。