Python 我怎样才能创造一个无限的“世界”;至于;循环能够保存值,无需使用;而;?
我正在学习Python(使用3.6.2),在上节课上,他们让我做一些事情,我需要为循环创建一个无限Python 我怎样才能创造一个无限的“世界”;至于;循环能够保存值,无需使用;而;?,python,for-loop,Python,For Loop,我正在学习Python(使用3.6.2),在上节课上,他们让我做一些事情,我需要为循环创建一个无限。出于某种原因,老师不希望我们在整个练习中使用,。这就是它变得复杂的地方 所以,我一直在寻找一种方法。但是,这也很困难,因为老师不希望我们使用课堂上没有看到的任何命令。所以我不能使用.append,sys函数,我甚至不能使用break。我必须找到一种方法来处理简单的命令 我想我可以这样做 x=1 for i in range(x): do_something() x += 1
。出于某种原因,老师不希望我们在整个练习中使用,
。这就是它变得复杂的地方
所以,我一直在寻找一种方法。但是,这也很困难,因为老师不希望我们使用课堂上没有看到的任何命令。所以我不能使用.append,sys函数,我甚至不能使用break。我必须找到一种方法来处理简单的命令
我想我可以这样做
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
def ex():
打印(“欢迎”)
对于范围(1)中的i:
数学=int(输入(“请插入数学成绩,或插入666退出”))
如果(数学>0且数学<60):
打印(“对不起,你考试不及格”)
return ex():
elif(math>=60和math如果你不允许使用itertools
并且你被限制在基本的语言结构中,并且在期间不允许使用,那么我有一些不幸的消息要告诉你
这可能是不可能的。至少在pythonfor
循环中是不可能的
我建议你与你班上的带头人联系,让他们澄清要求。这方面的知识没有实际应用,所以我很想知道这项作业的目标是什么
注意:这在其他支持实际for循环(即,而不是foreach循环)的语言中是可能的,所以这个任务的赋值人可能从不同的语言类移植了这个问题
编辑;现在您可以使用itertools了,我建议使用我在最初的评论中给出的答案
from itertools import count
for i in count():
pass # this will loop for longer than you will live.
有了这些,再加上在循环之前创建的列表,您应该可以轻松跟踪成绩并计算其平均值。您可以尝试以下方法吗:
for i in iter(int, 1):
print("Infinite for loop executing")
有关更多信息,请参阅关于不带的infinte迭代器的问题,而。我讨厌这样的“把戏”问题,这些问题与您在现实世界中如何使用Python几乎没有关系。但无论如何
这里的技巧是迭代在for
循环中修改的列表。这通常被认为是一种不好的做法,但我们可以在这里利用它来进行这种人为的赋值
我们在函数中请求用户输入,这样我们就可以使用return
从循环中退出,因为您不允许使用break
def get_data(prompt):
lst = [None]
for i in lst:
s = input(prompt)
if not s:
return lst[1:]
lst += [int(s)]
print(lst)
print('Enter data, one number at a time. Enter an empty line at the end of the data')
lst = get_data('Number: ')
print('Data:', lst)
演示
Enter data, one number at a time. Enter an empty line at the end of the data
Number: 3
[None, 3]
Number: 1
[None, 3, 1]
Number: 4
[None, 3, 1, 4]
Number: 1
[None, 3, 1, 4, 1]
Number: 5
[None, 3, 1, 4, 1, 5]
Number: 9
[None, 3, 1, 4, 1, 5, 9]
Number:
Data: [3, 1, 4, 1, 5, 9]
基于类的Python 3.x无限循环:
class loop_iter(object):
def __iter__(self):
return self
def __next__(self):
# for python2.x rename this method to `next`
# Return the next item from the container.
# If there are no further items, raise the StopIteration exception.
# Because this is infinite loop - StopIteration is not raised
return None
class infinite_loop(object):
def __iter__(self):
# This method is called when an iterator is required for a container.
# This method should return a new iterator object that can iterate over all the objects in the container.
# For mappings, it should iterate over the keys of the container, and should also be made available as the method keys().
# Iterator objects also need to implement this method;
# they are required to return themselves.
# For more information on iterator objects, see Iterator Types.
return loop_iter()
x = []
# thx PM 2Ring for text
print('Enter data, one number at a time. Enter an empty line at the end of the data')
for _ in infinite_loop():
line = input('Number: ')
if line:
x += [int(line)]
continue
print('Average:', sum(x)/len(x)) # average
exit()
这是很难回答的,因为我们不知道你们在课堂上看到了什么,但会导入并使用itertools.count
()解决这个问题?你没有什么要道歉的。这是一个愚蠢的任务,被分配不是你的错。我期望会发生这样的事情:/是的,不重要的是我不能使用它。我在论坛上发现了这一点,但我不能使用itertools
。不过,谢谢你的帮助。这对我来说也很困难,因为我知道这样很难找到解决办法,但我不知道我还能做什么:/老师不想让我们使用课堂上没有见过的任何命令-这太可笑了。你有什么办法可以解雇你的白痴老师吗?可能是重复的。显然,一切都是重复的。。。“出于某种原因,老师不希望我们在整个练习中使用while。”-这个答案无效。不重要的是,我不能使用while
来做任何事情:(.谢谢你的帮助,though@oScarDiAnno你能用iter()吗
function?@akhilsp谢谢你,巴德。我们在课堂上没有看到过这个函数,但鉴于我没有任何选择,我想我会使用这个或itertools
解决方案,并告诉我的老师我试过了,但我找不到其他方法。我明白了……嗯,很遗憾我花了很多时间绞尽脑汁想找到一个解决方案方法……但我认为你是对的。我不确定他对我们的期望是什么,但我会让你们了解我们的最新情况。非常感谢你们的帮助。我应该结束这个问题吗?不-让它打开。如果确实没有适合我的解决方案,请给我打勾-但是如果你找到了,或者老师让你知道,请随意发布你自己的答案。这个问题以后可能会被澄清,但我很好奇,如果没有其他问题的话,老师们的意图是什么。当然可以通过常规的for
循环来实现这一点,但我不会推荐它。我想,我也不会教它:P这是我认为这位老师唯一的意思。谢谢你们两位的帮助p、 伙计们。今天我没有和那个老师上课,但我去搜了搜他的身,我们可以聊一聊。看起来他明白了,他告诉我我可以用itertools,也可以用一个足够大的范围(他告诉我们不要——但在他给我们布置作业的那天).那么,现在,如果问题不多的话,你能不能给我一点指导,告诉我如何使用这些选项来解决我问题中黄色方框中的问题?大多数情况下,我不知道如何保存这些值以便以后计算平均值。多谢各位,这是一个聪明而有趣的解决方案,我同意你的说法,这是“人为的”“作业。从您的代码中,我看到的唯一一件事是,我们没有看到附加
。但是,我会收集这些解决方案,并向我的老师展示我发现的内容,这样他就可以看到我们确实试过了,但我们只是发现,如果不使用whiles或任何我们没有看到的东西,就无法做到这一点。因此,这非常有帮助,而且,