尽管上面已定义参数,但未定义

时间:2019-12-06 15:44:04

标签: python

我目前正在尝试一些描述销售报告的代码。下面是我当前的代码:

total = 0
items = ""

def adding_report(report_type):
    report_type = input("Define the type of report: ")


while True:
    adding_report("A")
    project = input("Input an integer to add to the total or \"Q\" to quit: ")
    if project.isdigit():
        if report_type == "A":
            total += project
            item += project + "\n"
        else:
            total += project
    elif project.lower().startswith("q"):
        if report_type == "A":
            print(total)
            print(item)
            break
        else:
            print(total)
            break
    else:
        print('Invalid input')

我的错误是在if_report_type ==“ A”部分(以q开头的部分)。我的错误是未定义report_type。

请问有关我可能如何处理的任何建议?

1 个答案:

答案 0 :(得分:3)

这里的问题是范围之一:report_type仅在adding_report函数中定义。调用函数时,它定义了report_type-但是,当函数返回时,该定义将丢失。

尝试从函数中返回report_type,然后将其分配给调用函数的代码中的另一个变量。

还请注意,您还有其他一些问题:

  • 您有几个名为item的变量,但我相信您的意思是items
  • total += project会导致错误-您检查以确保project是一个数字,这很好,但是却忘记了将其强制转换。使用total += int(project)正确捕获它。

这里的代码可以编译和运行。

total = 0
items = ""

def adding_report(report_type):
    report_type = input("Define the type of report: ")
    return report_type


while True:
    report_type = adding_report("A")
    project = input("Input an integer to add to the total or \"Q\" to quit: ")
    if project.isdigit():
        if report_type == "A":
            total += int(project)
            items += project + "\n"
        else:
            total += int(project)
    elif project.lower().startswith("q"):
        if report_type == "A":
            print(total)
            print(items)
            break
        else:
            print(total)
            break
    else:
        print('Invalid input')

here