【发布时间】:2018-03-27 12:51:56
【问题描述】:
我正在学习 Python(使用 3.6.2),在上一堂课上,他们要求我做一些我需要创建无限 for 循环的事情。出于某种原因,老师不希望我们在整个练习中使用while。 这就是复杂的地方......
所以,我一直在寻找一种方法来做到这一点。但是,这也很困难,因为老师不希望我们使用我们在课堂上没有见过的任何命令。所以我不能使用.append, sys functions,好吧,我什至不能使用break。我必须找到一种方法来处理 "simple" 命令。
我以为我可以这样做;
x=1
for i in range(x):
do_something()
x += 1
但是,它似乎不起作用。我认为这是因为 Python 不再读取范围的值?
我找不到方法,但经过数小时的思考,我发现自己可以使用一个小解决方法:
def ex():
print("Welcome")
for i in range(1):
math = int(input("Please insert grades obtained at Math, or insert 666 to exit" ))
if(math > 0 and math < 60):
print("Sorry. You failed the test")
return ex():
elif(math >= 60 and math <= 100):
print("Congratulations. You passed the test")
return ex():
elif(math == 666):
return exit()
else:
print("ERROR: Please insert a valid number")
return ex():
def exit():
pass
如您所见,它“无限”的原因在于它一次又一次地返回函数,直到您告诉程序“退出”,通过输入“666”。我也想有一个更合适的方法来退出函数。
我仍然想知道是否有更好的方法让我的 for 循环无限直到用户调用它停止。但是,通过一种或另一种方式,我让这个练习奏效了。当我开始使用第二个时,问题就出现了,它或多或少是这样的:
想象一下过去的相同程序,但这一次,它不会只显示您是否通过了测试。它希望通过输入收集您输入的尽可能多的成绩,然后计算所有成绩的平均值。我无法保存这些值(成绩),因为我每次都“重新启动”我自己的功能。
而且根据我老师的指示,我不能问用户他要我计算多少分。它必须是无限的,并且一直要求输入,直到用户选择不这样做。
我真的迷路了。这是非常困难和令人沮丧的,因为如果我们可以使用 while's 会更容易:(而且更难的是因为我们不能使用我们没有见过的任何选项......
所以,我有 3 个问题:
- 如何创建适当的“无限”for 循环?
- 我该如何以正确的方式“完成”它?
- 如何使它能够保存值?
非常感谢任何愿意提供帮助的人,并为我的无知感到抱歉。
我是社区的新手,所以任何关于我的问题、问题格式或任何内容的建议都会受到好评:)
编辑:我和我的老师谈过,他允许我使用itertools 或者只是一个大到无法达到的范围。现在我想知道,如何将这些值保存在 for 中以供以后操作?
【问题讨论】:
-
这很难回答,因为我们不知道您在课堂上看到了什么 - 但是导入和使用
itertools.count(docs.python.org/2/library/itertools.html#itertools.count) 会解决这个问题吗? -
你没有什么可道歉的。这是一项愚蠢的任务,被分配不是你的错。
-
我预计会发生这种情况:/ 是的,不幸的是我不能使用它。我在论坛上发现了这一点,但我无法使用
itertools。不过,感谢您尝试提供帮助。这对我来说也很困难,因为我知道很难以这种方式找到解决方案,但我不知道我还能做什么:/ -
老师不希望我们使用我们在课堂上没有见过的任何命令 - 这太荒谬了。有什么办法可以解雇你的白痴老师?
-
Infinite for loops possible in Python? 的可能重复项。显然,一切都是骗局……