我的功能没有运行

时间:2014-08-12 22:24:17

标签: python eclipse pydev termination

使用随机函数并使用3种不同的函数执行3项操作,第一项给出了从10个整数的列表中随机显示的1,10的值。第二个给我一个列表值1,10并将它们平方。然后最后但并非最不重要的是第三个单独的数字可以除以三。问题是我的程序没有在eclipse上运行程序没有错误,但我的程序终止而没有打印任何东西。请帮帮我......

import random

def main():

def rand10():
    my_list = []
    for _ in xrange(10):
        my_list.append(random.randint(0,10))
    print my_list

def squareint_():
    squares = []
    for _ in xrange(0,10):
        squares.append(random.randint(0,10))**2
    print squares


def div3():
    divlist = []
    num = range(1,10)
    if (num % 3 == 0):
        for _ in xrange(20):
            divlist.append(random.randint(0,10))
        print divlist



if __name__ == '__main__':
    main()

2 个答案:

答案 0 :(得分:4)

您只是致电main()而不是functions嵌套在main()内的任何一个,

使用if __name__ == '__main__':并不会神奇地调用您的所有功能。

如果您的main功能如下:

def main():
    squareint_()
    div3()
    rand10()

然后你会按原样调用其他函数,main什么也不做或什么都不返回。

就您的方法而言,squares.append(random.randint(0,10))**2无效,您无法在列表方法上使用**

它必须位于paren squares.append(random.randint(0,10)**2)

此外,num是一个列表,因此您无法使用if num % 3 == 0:

您可以使用以下内容:

def div3():
    divlist = []
    num = range(1,10)
    for n in num: # loop over the list elements
        if n % 3 == 0:
            for _ in xrange(20):
                divlist.append(random.randint(0,10))
    print divlist

答案 1 :(得分:1)

代码目前存在两个问题:

  1. 您在main()内定义了您的功能,这是允许的,但它不是很好的编码习惯。如果您这样做,那么您只能在main()内使用这些功能。
  2. 您实际上并未调用任何功能,而只是定义它们。需要使用rand10()squareint_()div3()来调用它们。
  3. 尝试使用这段代码,修复了这两个问题:

    import random
    
    def rand10():
        my_list = []
        for _ in xrange(10):
            my_list.append(random.randint(0,10))
        print my_list
    
    def squareint_():
        squares = []
        for _ in xrange(0,10):
            squares.append(random.randint(0,10))**2
        print squares
    
    
    def div3():
        divlist = []
        num = range(1,10)
        if (num % 3 == 0):
            for _ in xrange(20):
                divlist.append(random.randint(0,10))
            print divlist
    
    def main():
        rand10()
        squareint_()
        div3()
    
    if __name__ == '__main__':
        main()
    

    当然,如果你的功能无效,那么它们需要自己修复。这只是解决了执行代码时没有发生任何问题的问题。现在,当您在Eclipse中运行项目时,您将看到一些错误并能够正确地修复它们。