input
in Python 3.x在Python 2.x中相当于raw_input
,即它返回一个字符串。
评估表达式,如Python 2.x的input
,use 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)
你有什么期待的答案吗? – SilentGhost 2010-11-02 18:40:37
(题外话)碳的分子量是12.0107 g/mol,而不是12. – kennytm 2010-11-02 18:49:18