Python Forum
Looping through variables and setting them
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Looping through variables and setting them
#1
I'm not new to programming, however I am new to Python.

To learn python, I've decided to make an AI for tic tac toe (or knots and crosses).

I've come pretty far, using different techniques of programming. I'm currently a bit stuck.

I have the following variables:

(pos1, pos2, pos3 ... pos7, pos8 ,pos9):
To reduce size, instead of setting them individually, I want to itterate through the variables and setting to a certain value, like the following:

for i in range(1:9):
    eval("pos" + str(i) = i
Result:

pos1 = 1
pos2 = 2
pos3 = 3
.
.
.
pos7 = 7
pos8 = 8
pos9 = 9
However this does not work because "I can't assign eval to function call."

I've tried to Google the answer, but it only showed how I can use the eval function on the other side of the equal sign.


Please help,
W.
Reply
#2
If you going to have pos1 through pos9. Why not use a list or at least a dict.
List start at 0.
pylist = [1,2,3,4,5,6,7,8,9]
for l in pylist:
    l += 1
print(pylist)
99 percent of computer problems exists between chair and keyboard.
Reply
#3
I want to use as much techniques as possible. That's the only way I can learn to program even better.
Reply
#4
Learning techniques is good. But programming should always be kept simple as possible. The KISS philosophy.

I wouldn't use this in code.
exec('pos{0} + i'.format(i))
99 percent of computer problems exists between chair and keyboard.
Reply
#5
(Dec-17-2017, 01:33 PM)ColdDeath Wrote: I want to use as much techniques as possible. That's the only way I can learn to program even better.

I concur with the Windspar. You should try keeps things as simple as possible. Particular for what your trying to do list should suffice perfectly., The problem with using function like eval and exec is a potential threat to security. It allows to create a security hole to access the underlying system. As a general rule try avoiding using eval or exec :)
Reply
#6
eval() is not needed and also is dangerous. Why do you want to create a bunch of variables separately? Why don't create just a list? How would you use them? Typing all by hand when you can just loop them all.
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#7
Using eval and exec is for sure not the way to go.
Think of what happen when do pos1 = 1 Think
>>> pos1 = 1
>>> pos1
1
Internally  is python storing this a dictionary.
>>> globals()
{'__name__': '__main__', 'pos': 1,}
>>> globals()['pos1']
1
We should not do the tricks and using the globals() dictionary.
Making a normal visible dictionary is the way to go.
>>> d = {}
>>> for i in range(1,9):
...     d[f'pos{i}'] = i
...
    
>>> d
{'pos1': 1,
 'pos2': 2,
 'pos3': 3,
 'pos4': 4,
 'pos5': 5,
 'pos6': 6,
 'pos7': 7,
 'pos8': 8}

>>> d['pos1']
1
Reply
#8
Cool! Thank you all for the reaction!

That made matters worse for me, so I know I'm learning, cool!

I've used the eval before to loop through lists and inserting pieces of string. However, from my understanding:
eval.type = "evil"
eval.usage = "never ever"
I now have to figure out how to use lists and dictionaries as an multi-dimensional array.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Setting permanent user variables in Windows coder420 2 1,404 Jan-04-2022, 10:42 AM
Last Post: Larz60+
  Help Setting Multiple Variables bzowk 0 1,594 Jul-18-2020, 06:59 PM
Last Post: bzowk
  setting pythonpath variable in environment variables saisankalpj 3 3,456 Dec-05-2018, 10:33 PM
Last Post: Gribouillis
  os.environ not setting current shell variables in Windows? brian6667 2 10,809 Apr-26-2017, 12:59 PM
Last Post: brian6667

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020