【发布时间】:2021-10-28 13:56:22
【问题描述】:
我的学生想在函数内部使用 input()。 这是一个示例学生代码,这是一个简单的计算器:
def calc():
while(True):
req=input(": ")
if req=="":
break
print(req+"="+str(eval(req)))
calc()
我一直认为这没有完成。还是我错了? 请帮我弄清楚。如果不这样做,请解释原因
PS.我们不讨论返回,只是在函数体中使用输入
【问题讨论】:
-
在函数中使用
input很好。关键是要决定应该在哪个函数input中使用。最好将纯计算与“不纯”I/O分开。你为什么推迟介绍return?这是正确使用函数的关键部分。 (请,不要这么早介绍eval;你会让你的学生认为eval的使用是常见且安全的。) -
True周围的括号?嗯,它们是不必要的,但无害的。eval?用火把它烧掉。是的,解析可能超出了他们现在正在做的事情,但是教他们eval可以,只是因为它方便会养成非常的坏习惯。最好为他们提供适当的专注功能,让他们可以代替它使用。 -
非常感谢!关于 reterns - 我们熟悉函数返回的内容。我在这种情况下看到了一个错误,但讨论的目的不同。单一责任原则))