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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度