You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现6×6唯一随机数矩阵并支持用户选数?

嘿,作为Python新手遇到这种问题很正常,我来帮你一步步解决!你现在有两个核心需求:生成6×6的唯一随机数矩阵,以及让用户能从显示的网格里选择数字。咱们一个个来搞定~

一、生成6×6的唯一随机数矩阵

你原来的代码用random.randint(1,100)生成每个元素,这种方式会重复,因为每次随机都是独立的,没有去重机制。咱们可以换个思路:先从1-100里挑出36个不重复的数,再把它们分成6行6列的矩阵。

用random.sample()就能轻松做到,它会从指定序列里选出指定数量的唯一元素:

import random

# 从1到100中随机挑选36个不重复的数
unique_numbers = random.sample(range(1, 101), 36)
# 将列表分割成6行,每行6个元素,形成6×6矩阵
random_matrix = [unique_numbers[i*6 : (i+1)*6] for i in range(6)]

这样生成的矩阵里绝对不会有重复值啦!

二、实现用户从网格中选择数字的功能

接下来要让用户能从显示的网格里选数字,这里咱们做一个友好的交互:让用户输入行号和列号(提示用户用1-6的范围),然后取出对应位置的数字,同时处理用户可能的错误输入(比如输入非数字、超出范围的数)。

完整的代码整合起来是这样的:

import random

# 生成6×6的唯一随机数矩阵
unique_numbers = random.sample(range(1, 101), 36)
random_matrix = [unique_numbers[i*6 : (i+1)*6] for i in range(6)]

# 打印网格
print("生成的6×6随机数矩阵:")
for row in random_matrix:
    # 用制表符分隔元素,让排版更整齐
    print("\t".join(map(str, row)))

# 让用户选择网格中的位置
print("\n请从上面的网格中选择一个数字,输入它的行号和列号(范围1-6):")
while True:
    try:
        # 获取用户输入的行和列,分割成两个整数
        row_input, col_input = map(int, input("输入格式:行号 列号(用空格分隔):").split())
        # 转换为Python的0-based索引(因为列表从0开始计数)
        row_idx = row_input - 1
        col_idx = col_input - 1
        
        # 检查输入的行和列是否在有效范围内
        if 0 <= row_idx < 6 and 0 <= col_idx < 6:
            selected_number = random_matrix[row_idx][col_idx]
            print(f"你选择的数字是:{selected_number}")
            break
        else:
            print("⚠️ 行号和列号必须在1到6之间,请重新输入!")
    except ValueError:
        print("⚠️ 请输入两个有效的整数,用空格分隔,比如:3 4")
额外说明
  • 关于去重:random.sample()是最简洁的方式,它内部已经处理了去重逻辑,比你自己循环生成再判断重复高效得多。
  • 交互部分的while True循环是为了让用户输入错误时能重新输入,直到输入正确为止,提升用户体验。
  • 打印矩阵时用"\t".join(map(str, row))比嵌套循环打印更简洁,排版也更整齐。

内容的提问来源于stack exchange,提问作者Zarwa Butt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:23:45