【Python】蓝桥杯真题讲解

第一题(难度系数 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)   #输出变量

你可能感兴趣的:(蓝桥杯,python)