结合零参数函数

时间:2015-06-11 17:43:05

标签: python function if-statement

有没有办法将下面的代码放到一个函数中?或者有没有办法让它不那么笨重?

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()

2 个答案:

答案 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