问题遇到的现象和发生背景
有四个数字: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个互不重复的三位数。