python - 如何修复此迭代 python 代码并减少重复?

标签 python

这段代码应该生成一个代表问题的随机数。数字生成器生成从 1 到 10 的数字。但如果该数字不在数字列表 "numlist" 中,它应该生成另一个数字。这应该是为了让程序不会问同一个问题两次。使用 numlist.remove() 不适用于此目的。什么会起作用?或者,有什么更好的方法。

此外,我想知道如何制作它以减少代码中的重复(循环?)。

def roll():
    var = random.randint(1,10)
    if var not in numlist:
        roll()

    elif var == 1:
        numlist.remove(1)
        q1()
    elif var == 2:
        numlist.remove(2)
        q2()
    elif var == 3:
        numlist.remove(3)
        q3()
    elif var == 4:
        numlist.remove(4)
        q4()
    elif var == 5:
        numlist.remove(5)
        q5()
    elif var ==6:
        numlist.remove(6)
        q6()
    elif var == 7:
        numlist.remove(7)
        q7()
    elif var == 8:
        numlist.remove(8)
        q8()
    elif var == 9:
        numlist.remove(9)
        q9()
    elif var == 10:
        numlist.remove(10)
        q10()

最佳答案

您似乎只将数字用于调度。同样的结果(以随机顺序调用 10 个函数中的每一个)可以在不先通过数字的情况下实现,如下所示:

import random

def roll():
    qs = [q1, q2, q3, q4, q5, q6, q7, q8, q9, q10]
    random.shuffle(qs)
    for q in qs:
        yield q

# ...

for rolled in roll():
    rolled()

通过不直接调用 q#() 函数而是生成它们,它们可以在调用者方便的时候调用。

关于python - 如何修复此迭代 python 代码并减少重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14431118/

相关文章:

python - 追加到固定大小的列表

python - 从 tkinter 获取输入,然后关闭窗口

python - 如何构建像 Django 中的 Flask 应用程序?

python - 如何将Python列表中的数据聚合到字典中?

python - 使用 Python 匹配一个对象和一个特定的正则表达式

python - 为什么 Python CSV 阅读器会忽略双引号字段?

python - Google App Engine 中的 Django 表单无法找到模块 PIL

Python 无法解码 json 文件,尽管它看起来有效

python - 如何在 LDA 中查看每个主题的所有文档?

python - cv2.error:OPENCV(4.4.0)错误(-215声明失败)size.height> 0 && size,width> 0)