A use-case for for...else with no break
Terry Reedy
tjreedy at udel.edu
Thu Nov 2 23:12:43 EDT 2017
On 11/2/2017 8:53 PM, Steve D'Aprano wrote:
> On Fri, 3 Nov 2017 09:20 am, Terry Reedy wrote:
>
>> This seems like a bug in how Python interacts with your console. On
>> Windows, in Python started from an icon or in Command Prompt:
>>
>> >>> for c in 'abc': print(c, end='')
>> ...
>> abc>>>
>
> That's still unfortunate: the prompt is immediately after the output, rather
> than starting on a new line.
I agree. It is just less bad than backspacing into user output first.
It is easy for IDLE to detect if the prompt needs a \n prefix. I am
guessing that this is harder on consoles, and OS dependent.
>> IDLE adds \n if needed, so prompts always starts on a fresh line.
>>
>> >>> for x in 'abcdefgh':
>> print(x, end='')
>>
>> abcdefgh
>> >>>
>
> The prompts and the output aren't aligned -- the prompts are indented by an
> additional space. Is that intentional?
A copy-paste error (I rechecked) that I should have noticed.
> Does IDLE do this only when writing to an actual console?
IDLE does this when Python writes to its Shell via stdout or stderr.
> Because if it does
> so even when output is redirected to a file, adding an extra, unexpected
> newline would be a bug in IDLE.
IDLE compiles and execs your code. During the exec call, IDLE only sees
output sent to its stdout/stderr replacements. If your code sends
output to a file it opens, IDLE is not involved.
--
Terry Jan Reedy
More information about the Python-list
mailing list