有没有办法将下面的代码放到一个函数中?或者有没有办法让它不那么笨重?
def getf():
while True:
try:
s = raw_input('> ')
return float(s)
except ValueError:
print "Are you sure that's a number? Please enter a number"
def cats_and_people():
print "Hello. We are in a crisis and need your help to set a number of animals!"
print "First, let's set a number of cats!: "
cats = float(getf())
print "Now let's set a number of people!: "
people = float(getf())
if cats > people:
print ("\nToo many cats! The World is doomed!").upper()
else:
print ("\nNot enough cats! The World is doomed!").upper()
cats_and_people()
答案 0 :(得分:0)
尤金!
你正在学习如何编码真棒!
一般情况下,可以在多个功能中使用。实际上,你应该专注于尽可能多的功能,只要它们有点通用!
这有助于您构建代码的各个部分,这些部分可以通过多种不同的方式为您提供帮助,其中一小部分是:
1)每个功能都在做特定的事情。让您更好地可视化正在发生的事情!
2)这使得测试功能变得更容易,当测试失败时,您立即知道代码的哪一部分需要工作。
3)更容易阅读!
获取用户输入的方式没有任何问题。你的代码中有一些缺陷,但我也看到了一些好东西:
1)您正确处理了异常。
2)您的变量名称具有相当的描述性!
3)你正在验证你的输入 - 太棒了!
一些问题:
1)我认为这只是一个格式错误,但你需要正确地缩进try块。
2)你在用户输入上使用了float()两次。不需要!
3)在最后两个打印陈述中你不需要你的parens。
这是一个很好的开始。坚持下去!在担心代码结构太多之前,您必须熟悉Python。一旦你能够理解了很多Python API(知道你需要用什么函数来完成某些操作),你就能够阅读流行的库。阅读您感兴趣的库,您将了解它们如何构建代码,设计模式等等。这将为您的工具带增添很多。
祝你好运,玩得开心!
答案 1 :(得分:0)
如果您愿意放弃尝试阻止,您可以执行以下操作:
def cats_and_ppl():
print(...)
cats = float(raw_input())
print(...)
ppl = float(raw_input())
if ...:
else..:
如果你想检查输入确实是一个数字,但你不想打开另一个方法,我的建议是你打开一个while循环并等待可接受的输入。类似的东西:
while(x = raw_input()):
if isinstance(x, float):
break