首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python编程帮助

Python编程帮助
EN

Stack Overflow用户
提问于 2009-11-20 17:19:30
回答 3查看 300关注 0票数 1
代码语言:javascript
复制
#!/usr/bin/env python
import math



def primeTest(isPrime):
print('    {0}=testnum'.format(testnum))
if testnum%2 == 0 and testnum != 2: #if divisible by 2 and not 2
    isPrime = False
    print('{0} a'.format(isPrime))
    print('a')  
else:
    numroot = round(math.sqrt(testnum))
    i = 2
    while i <= numroot:
        if testnum%i == 0:
            isPrime = False
        i+=1
    print('b')


global testnum
global isPrime
testnum=2
numPrimesSoFar=0
reqPrimes=int(input('How many primes would you like? \n'))
while numPrimesSoFar < reqPrimes:   
isPrime=True
primeTest(isPrime)
print(isPrime)
if isPrime:
    print('    {0}'.format(isPrime))
    print('    {0}'.format(testnum))
    numPrimesSoFar+=1
testnum+=1

(很抱歉格式设置我不太确定为什么它不能正常工作,但假设我的制表符格式正确)现在输出如下:

代码语言:javascript
复制
    How many primes would you like? 
4
    2=testnum
b
True
    True
    2
    3=testnum
b
True
    True
    3
    4=testnum
False a
a
True
    True
    4
    5=testnum
b
True
    True
    5

好吧..。那么,当我将isPrime设置为false时,为什么它仍然是true呢?

编辑:好的.所以这就是你们要说的?

EN

回答 3

Stack Overflow用户

发布于 2009-11-20 17:28:09

global isPrime需要位于赋值给isPrime的函数内部。

票数 3
EN

Stack Overflow用户

发布于 2009-11-20 17:33:32

在这个作用域中,全局foo是指在这个作用域之外可以访问并在这个作用域关闭后持久存在的foo。这并不意味着,让所有名为foo的变量无处不在,并且永远引用这个foo。

这与您的C/C++背景不同,在C/C++背景下,在顶层声明变量会使其成为全局变量,而不需要在每个作用域中显式声明全局变量。

票数 1
EN

Stack Overflow用户

发布于 2009-11-20 17:27:41

尽管您已将isPrime设置为全局变量,但您正在primeTest函数的局部边界内对其进行修改。因此,它不会被修改。

如果您需要更改它,请尝试将其作为参数传递,并以此方式进行修改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1769278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档