如何解决Python-串联变量
在Python 3中,是否可以将字符串/变量连接到(另一个)变量?
说我有一些名称相似的变量(为简单起见,它们是变量;实际上,我想用类和对象来做):
var1 = 'Hello'
var2 = 'Greetings'
用户输入一个数字,脚本使用else if语句打印:
choice = input("Please select a number (1-2) >")
if choice = 1:
print(var1)
elif choice = 2:
print(var2)
但是我想做的是直接打印,而不必使用else if / switch语句/字典等。我希望这样做prints(var+choice)
,其中choice会连接到var,所以如果choice = 1,它将将是print(var1)
;并且如果choice = 3,它将为print(var3)
(这将产生错误,未定义变量)。
如果没有办法做到,那么打印具有相似名称的变量的最干净方法是什么?
解决方法
在这种情况下,可以使用变量列表,然后仅打印索引的变量。
var = ['Hello','Greetings']
...
print(var[choice-1]) # since python is 0-indexed
,
这不是一个好习惯,但是您可以使用eval
:
print(eval('var'+str(choice)))
,
使用globals()
动态获取变量值
globals函数返回模块范围内的变量字典,因此您可以通过{p>获得var1
或var2
selected_greeting = globals()[f"var{choice}"]
请参阅链接的文档,以获取有关您可以访问哪些变量的警告。
进一步阅读:getattr将使您动态地获取其他对象的变量值。
使用字典或列表
我们最终通过字典访问var1
和var2
,因此,如果您的程序允许您仍然可以使用字典或列出
# A dict example
# Note: I'm using var1 and var2 here for continuity only.
# Give a more descriptive key if you want
greetings = {
"var1": "hello","var2": "greetings",}
selected_greeting = greetings[f"var{choice}"]
# A list example
greetings = ["hello","greetings"]
selected_greeting = greetings[int(choice) - 1] # Cast to int,input gives us strings. Also subtract 1 because lists are zero indexed
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。