蓝桥等考Python组别
十八
级
第一部分:选择题
1、Python L
18
(15分)
运行下面程序,输入30,输出的结果是( )。
t = int(input())
if t < 30:
print(0)
else:
print(t // 15 * 2)
4
10
20
30
正确答案:
A
2
、Python L
18
(15分)
运行下面程序,输入4,输出的结果是( )。
n = int(input())
ans = 0
for i in range(1, n +
1
):
ans += i
print(ans)
6
10
14
15
正确答案:B
3、Python L
18
(20分)
运行下面程序,输入11,输出的结果是( )。
n = int(input())
i = 0
while n > 1:
n //= 2
i += 1
print(i)
1
2
3
4
正确答案:
C
第二部分:编程题
4
、Python L
18
罗马数字
(
5
0分)
题目名称:
罗马数字
题目描述:
罗马数字起源于古罗马。
罗马数字的“数字”是七种字符:I、V、X、L、C、D和M,这七种字符表示的数和阿拉伯数字表示的数,对照关系如下表:
罗马数字用几个字符的组合来表示更多的数。通常情况下,代表较小数的字符在代表较大数的字符右边。例如用罗马数字表示的数中:
2写做II,即为两个I;
12写做XII,即为X加上II;
27写做XXVII,即为XX加上V加上II。
罗马数字表示数,存在一些特例。比如4不写作IIII,而是IV。字符I在字符V的左边,所表示的数等于较大数5减较小数1得到的数值4。同样地,9写作IX。有6个数遵循以下特殊写法:
I放在V的左边,表示4;
I放在X的左边,表示9;
X放在L的左边,表示40;
X放在C的左边,表示90;
C放在D的左边,表示400;
C放在M的左边,表示900。
输入一个正整数,将其转为用罗马数字表示的数。
输入:
一个正整数x(1<=x<=3999)。
输出:
一个字符串代表x转换后的,用罗马数字表示的数。
输入样例
1
:
27
输出样例
1
:
XXVII
输入样例
2
:
43
输出样例
2
:
XLIII
参考程序
1
:
v = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
s = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
n = int(input())
ans = ''
for i in range(13):
while n >= v[i]:
ans += s[i]
n -= v[i]
print(ans)
参考程序
2
:
m = [
['', 'M', 'MM', 'MMM'],
['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']
] #第一维数组分别对应千百十个,当对应位置没有值时,空字符与其对应。后面的十个字符一一对应每个位置的“一到十”
d = [1000, 100, 10, 1] #每个位置的除数
x = int(input())
r = ''
for k, v in enumerate(d):
r += m[k][int(x / v)]
x = x % v
print(r)
测试数据:
1.in
27
1.out
XXVII
2.in
43
2.out
XLIII
3.in
94
3.out
XCIV
4.in
168
4.out
CLXVIII
5.in
297
5.out
CCXCVII
蓝桥杯青少组Python组别18级编程练习真题(第5套,共6套)