Python 使用循环读取和写入变量
我想编写一个程序,使变量具有如下循环:Python 使用循环读取和写入变量,python,Python,我想编写一个程序,使变量具有如下循环: for k in range(5): exec(f'test_{k} = k') 但问题是我想做同样的事情,但是从变量中读取值: for k in range(5): print('test_'+ k ) 我知道这行不通,因为: 它是int到str(它给出了这个错误) 它不会打印变量的值(因为他不知道它是一个变量) 有人能帮我吗?对于第一个问题,您已经在第一个示例(f'test{k}=k')中解决了它,所以您也可以在第二个示例中解决它
for k in range(5):
exec(f'test_{k} = k')
但问题是我想做同样的事情,但是从变量中读取值:
for k in range(5):
print('test_'+ k )
我知道这行不通,因为:
有人能帮我吗?对于第一个问题,您已经在第一个示例(
f'test{k}=k'
)中解决了它,所以您也可以在第二个示例中解决它
范围(5)内k的:
执行官(f'print(test_{k}))
或者您可以先使用exect(f'test{k}')
或eval(f'test{k}')
读取值,然后对其执行任何操作
或者甚至使用
globals()
或locals()
首先,您使用的print()
会逐字打印字符串,它应该会抛出错误,因为字符串和int无法连接:
for k in range(5):
print(globals()[f'test_{k}'])
其次,如果输入是恶意的,eval()
可能是危险的,因此为了避免它,请使用globals()
:
最后,最好的方法是使用字典:
varDic = {f'test_{k}':k for k in range(5)}
然后像这样检索:
varDic['test_3']
在循环或其他内部。在循环中使用eval
print(eval(f“test{k}”))
不要这样做,这就是为什么……谢谢,但是我可以在if中这样做吗?你能分享一个你想要的用法示例吗?
varDic['test_3']