我是python的新手,我已经编写了下面的代码,但是有2到3个问题。
为一个函数启动while循环 例子addTwoNumbers它将保留在我已经处理过的地方 通过返回有没有其他方法可以做到这一点?
谢谢
public Loader<ArrayList<CustomL>> onCreateLoader(int id, Bundle args) {
return new Loade(this);
}
public void onLoadFinished(Loader<ArrayList<CustomL>> loader, ArrayList<CustomL> data) {
Log.v("Load","Finished");
maklst(data);
}
def main():
答案 0 :(得分:0)
这些是一些错误:
while choice!='5'
应为while choice!='4'
contin()
,但将返回值存储在conti
中,但您没有使用它。它应该是choice
。contin()
中,您没有返回选择。答案 1 :(得分:0)
您的问题是相关的,程序的控制流程是混乱的,您需要了解变量范围。作为一个简短示例,您的菜单正在执行此操作:
def main():
choice = 5
print(choice)
contin()
print(choice)
def contin():
choice = 10
main()
它在顶部main
函数中设置'choice',然后尝试在contin
函数中稍后更改它。这些实际上是两个具有相同名称的不同的变量。变量 scope 仅在设置值的函数内。
因此,由于choice
的{{1}}的值永远不会在main()
中发生变化,因此while循环永远不会退出,数学函数永远不会有所不同,并且你一遍又一遍地执行相同的数学函数试。
程序需要工作的方式是这样的:
menu
-> choice
-> numbers
-> math
<-
menu
-> choice
-> numbers
-> math
<-
menu
-> choice
-> numbers
-> math
<-
menu
# you quit here, and the program exits
但是您的代码会进入conti()
,然后再次进入main()
,因此它会越来越多地嵌套,如下所示:
menu
-> choice
-> numbers
-> math
-> menu
-> choice
-> numbers
-> math
-> menu
-> choice
-> numbers
-> math
-> menu
# you try to quit here but end up
choice #back at this level
这意味着当你最终按7退出菜单而不是退出程序时,退出最后一次conti()
调用并返回到while循环的顶部,并提示输入更多数字
答案 2 :(得分:0)
您的代码的真正问题在于control flow并不像您认为的那样。
假装是你的电脑。仔细查看代码,逐行查看。
main()
。所以看看那个功能。main
内,您首先调用您的菜单并从您的用户处获取一个号码。5
,您的循环就会运行。目前,我们会假装用户输入1
。1
作为选择,因此第一个if
语句(choice=='1'
)的条件为真,因此内部代码会运行。addTwoNumber
函数,返回的输出存储在total
。contin()
并将其输出存储在conti
中。但请查看contin()
内部,让我们逐行浏览此功能。y
(或Y
),则再次致电menu()
并将其输出存储在choice
中,你的循环检查,对吗?嗯,那不太对劲。问题是,无论何时在函数中定义变量,该变量仅存在于该函数内。 函数无法查看其他函数中的变量(除非您将它们作为参数传递,或者您使用全局变量......但您确实不应该使用全局变量)。因此,您在choice
中使用的contin
变量属于该函数,但是另一个变量,其名称为{{1}对于choice
函数!要解决此问题,您可以将main
行更改为choice=menu()
。然后将return menu()
更改为conti=contin()
。
此外,在致电choice=contin()
后,您不需要return
。如果你contin()
,你的函数将退出,你的循环将停止运行。
这里是我提到的修补程序的一部分代码。你明白它为什么有效吗?你能弄清楚还有什么需要改变才能解决所有问题吗?
return
和
def main():
choice = menu()
while choice != '5':
num1 = int(input("enter first number: "))
num2 = int(input("enter the second number: "))
if choice == '1':
total = addTwoNumber(num1, num2)
print("sum of two numbers is: ", total)
choice = contin()
elif choice == '2':