【问题标题】:Name error while trying to generate some report尝试生成某些报告时出现名称错误
【发布时间】:2021-04-13 14:44:52
【问题描述】:
def state_from_record(state_name):
    state_split = state_name.split(",")
    return state_split

def cases_from_record(covid_cases):
    covid_split = covid_cases.split(",")
    return covid_split

def deaths_from_record(covid_deaths):
    death_split = covid_deaths.split(",")
    return death_split

result1 = state_from_record(result[0])
print(result1) 

这是代码的第二部分:

   import random
    def state_report(state, data_list):
        if state_split is random:
            states = choice(state_split)
            for s in states:
                if states == state_split:
                    return states + "\n" + "Total Confirmed Cases: " + covid_split + "Total Deaths: " + death_split
                else:
                    return "No record found for " + states
    
    result2 = state_report(states, state_split)
    print(result2)

我正在尝试使用以前的代码,但它一直以名称错误的形式出现,提示“状态”不存在。

这是我的输出:

NameError                                 Traceback (most recent call last)
<ipython-input-20-8fee8f642c90> in <module>()
     10                 return "No record found for " + states
     11 
---> 12 result2 = state_report(states, state_split)
     13 print(result2)

NameError: name 'states' is not defined

【问题讨论】:

  • state 参数的用途是什么?它从未使用过。看来您应该将函数更改为def state_report(data_list):,然后将其称为state_report(state_split)。您收到错误是因为 states 在该范围内不存在。
  • states是函数内的局部变量,不能在函数外访问。
  • 您希望if state_split is random: 做什么?在调用state_report() 之前,你在哪里设置state_split?

标签: python python-3.x


【解决方案1】:

你碰到的是一个叫做scope的编程概念

想象一下这两个函数:

def first_func():

    foo = "abc"
    print(foo)

def second_func():

    print(foo)

second_func()

运行此代码将引发NameError,因为变量foo 超出了second_func 的范围,因为它是在first_func 的边界内定义的。

如果将变量foo 移出第一个函数,如下所示:

foo = "abc"

def first_func():

    print(foo)

def second_func():

    print(foo)

second_func()

这两个函数都可以正常运行。因为变量 foo 现在定义在更广泛的范围内,并且可以从两个函数中访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2021-05-27
    • 2021-12-26
    相关资源
    最近更新 更多