三行代码  ›  专栏  ›  技术社区  ›  Lochana Liyange

Python 3*3带字母的网格布局

  •  0
  • Lochana Liyange  · 技术社区  · 1 月前

    我想要一个3*3的网格,随机分配字母。

    我尝试了以下代码

    import random
    def Random_Alpha():
        l = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
        return l[random.randint(0,25)]
    
    nums = []
    for i in range(3):
        nums.append([])
        for j in range(1, 4):
            nums[i].append(print(Random_Alpha()))
    print("3X3 grid with letters:")
    print(nums)
    

    我得到了以下输出

    T
    B
    T
    S
    R
    K
    A
    T
    S
    3X3 grid with letters:
    [[None, None, None], [None, None, None], [None, None, None]]
    

    但我需要得到以下输出

    T | S | A
    ---------
    B | R | T
    ---------
    T | K | S
    
    
    2 回复  |  直到 1 月前
        1
  •  2
  •   Fed_Dragon    1 月前

    有了杰克·泰勒的答案,你可以 string.ascii_uppercase 而不是手动创建字符串列表。

    如果需要,这段代码还提供了格式

    import random
    import string
    
    nums = []
    for i in range(3):
        nums.append([])
        for j in range(1, 4):
            nums[i].append(random.choice(string.ascii_uppercase))
    print("3X3 grid with letters:")
    output = [f"{n1} | {n2} | {n3}" for n1, n2, n3 in nums]
    print(*output, sep="\n---------\n")
    

    输出:

    3X3 grid with letters:
    T | Q | Z
    ---------
    L | H | R
    ---------
    W | B | C
    
        2
  •  2
  •   Jack Taylor    1 月前

    您需要更改此行:

    nums[i].append(print(Random_Alpha()))
    

    为此:

    nums[i].append(Random_Alpha())
    

    这个 print 函数返回 None ,所以现在你总是试图附加 没有一个 而不是一封信。

    顺便说一下,要从列表中随机获得一封信,你可以使用 random.choice(l) . random.choice 从非空序列中返回一个随机项,因此使用它意味着您不必担心指定列表索引。

        3
  •  2
  •   MSH    1 月前

    如前所述,问题在于 print .顺便说一句,你把解决方案复杂化了。这里有一个干净的:

    from random import choices
    from string import ascii_uppercase
    
    
    def print_grid(n=3):
        for i in range(n):
            print(" | ".join(choices(ascii_uppercase, k=n)))
            if i != n-1:
                print("-" * (4 * n - 3))
    
        4
  •  1
  •   zeeshan12396    1 月前
    import random
    def Random_Alpha():
    l = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
    return l[random.randint(0,25)]
    
    nums = []
    for i in range(3):
        nums.append([])
        for j in range(1, 4):
           nums[i].append(Random_Alpha())
    print("3X3 grid with letters:")
    for i in range(3):
        print(*nums[i],sep='|')
        print('-----')