Python 3中的输入变量

4 投票
4 回答
14074 浏览
提问于 2025-04-16 06:27

有没有办法让用户输入一个值,等于一个变量,用于涉及化学元素的任务呢?

比如,碳的分子质量是12,但我不想让用户输入12,他们应该输入'C'。但是因为输入会变成字符串,所以无法把它和变量C = 12联系起来。

有没有办法让输入变成变量,而不是字符串呢?

如果不行,我能不能把字符串设置成变量呢?

举个例子:

C = 12

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

print(element*multiplier)

这样做会返回一个错误,提示你不能用字符串进行乘法运算。

4 个回答

1

因为输入的内容总是以字符串的形式返回,所以不能直接对字符串进行乘法运算。

所以在使用 input 获取输入后,如果你想用 int 类型来处理,就需要进行类型转换。

试试这个:

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

在Python 3.x中,input的功能和Python 2.x中的raw_input是一样的,也就是说,它返回的是一个字符串。

如果你想像Python 2.x中的input那样来评估表达式,可以使用eval,具体可以参考从2.x到3.0的变化文档

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

不过,eval可以执行任何Python代码,这可能会非常危险(而且速度也慢)。大多数情况下,你并不需要eval的强大功能,包括这种情况。因为你只是想获取一个全局变量,你可以使用全局变量字典globals(),如果你想把字符串转换成整数,可以使用int函数

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

撰写回答