全国中小学信息技术创新与实践大赛(简称NOC)Python编程题解析

NOC比赛中的软件创意编程赛项,面向小学低年级为图形化编程,小学高年级为Python编程。

这里我们着重挑选Python编程题进行题解,让大家也可以对比赛有一定了解。

1. 奇偶分拆排序(难度:简单)

输入一个整数序列,对其进行排序,使得奇数在前,偶数在后,奇数从大到小排列,偶数从小到大排序。

输入示例:

1 2 3 4 5 6

输出示例:

5 3 1 2 4 6

参考解法:本题考察列表数据项的奇偶判断和列表排序。

奇偶判断只需要使用求余运算即可,列表排序使用sort()。

lst = list(map(int, input().split()))

odd, even = [], []

for i in lst:

    if i%2==1:

        odd.append(i)

    else:

        even.append(i)

odd.sort(reverse=True)

even.sort()

print(odd+even)

2. 美妙的数(难度:困难)

如果一个正整数,各位数字之和加上各位数字之积,恰好等于这个数本身,就把它叫做“美妙的数”。请找出从A到B之间的正整数,有多少个是美妙的数。

输入示例:

10 60

输出示例:

5

参考解法

本题重点考察数字位数的提取。

位数提取时也使用求余运算,得到个位后,再去除个位。

a, b = map(int, input().split())

def ok(n):

    number = n

    digits = []

    while True:

        if number >= 10:

            tmp = number % 10

            digits.append(tmp)

            number = int((number - tmp)/10)

        else:

            digits.append(number)

            break

    add, product = 0,1

    for i in digits:

        add = add + i

        product = product * i

    return add + product == n

    

count = 0

for i in range(a,b+1):

    if ok(i):

        count += 1

print(count)

全国中小学信息技术创新与实践大赛(简称NOC)Python编程题解析_第1张图片

 

你可能感兴趣的:(NOC创新编程赛,NOC创客与STEAM课程评优,python,青少年编程)