我试图用Python编写我自己的素数和完美的方格检查器,
如果这是一个素数,函数应该打印“Foo”;如果这是一个完美的正方形,函数应该打印“Bar”;如果两者都不是,函数应该打印“FooBar”
这是我的代码:

def FooBar():
    prime = True
    perfSqr = False
    for target in range(100,100001):
        for num in range(1,target+1):
            if target % num == 0 and num != target:
                prime = False

            if target // num == num and target % num == 0:
                perfSqr = True

    if prime is True:
        print 'Foo'
    elif perfSqr is True:
        print 'Bar'
    else:
        print 'FooBar'

if __name__ == '__main__':
    FooBar()

不知怎的,我根本无法让它运行,有人能给我一些提示吗?

最佳答案

很少的事情。第一个是运行num1target + 1num % 1始终为0,因此您从不打印任何素数。
接下来,不要在迭代中重置primeperfSqr标志。此外,还需要将print语句移到外部循环中,以便它们打印每个迭代。
按预期工作:

def FooBar():
    for target in range(100, 100001):
        prime = True
        perfSqr = False
        for num in range(2, target + 1):
            if target % num == 0 and num != target :
                prime = False

            if target // num == num and target % num == 0:
                perfSqr = True

        if prime or perfSqr:
            print(num, end=', ')
            if prime:
                print('Foo', end=', ')
            elif perfSqr:
                print('Bar', end=' ')
            print('\n')

08-20 01:17