我目前正在尝试一些描述销售报告的代码。下面是我当前的代码:
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。
请问有关我可能如何处理的任何建议?
答案 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')