Python 3中的输入变量

Python 3中的输入变量,python,input,python-3.x,Python,Input,Python 3.x,对于涉及化学元素的任务,用户输入是否可能等于变量 例如,碳的分子质量为12,但我不想使用输入12,它们应该输入“C”。但当输入将其转换为字符串时,不可能将其与变量C=12联系起来 有没有办法输入字符串的变量istead 如果不是,我可以将字符串设置为变量 例如: C = 12 element = input('element symbol:') multiplier = input('how many?') print(element*multiplier) 这只会返回一个错误,说明不能乘

对于涉及化学元素的任务,用户输入是否可能等于变量

例如,碳的分子质量为12,但我不想使用输入12,它们应该输入“C”。但当输入将其转换为字符串时,不可能将其与变量C=12联系起来

有没有办法输入字符串的变量istead

如果不是,我可以将字符串设置为变量

例如:

C = 12

element = input('element symbol:')
multiplier = input('how many?')

print(element*multiplier)
这只会返回一个错误,说明不能乘以字符串。

相当于Python2.x中的
raw\u input
,即它返回一个字符串

要像Python 2.x的
输入那样计算该表达式,请参见

但是,
eval
允许执行任何Python代码,因此这可能非常危险(而且速度很慢)。大多数情况下,您不需要
eval
的功能,包括此功能。因为您刚刚获得一个全局符号,所以可以使用,并且要将字符串转换为整数,请使用

但是,当需要字典时,为什么不重新构造程序并将所有内容存储在字典中呢

ELEMENTS = {'C': 12.0107, 'H': 1.00794, 'He': 4.002602, ...}

try:
  element_symbol = input("element symbol: ")
  element_mass = ELEMENTS[element_symbol]

  multiplier_string = input("how many? ")
  multiplier = int(multiplier_string)

  print(element_mass * multiplier)

# optional error handling
except KeyError:
  print("Unrecognized element: ", element_symbol)
except ValueError:
  print("Not a number: ", multiplier_string)

您可以这样更改代码:

>>> masses = {'C': 12}
>>> element = input('element symbol:')
element symbol:C
>>> masses[element]
12
>>> multiplier = input('how many?')
how many?5
>>> multiplier
'5'                                          # string
>>> masses[element] * int(multiplier)
60
元素=eval(输入(“元素符号:”)

将是最简单的,但不一定是最安全的。另外,您的符号需要在本地范围内


您可能更喜欢使用dictionary对象,因为输入总是返回字符串类型。不允许与字符串相乘。 因此,在获取
输入后,如果在python中使用
int
type,则需要键入cast

试试这个:

multiply_string = input("how many? ")
multiplier = int(multiplier_string) #type cast here as int

你希望得到什么答案?(主题外)碳的分子质量是12.0107 g/mol,而不是12。不要在这里使用
eval()
globals()
。使用
if element\u symbol not in mass:…
@JF:I同意
eval
globals
,这就是最终答案没有这些的原因,但我不同意
if element\u symbol not in mass:
的异常处理。“请求原谅比得到允许更容易。”
>>> masses = {'C': 12}
>>> element = input('element symbol:')
element symbol:C
>>> masses[element]
12
>>> multiplier = input('how many?')
how many?5
>>> multiplier
'5'                                          # string
>>> masses[element] * int(multiplier)
60
multiply_string = input("how many? ")
multiplier = int(multiplier_string) #type cast here as int