Python论坛  - 讨论区

标题:[python-chinese] 一个小程序,Eclipse3.2.0+Pydev1.2.2和IDLE运行结果不同

2006年07月27日 星期四 10:49

Wayne moonbingbing at gmail.com
Thu Jul 27 10:49:01 HKT 2006

程序如下(Python Tutorial Python3.7.1节):
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
    while 1:
        ok = raw_input(prompt)
        if ok in ('y', 'ye', 'yes'):
            return True
        if ok in ('n', 'no', 'nop', 'nope'):
            return False
        retries = retries - 1
        if retries < 0:
            raise IOError, 'refusenik user'
        print complaint

while 1:
    flag = ask_ok('are you really want to quit?')
    if flag == True:
        break
print 'out'

在Eclipse里面不管输入什么,都输出Yes or no, please!
而在IDLE下面运行结果是正确的。
是Pydev的bug吗?
请教!
-- 
温铭
welcome to my blog : http://blog.csdn.net/wayne92
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060727/bf3d2d69/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月27日 星期四 11:06

Peng Jun Jia jiapengjun at gmail.com
Thu Jul 27 11:06:24 HKT 2006

在Eclipse里把OK的值打出来看看,可能输入的值被改动了。


On 7/27/06, Wayne <moonbingbing at gmail.com> wrote:
> 程序如下(Python Tutorial Python3.7.1节):
> def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
>     while 1:
>         ok = raw_input(prompt)
>         if ok in ('y', 'ye', 'yes'):
>             return True
>          if ok in ('n', 'no', 'nop', 'nope'):
>             return False
>         retries = retries - 1
>         if retries < 0:
>             raise IOError, 'refusenik user'
>         print complaint
>
> while 1:
>     flag = ask_ok('are you really want to quit?')
>     if flag == True:
>         break
> print 'out'
>
> 在Eclipse里面不管输入什么,都输出Yes or no, please!
> 而在IDLE下面运行结果是正确的。
> 是Pydev的bug吗?
> 请教!
> --
>  温铭
> welcome to my blog : http://blog.csdn.net/wayne92
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
缘分の天空 (QQ:7992118)

──────────────────────────────
MSN    : jiapj at hotmail.com
BLog    : http://spaces.msn.com/jiapj
Flickr   : http://www.flickr.com/photos/jiapj
Picasa : http://picasaweb.google.com/jiapengjun
──────────────────────────────

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月27日 星期四 11:22

Wayne moonbingbing at gmail.com
Thu Jul 27 11:22:10 HKT 2006

设置断点后,发现问题处在哪儿了。
我输入一个字符串后按回车,所以ok的后面加了'\r'
将程序改为:
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
    while 1:
        ok = raw_input(prompt)
        print ok
        if ok in ('y\r', 'ye\r', 'yes\r'):
            return True
        if ok in ('n\r', 'no\r', 'nop\r', 'nope\r'):
            return False
        retries = retries - 1
        if retries < 0:
            raise IOError, 'refusenik user'
        print complaint

while 1:
    flag = ask_ok('are you really want to quit?')
    if flag == True:
        break
print 'out'
在Eclipse里面运行结果正确。(当然,在IDLE里面运行就错了:(  )

看来在Eclipse和IDLE中对输入的处理不一样:Eclipse把回车既当作输入的结束符也当作了输入值的一部分;而IDLE只把回车当作输入的结束符。


2006/7/27, Peng Jun Jia <jiapengjun at gmail.com>:
>
> 在Eclipse里把OK的值打出来看看,可能输入的值被改动了。
>
>
-- 
温铭
welcome to my blog : http://blog.csdn.net/wayne92
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060727/748a5550/attachment-0001.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月27日 星期四 11:41

Yiding He yiding.he at gmail.com
Thu Jul 27 11:41:54 HKT 2006

原来如此,学习!

2006/7/27, Wayne <moonbingbing at gmail.com>:
>
> 设置断点后,发现问题处在哪儿了。
> 我输入一个字符串后按回车,所以ok的后面加了'\r'
> 将程序改为:
>
> def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
>     while 1:
>         ok = raw_input(prompt)
>         print ok
>         if ok in ('y\r', 'ye\r', 'yes\r'):
>             return True
>         if ok in ('n\r', 'no\r', 'nop\r', 'nope\r'):
>
>             return False
>         retries = retries - 1
>         if retries < 0:
>             raise IOError, 'refusenik user'
>         print complaint
>
> while 1:
>     flag = ask_ok('are you really want to quit?')
>     if flag == True:
>         break
> print 'out'
> 在Eclipse里面运行结果正确。(当然,在IDLE里面运行就错了:(  )
>
> 看来在Eclipse和IDLE中对输入的处理不一样:Eclipse把回车既当作输入的结束符也当作了输入值的一部分;而IDLE只把回车当作输入的结束符。
>
>
> 2006/7/27, Peng Jun Jia <jiapengjun at gmail.com>:
> >
> > 在Eclipse里把OK的值打出来看看,可能输入的值被改动了。
> >
> >
> --
>
> 温铭
> welcome to my blog : http://blog.csdn.net/wayne92
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


-- 
                       致
礼!
                             贺一丁
                         yiding.he at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060727/2cd907a3/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年07月27日 星期四 11:54

ainulinde ainulinde at gmail.com
Thu Jul 27 11:54:00 HKT 2006

ok= raw_input(prompt)
之后加一个 ok = ok.strip()
我这儿pydev1.2.1也有这个问题,看起来是对\r\n处理的不好吧

On 7/27/06, Wayne <moonbingbing at gmail.com> wrote:
> 设置断点后,发现问题处在哪儿了。
> 我输入一个字符串后按回车,所以ok的后面加了'\r'
> 将程序改为:
>
> def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
>     while 1:
>         ok = raw_input(prompt)
>         print ok
>         if ok in ('y\r', 'ye\r', 'yes\r'):
>             return True
>         if ok in ('n\r', 'no\r', 'nop\r', 'nope\r'):
>
>             return False
>         retries = retries - 1
>         if retries < 0:
>             raise IOError, 'refusenik user'
>         print complaint
>
> while 1:
>     flag = ask_ok('are you really want to quit?')
>     if flag == True:
>         break
> print 'out'
> 在Eclipse里面运行结果正确。(当然,在IDLE里面运行就错了:(  )
>
> 看来在Eclipse和IDLE中对输入的处理不一样:Eclipse把回车既当作输入的结束符也当作了输入值的一部分;而IDLE只把回车当作输入的结束符。
>
>
> 2006/7/27, Peng Jun Jia <jiapengjun at gmail.com>:
> > 在Eclipse里把OK的值打出来看看,可能输入的值被改动了。
> >
> >
>
> --
>
> 温铭
> welcome to my blog : http://blog.csdn.net/wayne92
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号