我现在学习python是为了好玩。我习惯于用C++编码,到目前为止,它很容易被拾取。我自己写了我的第一个程序,但由于某种原因,它什么都不做,我写的函数也不会执行。如果我在函数外编写print语句,这些语句就会执行,但它永远不会进入函数内部。这是我的密码。任何提示都将不胜感激。你知道吗
racks = 1000000
sum = 0
def ConsecutivePrime():
primeNum = 0
stack = []
while(StackAdder == False):
primeNum = isPrime(primeNum)
stack.append(primeNum)
StackAdder(stack)
if(StackAdder == True):
print ("Largets Prime: ", sum)
def StackAdder(stack):
for n in stack:
sum += n
if(count < racks):
return False
else:
stack.pop()
return True
def isPrime(primeNum):
isPrime = False
while(isPrime == False):
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
if(isPrime == True):
return primeNum
def main():
ConsecutivePrime()
if __name__ == "__main__":
main()
StackAdder
是一个函数;它既不是True
也不是False
,所以ConsecutivePrime
被调用,它什么都不做。你知道吗在
ConsecutivePrime()
函数的开头添加这些行,并观察输出:你可以看到
False
打印两次,对吗?惊讶吗?阅读斯科特·亨特对答案的评论。也许这会有点帮助。你知道吗所以,
while
和if
的条件都是假的。你知道吗如果您想检查
StackAdder()
返回了什么值,则需要这样做:您构建代码的方式存在一些主要问题,我将尝试指出函数中最明显的错误:
1)关于函数
isPrime(primeNum)
,这是正确的编写方法:我把
while(isPrime == False)
重写为while not isPrime
。另外,您不需要if(isPrime == True)
语句,因为while循环将在isPrime == True
时退出。你知道吗2)在函数
StackAdder(stack)
中,您引入了count
,这是以前没有定义过的。也许你想要sum
?或者您尝试使用count()
方法(它返回对象在列表中出现多少次的计数?)你知道吗3)在函数
ConsecutivePrime()
中,Stackadder
是一个函数,因此您的代码应该是:while(StackAdder(stack) == False)
相关问题 更多 >
编程相关推荐