I have written code, to create variable and assign values using for loop.
JavaScript
x
8
1
nums = [0,1,2,3]
2
names = ["aa","bb","cc","dd"]
3
4
for num, name in zip(nums, names):
5
globals()["df"+str(num)]= names[num]
6
print(exec(f'df{num}'))
7
8
but I am getting result as None
JavaScript
1
8
1
#result:
2
3
None
4
None
5
None
6
None
7
8
but even I tried to change the code with below modification, still getting the same
JavaScript
1
8
1
nums = [0,1,2,3]
2
names = ["aa","bb","cc","dd"]
3
4
for num, name in zip(nums, names):
5
globals()["df"+str(num)]= name
6
print(exec(f'df{num}'))
7
8
Can some one help me to get the proper answer for this.
Note: even I used exec function in the place of name (ex: exec(f'{names[num]}’) then I am getting name error.
Advertisement
Answer
Considering that exec
returns None
, I don’t see why you would expect otherwise.
Try changing a little bit your code to see it is working correctly, for example:
JavaScript
1
7
1
nums = [0,1,2,3]
2
names = ["aa","bb","cc","dd"]
3
4
for num, name in zip(nums, names):
5
globals()["df"+str(num)]= name
6
exec(f'print(df{num})')
7
Outputs:
JavaScript
1
5
1
aa
2
bb
3
cc
4
dd
5
Update: If you want to return something, you must use eval
:
JavaScript
1
7
1
nums = [0,1,2,3]
2
names = ["aa","bb","cc","dd"]
3
4
for num, name in zip(nums, names):
5
globals()["df"+str(num)]= name
6
print(eval(f'df{num}'))
7
Outputs:
JavaScript
1
5
1
aa
2
bb
3
cc
4
dd
5