how can I do width python a normal for loop width tree conditions like
for example :
for x=1;x<=100;x+x:
print x
thanks 17 1238
Gandalf <go******@gmail.comwrote:
how can I do width python a normal for loop width tree conditions like
for example :
for x=1;x<=100;x+x:
print x
What you wrote would appear to be an infinite loop so I'll assume you meant
to assign something to x each time round the loop as well. The simple
Python translation of what I think you meant would be:
x = 1
while x <= 100:
print x
x += x
If you really insist on doing it with a for loop:
def doubling(start, limit):
x = start
while x <= limit:
yield x
x += x
....
for x in doubling(1, 100):
print x
On Oct 18, 12:39*pm, Duncan Booth <duncan.bo...@invalid.invalid>
wrote:
Gandalf <goldn...@gmail.comwrote:
how can I do width python a normal for loop width tree conditions like
for example :
for x=1;x<=100;x+x:
* * print x
What you wrote would appear to be an infinite loop so I'll assume you meant
to assign something to x each time round the loop as well. The simple
Python translation of what I think you meant would be:
x = 1
while x <= 100:
* *print x
* *x += x
If you really insist on doing it with a for loop:
def doubling(start, limit):
* * x = start
* * while x <= limit:
* * * * yield x
* * * * x += x
...
for x in doubling(1, 100):
* * print x
thanks
On Oct 18, 12:39*pm, Duncan Booth <duncan.bo...@invalid.invalid>
wrote:
Gandalf <goldn...@gmail.comwrote:
how can I do width python a normal for loop width tree conditions like
for example :
for x=1;x<=100;x+x:
* * print x
What you wrote would appear to be an infinite loop so I'll assume you meant
to assign something to x each time round the loop as well. The simple
Python translation of what I think you meant would be:
x = 1
while x <= 100:
* *print x
* *x += x
If you really insist on doing it with a for loop:
def doubling(start, limit):
* * x = start
* * while x <= limit:
* * * * yield x
* * * * x += x
...
for x in doubling(1, 100):
* * print x
I was hopping to describe it with only one command. most of the
languages I know use this.
It seems weird to me their is no such thing in python. it's not that I
can't fined a solution it's all about saving code
Gandalf wrote:
On Oct 18, 12:39 pm, Duncan Booth <duncan.bo...@invalid.invalid>
wrote:
>Gandalf <goldn...@gmail.comwrote:
>>how can I do width python a normal for loop width tree conditions like for example : for x=1;x<=100;x+x: print x
What you wrote would appear to be an infinite loop so I'll assume you meant to assign something to x each time round the loop as well. The simple Python translation of what I think you meant would be:
x = 1 while x <= 100: print x x += x
...
>
I was hopping to describe it with only one command. most of the
languages I know use this.
It seems weird to me their is no such thing in python. it's not that I
can't fined a solution it's all about saving code
You'd not save code, but only lines (and clearness). You'd also
need more (non-space) characters
Python saves confusion and arbitrariness =you'll usually code
faster, because you don't think so much about voluptuous
multimulti..possibilites, not worth the play: one-ness of mind
If insistent, you could sometimes save lines like this ;-)
x=1
while x<=100: print x; x+=x
Robert
Gandalf wrote:
On Oct 18, 12:39*pm, Duncan Booth <duncan.bo...@invalid.invalid>
wrote:
>Gandalf <goldn...@gmail.comwrote:
how can I do width python a normal for loop width tree conditions like
for example :
for x=1;x<=100;x+x:
* * print x
What you wrote would appear to be an infinite loop so I'll assume you meant to assign something to x each time round the loop as well. The simple Python translation of what I think you meant would be:
x = 1 while x <= 100: * *print x * *x += x
If you really insist on doing it with a for loop:
def doubling(start, limit): * * x = start * * while x <= limit: * * * * yield x * * * * x += x
...
for x in doubling(1, 100): * * print x
I was hopping to describe it with only one command. most of the
languages I know use this.
It seems weird to me their is no such thing in python. it's not that I
can't fined a solution it's all about saving code
Do you anticipate reusing it? You could make something a little more
extendable.
for x in iexpression( 'x', 1, 100, 'x+x' ):
print x
or
for x in iexpression( lambda x: x+x, 1, 100 ):
print x
I'm assuming you don't want or have a closed form, in this case x= 2**
_x.
Gandalf wrote:
On Oct 18, 12:39 pm, Duncan Booth <duncan.bo...@invalid.invalid>
wrote:
>Gandalf <goldn...@gmail.comwrote:
>>how can I do width python a normal for loop width tree conditions like for example : for x=1;x<=100;x+x: print x
What you wrote would appear to be an infinite loop so I'll assume you meant to assign something to x each time round the loop as well. The simple Python translation of what I think you meant would be:
x = 1 while x <= 100: print x x += x
If you really insist on doing it with a for loop:
def doubling(start, limit): x = start while x <= limit: yield x x += x
...
for x in doubling(1, 100): print x
I was hopping to describe it with only one command. most of the
languages I know use this.
It seems weird to me their is no such thing in python. it's not that I
can't fined a solution it's all about saving code
Python: 'makes common things easy and uncommon things possible'.
The large majority of use cases for iteration are iterating though
sequences, actual and virtual, including integers with a constant step
size. Python make that trivial to do and clear to read. Your example is
trivially written as
for i in range(11):
print 2**i
Python provide while loops for more fine-grain control, and a protocol
so *reuseable* iterators can plug into for loops. Duncan showed you
both. If you *need* a doubling loop variable once, you probably need
one more than once, and the cost of the doubling generator is amortized
over all such uses. Any Python proprammer should definitely know how to
write such a thing without hardly thinking. We can squeeze a line out
of this particular example:
def doubling(value, limit):
while value <= limit:
yield value
value += value
Terry Jan Reedy
On Oct 18, 11:31*am, Terry Reedy <tjre...@udel.eduwrote:
Gandalf wrote:
On Oct 18, 12:39 pm, Duncan Booth <duncan.bo...@invalid.invalid>
wrote:
Gandalf <goldn...@gmail.comwrote: how can I do width python a normal for loop width tree conditions like for example : for x=1;x<=100;x+x: * * print x
What you wrote would appear to be an infinite loop so I'll assume you meant
to assign something to x each time round the loop as well. The simple
Python translation of what I think you meant would be:
x = 1
while x <= 100:
* *print x
* *x += x
If you really insist on doing it with a for loop:
def doubling(start, limit):
* * x = start
* * while x <= limit:
* * * * yield x
* * * * x += x
...
for x in doubling(1, 100):
* * print x
I was hopping to describe it with only one command. most of the
languages I know use this.
It seems weird to me their is no such thing in python. it's not that I
can't fined a solution it's all about saving code
Python: 'makes common things easy and uncommon things possible'.
The large majority of use cases for iteration are iterating though
sequences, actual and virtual, including integers with a constant step
size. *Python make that trivial to do and clear to read. Your example is
trivially written as
for i in range(11):
* *print 2**i
Python provide while loops for more fine-grain control, and a protocol
so *reuseable* iterators can plug into for loops. Duncan showed you
both. *If you *need* a doubling loop variable once, you probably need
one more than once, and the cost of the doubling generator is amortized
over all such uses. *Any Python proprammer should definitely know how to
write such a thing without hardly thinking. *We can squeeze a line out
of this particular example:
def doubling(value, limit):
* *while value <= limit:
* * *yield value
* * *value += value
Terry Jan Reedy
I agree that using range() for simple iterations is the way to go.
Here are some examples of python expressions you'd use in specific
situations:
# instead of for (i = 0; i < 100; i++)
for i in range(100): pass
# instead of for (i = 10; i < 100; i++)
for i in range(10, 100): pass
# instead of for (i = 1; i < 100; i += 2)
for i in range(1, 100, 2): pass
# instead of for (i = 99; i >= 0; i--)
for i in range(100)[::-1]: pass
There's always a way to do it, and it's almost always really simple :-D
wbowers <wi************@gmail.comwrote:
I agree that using range() for simple iterations is the way to go.
except that as Terry said, "The large majority of use cases for iteration
are iterating though sequences"
I very rarely use range() in iterations.
Here are some examples of python expressions you'd use in specific
situations:
....
# instead of for (i = 99; i >= 0; i--)
for i in range(100)[::-1]: pass
or:
for i in xrange(99, -1, -1): pass
Aaron Brady wrote:
Gandalf wrote:
>On Oct 18, 12:39 pm, Duncan Booth <duncan.bo...@invalid.invalid> wrote:
>>Gandalf <goldn...@gmail.comwrote: how can I do width python a normal for loop width tree conditions like for example : for x=1;x<=100;x+x: print x What you wrote would appear to be an infinite loop so I'll assume you meant to assign something to x each time round the loop as well. The simple Python translation of what I think you meant would be:
x = 1 while x <= 100: print x x += x
If you really insist on doing it with a for loop:
def doubling(start, limit): x = start while x <= limit: yield x x += x
...
for x in doubling(1, 100): print x
I was hopping to describe it with only one command. most of the languages I know use this. It seems weird to me their is no such thing in python. it's not that I can't fined a solution it's all about saving code
Do you anticipate reusing it? You could make something a little more
extendable.
for x in iexpression( 'x', 1, 100, 'x+x' ):
print x
or
for x in iexpression( lambda x: x+x, 1, 100 ):
print x
I'm assuming you don't want or have a closed form, in this case x= 2**
_x.
#and to learn even more about this, import this:
import this # ;-)
On Sat, 18 Oct 2008 03:52:51 -0700, Gandalf wrote:
I was hopping to describe it with only one command. most of the
languages I know use this.
It seems weird to me their is no such thing in python. it's not that I
can't fined a solution it's all about saving code
It shouldn't be about saving code. There's no shortage of code so that we
have to conserve it. But there is a shortage of time and effort, so
making your code easy to read and easy to maintain is far more important.
for x in (2**i for i in xrange(10)):
print x
will also print 1, 2, 4, 8, ... up to 1000.
--
Steven
On Sun, Oct 19, 2008 at 1:30 PM, Steven D'Aprano
<st***@remove-this-cybersource.com.auwrote:
for x in (2**i for i in xrange(10)):
print x
This is by far the most concise solution I've seen so far.
And it should never be about conserving code.
Also, Python IS NOT C (to be more specific: Python
is not a C-class language).
--JamesMills
--
--
-- "Problems are solved by method"
On Oct 19, 2:30*pm, Steven D'Aprano <st...@REMOVE-THIS-
cybersource.com.auwrote:
[snip]
making your code easy to read and easy to maintain is far more important.
for x in (2**i for i in xrange(10)):
* * print x
will also print 1, 2, 4, 8, ... up to 1000.
I would say up to 512; perhaps your understanding of "up to" differs
from mine.
Easy to read? I'd suggest this:
for i in xrange(10):
print 2 ** i
Cheers,
John
On Sun, Oct 19, 2008 at 1:44 PM, James Mills
<pr******@shortcircuit.net.auwrote:
On Sun, Oct 19, 2008 at 1:30 PM, Steven D'Aprano
<st***@remove-this-cybersource.com.auwrote:
>for x in (2**i for i in xrange(10)): print x
This is by far the most concise solution I've seen so far.
And it should never be about conserving code.
Also, Python IS NOT C (to be more specific: Python
is not a C-class language).
Also, if the OP is finding himself writing such manual
and mundane looking loops, he/she should reconsider
what it is he/she is doing. You would normally want
to iterate (vs. loop) over a sequence of items.
--JamesMills
--
--
-- "Problems are solved by method"
"James Mills" <pr******@shortcircuit.net.auwrites:
for x in (2**i for i in xrange(10)):
print x
This is by far the most concise solution I've seen so far.
print '\n'.join(str(2**i) for i in xrange(10))
On Sat, 18 Oct 2008 20:45:47 -0700, John Machin wrote:
On Oct 19, 2:30Â*pm, Steven D'Aprano <st...@REMOVE-THIS-
cybersource.com.auwrote:
[snip]
>making your code easy to read and easy to maintain is far more important.
for x in (2**i for i in xrange(10)): Â* Â* print x
will also print 1, 2, 4, 8, ... up to 1000.
I would say up to 512; perhaps your understanding of "up to" differs
from mine.
Well, mine is based on Python's half-open semantics: "up to" 1000 doesn't
include 1000, and the highest power of 2 less than 1000 is 512.
Perhaps you meant "up to and including 512".
Easy to read? I'd suggest this:
for i in xrange(10):
print 2 ** i
Well, sure, if you want to do it the right way *wink*.
But seriously, no, that doesn't answer the OP's question. Look at his
original code (which I assume is C-like pseudo-code):
for x=1;x<=100;x+x:
print x
The loop variable i takes the values 1, 2, 4, 8, etc. That's what my code
does. If he was asking how to write the following in Python, your answer
would be appropriate:
for x=1;x<=100;x++:
print 2**x
--
Steven
Steven D'Aprano wrote:
On Sat, 18 Oct 2008 20:45:47 -0700, John Machin wrote:
On Oct 19, 2:30*pm, Steven D'Aprano <st...@REMOVE-THIS-
cybersource.com.auwrote:
[snip]
making your code easy to read and easy to maintain is far more
important.
for x in (2**i for i in xrange(10)):
* * print x
will also print 1, 2, 4, 8, ... up to 1000.
I would say up to 512; perhaps your understanding of "up to" differs
from mine.
Well, mine is based on Python's half-open semantics: "up to" 1000 doesn't
include 1000, and the highest power of 2 less than 1000 is 512.
We're talking about an English sentence, not a piece of Python code.
When you say "I'm taking the train to X", do you get off at the
station before X, as in "getting off at Redfern"?
>
Perhaps you meant "up to and including 512".
On Sun, 19 Oct 2008 03:17:51 -0700, John Machin wrote:
Steven D'Aprano wrote:
>On Sat, 18 Oct 2008 20:45:47 -0700, John Machin wrote:
On Oct 19, 2:30Â*pm, Steven D'Aprano <st...@REMOVE-THIS-
cybersource.com.auwrote:
[snip] making your code easy to read and easy to maintain is far more important.
for x in (2**i for i in xrange(10)): Â* Â* print x
will also print 1, 2, 4, 8, ... up to 1000.
I would say up to 512; perhaps your understanding of "up to" differs
from mine.
Well, mine is based on Python's half-open semantics: "up to" 1000 doesn't include 1000, and the highest power of 2 less than 1000 is 512.
We're talking about an English sentence, not a piece of Python code.
When you say "I'm taking the train to X", do you get off at the station
before X, as in "getting off at Redfern"?
But I don't say "I'm taking the train UP TO X".
Intervals in English are often ambiguous, which is why people often
explicitly say "up to and including...". But in this specific case, I
don't see why you're having difficulty. Whether 1000 was included or not
makes no difference, because 1000 is not a power of 2.
--
Steven This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Oleg Leschov |
last post by:
Could there be means of exiting nested loops in python?
something similar to labelled loops in perl..
I consider it irrating to have to make a flag for sole
purpose of checking it after loop if...
|
by: JustSomeGuy |
last post by:
I have a need to make an applicaiton that uses a variable number of nested
for loops.
for now I'm using a fixed number:
for (z=0; z < Z; ++z)
for (y=0; y < Y; ++y)
for (x=0; x < X; ++x)
|
by: Dr. David Kirkby |
last post by:
I have a program that loops through and changes all the elements on an
array n times, so my code looks like this:
for (n=1; n < n_max; ++n)
for(i=imax; i >= 0; --i) {
for(j=0 ; j < jmax; ++j) {...
|
by: Neptune |
last post by:
Hello.
I am working my way through Zhang's "Teach yourself C in 24 hrs (2e)"
(Sam's series), and for nested loops, he writes (p116) "It's often
necessary to create a loop even when you are...
|
by: Scott Brady Drummonds |
last post by:
Hi, everyone,
I was in a code review a couple of days ago and noticed one of my coworkers
never used for() loops. Instead, he would use while() loops such as the
following:
i = 0;
while (i...
|
by: John Salerno |
last post by:
I'm reading Text Processing in Python right now and I came across a
comment that is helping me to see for loops in a new light. I think
because I'm used to the C-style for loop where you create a...
|
by: Putty |
last post by:
In C and C++ and Java, the 'for' statement is a shortcut to make very
concise loops. In python, 'for' iterates over elements in a sequence.
Is there a way to do this in python that's more concise...
|
by: bitong |
last post by:
I'm a little bit confuse with regard to our subject in C..We are now with the Loops..and I was just wondering if given a problem, can you use Do-while loops instead of a for loops or vise versa? are...
|
by: monomaniac21 |
last post by:
hi all
i have a script that retrieves rows from a single table, rows are
related to eachother and are retrieved by doing a series of while loops
within while loops. bcos each row contains a text...
|
by: Nathan Sokalski |
last post by:
I have several nested For loops, as follows:
For a As Integer = 0 To 255
For b As Integer = 0 To 255
For c As Integer = 0 To 255
If <Boolean ExpressionThen <My CodeElse Exit For
Next
If Not...
|
by: Naresh1 |
last post by:
What is WebLogic Admin Training?
WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge required to effectively administer and manage Oracle...
|
by: antdb |
last post by:
Ⅰ. Advantage of AntDB: hyper-convergence + streaming processing engine
In the overall architecture, a new "hyper-convergence" concept was proposed, which integrated multiple engines and...
|
by: WisdomUfot |
last post by:
It's an interesting question you've got about how Gmail hides the HTTP referrer when a link in an email is clicked. While I don't have the specific technical details, Gmail likely implements measures...
|
by: Carina712 |
last post by:
Setting background colors for Excel documents can help to improve the visual appeal of the document and make it easier to read and understand. Background colors can be used to highlight important...
|
by: BLUEPANDA |
last post by:
At BluePanda Dev, we're passionate about building high-quality software and sharing our knowledge with the community. That's why we've created a SaaS starter kit that's not only easy to use but also...
|
by: Rahul1995seven |
last post by:
Introduction:
In the realm of programming languages, Python has emerged as a powerhouse. With its simplicity, versatility, and robustness, Python has gained popularity among beginners and experts...
|
by: Johno34 |
last post by:
I have this click event on my form. It speaks to a Datasheet Subform
Private Sub Command260_Click()
Dim r As DAO.Recordset
Set r = Form_frmABCD.Form.RecordsetClone
r.MoveFirst
Do
If...
|
by: DizelArs |
last post by:
Hi all)
Faced with a problem, element.click() event doesn't work in Safari browser.
Tried various tricks like emulating touch event through a function:
let clickEvent = new Event('click', {...
|
by: F22F35 |
last post by:
I am a newbie to Access (most programming for that matter). I need help in creating an Access database that keeps the history of each user in a database. For example, a user might have lesson 1 sent...
| |