有没有更好的方法在 python 中编写 if 语句?

Bry*_*man 0 python optimization if-statement

所以我已经写了一段时间 Python。我决定制作一个应用程序来帮助我姐姐处理乘法表。我编写的代码将从我的 10 个不同问题列表中随机选择(我知道有更好的编写方法,但它给了我想要与 SQL 一起使用的能力)。列表是由表(音调,Ttwo,Tthree 等)内的 Tone 将是 ['1*1','1*2',...] 然后如 if 语句中所示,它通过调用列表和问题调用带有随机生成的数字。

def pick_question():
    Table = random.randint(0,9)
    Col = random.randint(0,9)
    if Table == 0:
        if Col == 0:
            return Tone[0]
        elif Col == 1:
            return Tone[1]
        elif Col == 2:
            return Tone[2]
        elif Col == 3:
            return Tone[3]
        elif Col == 4:
            return Tone[4]
        elif Col == 5:
            return Tone[5]
        elif Col == 6:
            return Tone[6]
        elif Col == 7:
            return Tone[7]
        elif Col == 8:
            return Tone[8]
        elif Col == 9:
            return Tone[9]
    elif Table == 1:
        if Col == 0:
            return Ttwo[0]
        elif Col == 1:
            return Ttwo[1]
        elif Col == 2:
            return Ttwo[2]
        elif Col == 3:
            return Ttwo[3]
        elif Col == 4:
            return Ttwo[4]
        elif Col == 5:
            return Ttwo[5]
        elif Col == 6:
            return Ttwo[6]
        elif Col == 7:
            return Ttwo[7]
        elif Col == 8:
            return Ttwo[8]
        elif Col == 9:
            return Ttwo[9]
Run Code Online (Sandbox Code Playgroud)

显然它会继续下去,但已经很长了。想知道是否有任何办法可以使这不那么重复并且看起来更好......

avl*_*oss 5

def pick_question():
    Table = random.randint(0,9)
    Col = random.randint(0,9)
    return [Tone,Ttwo][Table][Col]
Run Code Online (Sandbox Code Playgroud)

我猜你想写的是

import random

Tone = [f"1*{i}" for i in range(1,10)]
Ttwo = [f"2*{i}" for i in range(1,10)]
Tthree = [f"3*{i}" for i in range(1,10)]
Tfour = [f"4*{i}" for i in range(1,10)]
Tfive = [f"5*{i}" for i in range(1,10)]
Tsix = [f"6*{i}" for i in range(1,10)]
Tseven = [f"7*{i}" for i in range(1,10)]
Teight = [f"8*{i}" for i in range(1,10)]
Tnine = [f"9*{i}" for i in range(1,10)]
Questions = [
    Tone,
    Ttwo,
    Tthree,
    Tfour,
    Tfive,
    Tsix,
    Tseven,
    Teight,
    Tnine,
]

def pick_question():
    Table = random.randint(0,8)
    Col = random.randint(0,8)
    return Questions[Table][Col]

print(pick_question())
Run Code Online (Sandbox Code Playgroud)

但我想你想要做的是:

import random

Tone = [f"1*{i}" for i in range(1,10)]
Ttwo = [f"2*{i}" for i in range(1,10)]
Tthree = [f"3*{i}" for i in range(1,10)]
Tfour = [f"4*{i}" for i in range(1,10)]
Tfive = [f"5*{i}" for i in range(1,10)]
Tsix = [f"6*{i}" for i in range(1,10)]
Tseven = [f"7*{i}" for i in range(1,10)]
Teight = [f"8*{i}" for i in range(1,10)]
Tnine = [f"9*{i}" for i in range(1,10)]
Questions = [
    Tone,
    Ttwo,
    Tthree,
    Tfour,
    Tfive,
    Tsix,
    Tseven,
    Teight,
    Tnine,
]

def pick_question():
    Table = random.randint(0,8)
    Col = random.randint(0,8)
    return Questions[Table][Col]

print(pick_question())
Run Code Online (Sandbox Code Playgroud)

祝蟒蛇好运!这是一种了不起的语言!:)