【问题标题】:NameError / "name is not defined" in PythonNameError / Python中的“名称未定义”
【发布时间】:2016-01-11 12:36:11
【问题描述】:

我是 Python 初学者,收到以下错误消息:NameError: name 'z' is not defined

导致错误的代码:

num = int(input("enter the max: "))
for i in range (2, num):
    is_prime = True
    for z in range (2, i):
        if i % z ==0:
            is_prime = False
    if is_prime:
     print(z)

【问题讨论】:

  • 请格式化您的代码

标签: python nameerror


【解决方案1】:

您在for z in range (2, i): 块之外使用zz,假设这是确定的非质数的除数,可以存储到一个变量中以将其输出到for 块之外:

num = int(input("enter the max: "))
for i in range (2, num):
    is_prime = True
    divisable_by = 0
    for z in range (2, i):
        if i % z ==0:
            is_prime = False
            divisable_by = z
    if is_prime:
        print(divisable_by)

使用更具描述性的变量名称,删除附加变量:

max = int(input("enter the max: "))
# print all prime numbers up to (max)
for number in range (2, max):
    divisable_by = 0
    for divisor in range (2, int(math.sqrt(number))):
        if number % divisor == 0:
            is_prime = False
            divisable_by = divisor
    if divisable_by != 0:
        print(divisable_by)

注意:将内部循环限制为 2...squareroot(number to check) 以提高性能。

【讨论】:

    猜你喜欢
    • 2013-01-26
    • 1970-01-01
    • 2020-09-04
    • 2021-10-18
    • 2016-08-09
    • 2016-01-08
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多