我正在编写一个化学计算器,它使用元素名并将其转换为电荷的值。所以氢等于1,但是我想要实际的元素,像氢,但是它是一个字符串值,所以我想把这个字符串值转换成一个整数值,例如在这个输入(第一个元素=氢)氢=1中已经设置的整数值,并且我需要打印氢,它打印1,但是它总是以字符串的形式出现。
发布于 2022-05-05 15:08:02
最简单的方法是使用字典将元素名映射到原子序数,反之亦然:
elements = {
"hydrogen": 1,
"helium": 2,
}
atomic_nums = {num: elem for elem, num in elements.items()}
elems = input("input elements: ").lower().split()
print(*elems, sep=" + ", end=" = ")
print(atomic_nums[sum(elements[e] for e in elems)])input elements: hydrogen hydrogen
hydrogen + hydrogen = helium更多的OOP方法是创建一个类并实现一个__add__操作。Enum作为这方面的基础非常好:
from enum import Enum
class Element(Enum):
NoElement = 0
Hydrogen = 1
Helium = 2
def __add__(self, other):
return type(self)(self.value + other.value)
elems = [Element.__members__[e] for e in input("input elements: ").title().split()]
print(*(e.name for e in elems), sep=" + ", end=" = ")
print(sum(elems, Element.NoElement).name)OOP方法使向加法逻辑添加复杂性变得更加容易,例如,如果您希望类支持特定的组合,并对那些从物理角度来说没有意义的组合产生异常,或者在某些情况下返回Compound (您定义的另一个类)而不是Element,则会更容易。
发布于 2022-05-05 15:08:14
使用int()命令将字符串转换为int很容易
a_str_that_i_want_to_be_a_int = '44'
#first way
a_str_that_i_want_to_be_a_int = int(a_str_that_i_want_to_be_a_int)
#2nd way (will not penitently change type)
int(a_str_that_i_want_to_be_a_int) + a_inthttps://stackoverflow.com/questions/72129411
复制相似问题