[新手 python 疑问帖]这个怎么有问题呢?

2016-07-19 18:19:57 +08:00
 Pzdmultiverse
import math
def eval_loop():
    while True:
        s = input('enter your str:\n')
        if s == 'done':
            print('done')
            break
        result = eval(s)
        print(result)
        eval_loop()
eval_loop()

运行之后,第一次就输入done,就结束了,如果第一次不是输入done,那么再输入done,程序还会继续运行,这个情况是为啥呢。。

E:--->python helloworld.py
enter your str:
done
done

E:--->python helloworld.py
enter your str:
1+2
3
enter your str:
done
done
enter your str:

2186 次点击
所在节点    Python
7 条回复
yangtukun1412
2016-07-19 18:23:05 +08:00
递归调用或者死循环去掉一个
Yinz
2016-07-19 18:25:10 +08:00
倒数第二行又调用了一次函数,递归调用了,你这样每多输入一次非'done'字符,你就需要多输一次'done'来跳出循环,改成这样就好了
import math
def eval_loop():
while True:
s = input('enter your str:\n')
if s == 'done':
print('done')
break
result = eval(s)
print(result)
eval_loop()
Pzdmultiverse
2016-07-19 18:54:21 +08:00
@Yinz
@yangtukun1412 懂了,非常感谢
jixiangqd
2016-07-20 12:50:28 +08:00
好像除了代码是 python 写的跟 python 并没啥关系。。。
Pzdmultiverse
2016-07-20 13:04:32 +08:00
@jixiangqd 是这样,标题该写成[新手编程疑问贴]…😂
jixiangqd
2016-07-20 15:20:55 +08:00
@Pzdmultiverse 加油~
Pzdmultiverse
2016-07-20 15:24:51 +08:00
@jixiangqd 共勉~-.-

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/293528

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX