Syn_Wll 2022-02-28 16:00 采纳率: 80%
浏览 35
已结题

数字组合的问题,必须使用while循环与函数choice!

问题遇到的现象和发生背景

有四个数字:1到4,能组成多少个互不相同且无重复数字的三位数?各是多少?

问题相关代码,请勿粘贴截图
# 有四个数字:1,2,3,4,能组成多少个互不相同且无重复数字的三位数?各是多少?
from random import choice

# 生成一个数字列表与一个空白结果列表
numbers = list(range(1, 5))
results = []

while True:
    # 随机生成三个数
    num_1 = choice(numbers)
    num_2 = choice(numbers)
    num_3 = choice(numbers)

    # 将三个数字组成一个三位数
    if num_1 != num_2 and num_1 != num_3 and num_2 != num_3:
        three_digit = num_1*100 + num_2*10 + num_3

        # 判断数字是否重复
        if three_digit in results:
            continue
        else:
        # 将这个三位数存储到结果列表里面
            results.append(three_digit)
    
    # 打印结果
    print(results)

运行结果及报错内容
[214]
[214, 134]
[214, 134, 413]
[214, 134, 413, 142]
[214, 134, 413, 142, 241]
[214, 134, 413, 142, 241, 342]
[214, 134, 413, 142, 241, 342, 243]
[214, 134, 413, 142, 241, 342, 243, 412]
[214, 134, 413, 142, 241, 342, 243, 412, 321]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124, 234]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124, 234, 143]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124, 234, 143, 314]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124, 234, 143, 314, 341]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124, 234, 143, 314, 341, 123]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124, 234, 143, 314, 341, 123, 423]    
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124, 234, 143, 314, 341, 123, 423, 312]
[214, 134, 413, 142, 241, 342, 243, 412, 321, 213, 231, 432, 324, 132, 431, 124, 234, 143, 314, 341, 123, 423, 312, 421]

我的解答思路和尝试过的方法

不知道如何给这个while循环添加一个终止。

我想要达到的结果

显示1个结果列表,并且结果列表里只有24个互不重复的三位数。

  • 写回答

2条回答 默认 最新

  • 关注

    啊,这不是个排列组合问题么,怎么使用random来做..

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月8日
  • 已采纳回答 2月28日
  • 创建了问题 2月28日

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向