Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #37534 > unrolled thread
| Started by | Milter Skyler <matt17@gmail.com> |
|---|---|
| First post | 2013-01-23 20:39 -0800 |
| Last post | 2013-01-23 21:10 -0800 |
| Articles | 4 — 2 participants |
Back to article view | Back to comp.lang.python
Decrease for loop by one Milter Skyler <matt17@gmail.com> - 2013-01-23 20:39 -0800
Re: Decrease for loop by one Chris Angelico <rosuav@gmail.com> - 2013-01-24 15:59 +1100
Re: Decrease for loop by one Milter Skyler <matt17@gmail.com> - 2013-01-23 21:10 -0800
Re: Decrease for loop by one Milter Skyler <matt17@gmail.com> - 2013-01-23 21:10 -0800
| From | Milter Skyler <matt17@gmail.com> |
|---|---|
| Date | 2013-01-23 20:39 -0800 |
| Subject | Decrease for loop by one |
| Message-ID | <7694aab5-7926-482e-975a-7685c7b94351@googlegroups.com> |
I'm using this code with Sikuli so thats why I have click()
for x in range(0,10):
decimal_value = random.randint(1,12)
if myList.count(decimal_value) < 1:
egg = 'A%d.png' % (decimal_value)
egg = wait(egg)
click(egg.getCenter().offset(random.randint(-10,10), random.randint(-10,10)))
myList.append(decimal_value)
else:
print x
x-1 = x
print x
I made an array to check if the random integer already exists and then I send it to the else statement at which point I want to decrease x by 1 so that it doesn't count as one of the loops. In other languages this works but it just comes up with the output:
3
2
9
8
10
9
[toc] | [next] | [standalone]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2013-01-24 15:59 +1100 |
| Message-ID | <mailman.941.1359003563.2939.python-list@python.org> |
| In reply to | #37534 |
On Thu, Jan 24, 2013 at 3:39 PM, Milter Skyler <matt17@gmail.com> wrote:
> I made an array to check if the random integer already exists and then I send it to the else statement at which point I want to decrease x by 1 so that it doesn't count as one of the loops. In other languages this works...
A Python 'for' loop doesn't behave like that; you can't just edit the
loop counter. But take a step back: what are you actually trying to
accomplish? As I see it, you're trying to pick ten unique random
values in the range 1-12 inclusive. Try this:
random.sample(range(1,13),10) # note that range() stops *before* its second arg
That'll give you a list of those integers, and it's a lot safer and
more reliable than the try-fail-retry method. Your loop can become:
for decimal_value in random.sample(range(1,13),10):
egg = 'A%d.png' % (decimal_value)
egg = wait(egg)
click(egg.getCenter().offset(random.randint(-10,10),
random.randint(-10,10)))
By the way, this line simply won't work:
x-1 = x
I think you mean:
x = x-1
But I strongly suggest you copy and paste directly rather than retype;
it's less error-prone.
Hope that helps!
ChrisA
[toc] | [prev] | [next] | [standalone]
| From | Milter Skyler <matt17@gmail.com> |
|---|---|
| Date | 2013-01-23 21:10 -0800 |
| Message-ID | <24b5f5ee-f88f-45a1-9c12-f3381209b647@googlegroups.com> |
| In reply to | #37536 |
On Wednesday, January 23, 2013 9:59:13 PM UTC-7, Chris Angelico wrote: > On Thu, Jan 24, 2013 at 3:39 PM, Milter Skyler <> wrote: > > > I made an array to check if the random integer already exists and then I send it to the else statement at which point I want to decrease x by 1 so that it doesn't count as one of the loops. In other languages this works... > > > > A Python 'for' loop doesn't behave like that; you can't just edit the > > loop counter. But take a step back: what are you actually trying to > > accomplish? As I see it, you're trying to pick ten unique random > > values in the range 1-12 inclusive. Try this: > > > > random.sample(range(1,13),10) # note that range() stops *before* its second arg > > > > That'll give you a list of those integers, and it's a lot safer and > > more reliable than the try-fail-retry method. Your loop can become: > > > > for decimal_value in random.sample(range(1,13),10): > > egg = 'A%d.png' % (decimal_value) > > egg = wait(egg) > > click(egg.getCenter().offset(random.randint(-10,10), > > random.randint(-10,10))) > > > > By the way, this line simply won't work: > > > > x-1 = x > > > > I think you mean: > > > > x = x-1 > > > > But I strongly suggest you copy and paste directly rather than retype; > > it's less error-prone. > > > > Hope that helps! > > > > ChrisA Thanks! That worked perfect, I was trying to figure that out but instead I just went down the hard route I went down.
[toc] | [prev] | [next] | [standalone]
| From | Milter Skyler <matt17@gmail.com> |
|---|---|
| Date | 2013-01-23 21:10 -0800 |
| Message-ID | <mailman.943.1359004246.2939.python-list@python.org> |
| In reply to | #37536 |
On Wednesday, January 23, 2013 9:59:13 PM UTC-7, Chris Angelico wrote: > On Thu, Jan 24, 2013 at 3:39 PM, Milter Skyler <> wrote: > > > I made an array to check if the random integer already exists and then I send it to the else statement at which point I want to decrease x by 1 so that it doesn't count as one of the loops. In other languages this works... > > > > A Python 'for' loop doesn't behave like that; you can't just edit the > > loop counter. But take a step back: what are you actually trying to > > accomplish? As I see it, you're trying to pick ten unique random > > values in the range 1-12 inclusive. Try this: > > > > random.sample(range(1,13),10) # note that range() stops *before* its second arg > > > > That'll give you a list of those integers, and it's a lot safer and > > more reliable than the try-fail-retry method. Your loop can become: > > > > for decimal_value in random.sample(range(1,13),10): > > egg = 'A%d.png' % (decimal_value) > > egg = wait(egg) > > click(egg.getCenter().offset(random.randint(-10,10), > > random.randint(-10,10))) > > > > By the way, this line simply won't work: > > > > x-1 = x > > > > I think you mean: > > > > x = x-1 > > > > But I strongly suggest you copy and paste directly rather than retype; > > it's less error-prone. > > > > Hope that helps! > > > > ChrisA Thanks! That worked perfect, I was trying to figure that out but instead I just went down the hard route I went down.
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.python
csiph-web