如何动态地传递变量名?我的意思是,如果用户输入的是'c',则counterc应该加1。
这是我到目前为止所拥有的。
counterc = 0
countern = 0
counterx = 0
letter = input()
if letter in ['c','n','x']:
counter${letter} += 1 # does not work
eval('counter' + letter + '=' + 1) # tried with this one too, but still does not work
答案 0 :(得分:1)
counterc = 0
countern = 0
counterx = 0
letter = input()
if letter in ['c','n','x']:
globals()['counter{}'.format(letter)] += 1
print(globals()['counter{}'.format(letter)])
稍后谢谢 如果您使用的是python2输入'c',则在py3上输入c而不带引号。
答案 1 :(得分:1)
eval
方法用于返回一个值,而不是用于执行字符串命令并且仅接受一个行命令
要执行字符串命令,您需要使用exec
方法,这是正确的代码
counterc = 0
countern = 0
counterx = 0
letter = input()
if letter in ['c','n','x']:
exec('counter' + letter + '=' + 1)
答案 2 :(得分:0)
locals
内置函数提供了locals变量的(variable_name => variable_value)字典。此外,该词典不是只读的。
然后locals()[f"counter{letter}"] += 1
应该会做。
如果您使用的Python版本低于3.6,请改用locals()[f"counter{}".format(letter)] += 1
。