gpt4 book ai didi

python - 如何保存 "for"循环中的值? python 3

转载 作者:行者123 更新时间:2023-11-28 20:35:28 28 4
gpt4 key购买 nike

昨天我发布了一个问题,我在其中寻找一种方法来执行无限 for 循环,而不使用 while(因为我的老师想要这样,而且,我们不能使用任何我们在类里面没有见过的命令)。这很困难,因为显然没有一个不使用 while 或其他函数(如 itertools 或 .append 等)的非常可行的选项。

可以看到那个问题here
另外,非常感谢你们给我带来的反馈! :)


但是我设法和我的老师谈过,我们得到了使用 itertools 的许可,或者只是一个足够大的范围(而不是实际上是无限的).


我已经完成了一些练习,但现在我有以下说明:

(Think about grades)
• Ask the user a number (through inputs), and keep asking until the user tells to stop.
• Then, calculate the average from all the numbers entered.

(其实有点复杂,但我把它缩短了,我相信我可以处理剩下的)

正如我所说,我必须使用for循环,而我不能使用whiles全部。

如果我可以使用 while,我会这样做:

def grades():
totalg = 0
countg = 0
keepAdding = "y"
while(keepAdding == "y"):
qualif = int(input("Insert grades obtained, in scale from 0 to 100 "))
totalg = totalg + qualif
countg = countg + 1
keepAdding = str(input("Do you wish to keep adding data? (y/n) "))
print("The average of your grades is", totalg/countg)

如何使用 for 循环做类似的事情?我不知道如何存储数据以供以后计算。


此外,我很想知道一种更“正确”的方式来结束循环,但我也不能使用break

提前致谢!任何建议表示赞赏和欢迎! :)

最佳答案

一种方法是在没有外部模块的情况下使用 two-arg iter ;当传递两个参数时,第一个是一个无参数的函数来一遍又一遍地调用,第二个是一个标记值,它指示你应该停止。

因此,例如,您可以使用如下简单的内容进行无限循环:

 for _ in iter(bool, True):

由于 bool 构造函数返回 FalseTrue 的标记值将永远不会出现,因此这是一个无限循环。

类似地,要制作一个提示循环,直到用户使用给定的标记字符串进行响应,例如 'q' 表示退出(或只是空字符串),您可以这样做:

for inp in iter(lambda: input("Insert grades obtained, in scale from 0 to 100 (type 'q' to quit)"), 'q'):
val = int(inp)
... rest of loop ...

显然,这有点晦涩(双参数 iter 很少见),所以通常你会使用 while True: 和包含测试的循环and-break 或 test-and-return (后者不违反老师的要求)。同样,异常处理可以用于退出循环,虽然它很丑陋:

 try:
for ...:
if test_for_end:
raise StopIteration
except StopIteration:
pass
# You're outside the loop

注意:从字面上看,我提到的所有内容都是糟糕的风格,除了实际的 while True: 循环和 test-and-break/return案例。但是你的一只手被绑在背后,所以我建议用一些可怕的变异手来代替。

关于python - 如何保存 "for"循环中的值? python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46782017/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com