【问题标题】:updating the value of a variable inside of a function更新函数内部变量的值
【发布时间】:2022-11-21 04:49:26
【问题描述】:

每次我尝试在函数 modulus 中使用变量 i 时,它都会将该变量设置为等于 0。

我尝试使用代码行:newi = i,但这行不通,因为i 已经等于 0。我在模数函数中尝试了 i = i,但这也行不通。我试过在程序顶部同时定义 ia,但没有用。我期望通过运行 primeChecker 函数来更改 i,但值变为 0。我不知道为什么它是 0,因为我没有在我的代码中的任何地方设置 i = 0

代码:

number = input("How many numbers? ")
intnumber = int(number)
modulus = {}
modulusCounter = 0
exceptionPrime = [2]
prime = [3, 5, 7]
print("lengthprime", len(prime))

def modulus(i, a):
    print("i:", i)
    print(prime)
    print("modulus", prime[a])
    i % (prime[a])

def primeChecker(i, a, prime, modulusCounter):
    print("2 check")
    print("a value: ", a)
    print("prime: ", len(prime))

    for a in range(len(prime)):
        print("3 check")
        print("a: " + str(a))
        print("lengthprime: ", len(prime))

        if modulus(i,a) == 0:
            i += 2
            modulusCounter += 1
            print("1 check")

        else: #elif modulus(a,i) != 0:
            a += 1
            print("2 check")

    if a == len(prime) and modulusCounter == 0:
        print("Prime: ", i)
        print("3 check")
        prime.append(i)         
        i += 1
        modulusCounter = 0          
        a = 0

i = 3
a = 0

for i in range(intnumber):
    print("1 check")
    primeChecker(i, a, prime, modulusCounter)

print(prime)

【问题讨论】:

  • modulus 的最后一行没有做任何有用的事情。 i 本身没有改变,您也不需要对表达式的值做任何事情。
  • modulus 没有返回任何东西
  • 肯定是第一次通过:for i in range(intnumber)这一套i=0

标签: python python-3.x


【解决方案1】:
...  

i = 3
a = 0
    
for i in range(intnumber):
    print("1 check")
    primeChecker(i, a, prime, modulusCounter)

...

“for”循环将 i 设置为 0。您可以通过添加打印语句自己查看

...
i = 3
a = 0

print(i)

for i in range(10):
    print(i)
    # ...your code

print(i)
...

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多