我正在学习python以获得乐趣。我习惯用C ++编码,到目前为止它很容易拾取。我自己写了第一个程序,但由于某种原因,它没有做任何事情,我写的函数也不会执行。如果我在函数外部编写print语句,则语句会执行,但它永远不会进入函数内部。这是我的代码。任何提示都将非常感激。
PasteSpecial()
答案 0 :(得分:4)
StackAdder
是一个函数;它既不是True
也不是False
,因此ConsecutivePrime
被调用,它只是没有做任何事情。
答案 1 :(得分:1)
在ConsecutivePrime()
函数的开头添加这些行,并观察输出:
print(StackAdder == True)
print(StackAdder == False)
你可以看到False
两次打印,对吗?惊讶吗?阅读Scott Hunter对答案的评论。可能会有所帮助。
因此,while
和if
的条件都是假的。
如果你想要的是检查返回的值StackAdder()
,你需要这样做:
def ConsecutivePrime():
primeNum = 0
stack = []
while(StackAdder(myStack) == False): # define myStack to your needs
primeNum = isPrime(primeNum)
stack.append(primeNum)
StackAdder(stack)
if(StackAdder(myStack) == True):
print ("Largets Prime: ", sum)
答案 2 :(得分:0)
构建代码的方式存在重大问题,我将尝试指出函数中最明显的错误:
1)关于函数isPrime(primeNum)
,这是写它的正确方法:
def isPrime(primeNum):
isPrime = False
while not isPrime:
primeNum += 1
if(primeNum % 2 == 1): #First Checks If Odd
if(primeNum % 3 == 0):
isPrime == False
elif(primeNum % 5 == 0):
isPrime == False
elif(primeNum % 7 == 0):
isPrime == False
elif(primeNum % 9 == 0):
isPrime == False
else:
isPrime == True
return primeNum
我将while(isPrime == False)
重写为while not isPrime
。此外,您不需要if(isPrime == True)
语句,因为在isPrime == True
时将退出while循环。
2)在函数StackAdder(stack)
中,您将介绍之前未定义的count
。也许你想要sum
而不是?或者您可能正在尝试使用count()
方法(返回列表中obj出现次数的计数?)
3)在函数ConsecutivePrime()
中,Stackadder
是一个函数,因此您的代码应为:while(StackAdder(stack) == False)