在Python 3中输入变量

时间:2010-11-02 18:37:28

标签: python input python-3.x

是否可以让用户输入等于涉及化学元素的任务的变量。

例如,碳具有分子量12,但我不想使用输入12,它们应该输入'C'。但是当输入将其转换为字符串时,不可能将其置于变量C = 12。

有没有办法输入变量而不是字符串?

如果没有,我可以将字符串设置为变量。

示例:

C = 12

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

print(element*multiplier)

这只会返回一个错误,指出您不能乘以字符串。

4 个答案:

答案 0 :(得分:9)

您可以像这样更改代码:

>>> 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

答案 1 :(得分:3)

input in Python 3.x相当于Python 2.x中的raw_input,即它返回一个字符串。

评估该表达式,如Python 2.x的inputuse eval,如doc for changes from 2.x to 3.0所示。

element = eval(input("element symbol: "))
....

但是,eval允许执行任何Python代码,因此这可能非常危险(和慢)。大多数时候你不需要eval的力量,包括这个。由于您只是获取全局符号,因此可以使用the globals() dictionary,并将字符串转换为整数,请使用the int function

element = globals()[input("element symbol: ")]
multiplier = int(input("how many? "))

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

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)

答案 2 :(得分:1)

由于输入始终返回字符串类型。不允许乘以字符串。 因此,在获取input之后,如果在python中使用int类型,则需要输入强制转换。

试试这个:

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

答案 3 :(得分:0)

element = eval(input(“element symbol:”))

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

您可能更喜欢拥有字典对象