全国中小学信息技术创新与实践大赛(简称NOC),由城乡统筹发展研究中心和中国人工智能学会共同主办,是教育部公布的全国中小学竞赛白名单赛事之一,权威、有含金量。
该比赛正在报名哦!比赛全程无需支付任何费用。
报名网址:http://s.noc.net.cn/MatchContent/MatchContent。
报名日期:5月6日-5月22日。
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)
— OVER —
与非学堂
专注青少年信息技术教育,探讨少儿编程的教与学,交流技巧、分享资源
与非学堂小程序
蓝桥杯STEMA科技素养测试、Bebras测试、文化测试
公众号对话框回复「HELP」更多精彩
喜欢就请「分享」「点赞」「在看」吧!