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

标签 python function for-loop

昨天我发布了一个问题,我在其中寻找一种方法来执行无限 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/

相关文章:

java - JSON 对象如果重复则不应添加

python - Python 中的 Hangman 游戏 : how to replace blanks with guessed letters

python - 排序集(不是单个集)

c - 从 main 返回指针

python传递列表作为函数参数

iphone - 切换 View 时如何中断for循环?

python - 鹡鸰定制管理员

python - 在 Numba 中获取类似结构化数组/数据帧的结构的最佳方法是什么?

c++ - 从函数返回指针给出奇怪的数字

for-loop - Golang 中的事件驱动模型