第一题(难度系数 1,满分 50 分)
编程实现:用 1、3、5、8 这几个数字,能组成的互不相同且无重复数字的三位数各是多少?总共有多少个?
输入:无
输出:多行数字,每行一个三位数组成的三位数的总个数
将程序命名为“lq001”。
评判标准:
10 分:能输出至少一个三位数字;
30 分:输出了多于 10 个三位数字,且确实不重复;
50 分:完全符合题意,即在 30 分标准的基础上,正确地输出了可组合的三位数和组合后三位数的总数量。
关于这道题,有两个要点:①输出能组成的互不相同且无重复数字的三位数;②输出三位数的总数量。
先解决①号问题,要想重复输出数字就要使用for循环。for循环的语句是:
for 变量(一般使用i) in 可迭代对象(如:range、列表等):
题目中提到,“用 1、3、5、8 这几个数字”,那么我们可以建立一个列表,命名为num:
num = [1,3,5,8] #定义三位数列表
每次我们都从num列表里拿出三个数字,按照下面的排列组合进行输出
数字一 | 数字二 | 数字三 |
1 | 1 | 1 |
1 | 1 | 3 |
1 | 1 | 5 |
… | … | … |
提取出三个数字,可以用三个连续的for循环,重复从列表里提取数字,但是数字不能直接组合,需要先使用str()函数转换为字符串再组合,代码如下:
for i in num: #获取第一个数字
for j in num: #获取第二个数字
for k in num: #获取第三个数字
print(str("i") + str("j") + str("k")) #输出获取到的三位数
①号问题解决了,看看②号问题吧:输出三位数的总数量。我们只需要统计输出数字的总数量即可。
统计总数量并输出,一共需要3步:(1)设置变量;(2)在循环时将变量自增1;(3)输出变量。代码如下:
num = [1,3,5,8]
lens = 0 #设置变量
for i in num:
for j in num:
for k in num:
print(str(i) + str(j) + str(k))
lens += 1 #在循环时将变量自增1
print(lens) #输出变量
题目已讲解完毕,以下为所有代码:
num = [1,3,5,8] #定义三位数列表
lens = 0 #设置变量
for i in num: #获取第一个数字
for j in num: #获取第二个数字
for k in num: #获取第三个数字
print(str(i) + str(j) + str(k)) #输出获取到的三位数
lens += 1 #在循环时将变量自增1
print(lens) #输出变量