蓝桥杯
第一周训练题
N+N的值
描述
题目描述:(注.input()输入函数的括号中不允许添加任何信息)
编程实现:
给定一个正整数N,计算出N+N的值。
例如:N = 4,4+4的值为8(8=4+4)。
输入描述
输入一个正整数N。
输出描述
输出N+N的值。
用例输入 1 | 用例输出 1 |
---|---|
4 | 8 |
N = int(input())
n = N + N
print(n)
N-5的值
描述
(注input()输入函数的括号中不允许添加任何信息)
编程实现:
输入一个整数N(-100<=N<=100),输出N-5的结果。
例如:N = 8,8-5的结果为3。
输入描述
输入一个整数N(-100<=N<=100)。
输出描述
输出一个整数,表示N-5的结果。
用例输入 1 | 用例输出 1 |
---|---|
8 | 3 |
N = int(input())
Q = N - 5
print(Q)
A+B问题
描述
(注:input()输入函数的括号中不允许添加任何信息)
编程实现:
给定两个整数,计算两个数的和。
输入描述
输入两个整数,数与数之间用空格分隔。
用例输入 1 | 用例输出 1 |
---|---|
2 3 | 5 |
提示
输出两个数的和。
I = input()
# split字符串分割函数,将字符串按“分割字符”把数据变成列表
I1 = int(I.split(" ")[0]) # 获取字符串中的第一个值
I2 = int(I.split(" ")[1]) # 获取字符串中的第二个值
print(I1+I2)
数字大小判断
描述
(注:input()输入函数的括号中不允许添加任何信息)
编程实现:
给定两个整数A,B,数与数之间用逗号分隔,输出他们大小关系。
A>B,输出“大于”(不含引号);
A<B,输出“小于”(不含引号);
A=B,输出“等于”(不含引号)。
输入描述
一行,包含两个整数,数与数之间用逗号分隔。
输出描述
一行,一个字符串,表示A、B的大小关系。
A>B,输出“大于”(不含引号);
A<B,输出“小于”(不含引号);
A=B,输出“等于”(不含引号)。
用例输入 1 | 用例输出 1 |
---|---|
10,40 | 小于 |
I = input()
A = int(I.split(',')[0])
B = int(I.split(',')[1])
if A > B :
print('大于')
elif A < B :
print('小于')
else:
print('等于')
数字输出
描述
(注:input()输入函数的括号中不允许添加任何信息)
编程实现:
给定四个整数,数与数之间用逗号分隔,按行依次输出每一个数字。
输入描述
一行,包含四个整数,数与数之间用逗号分隔。
输出描述
四行,每行一个整数。
用例输入 1 | 用例输出 1 |
---|---|
1,2,3,4 | 1 2 3 4 |
i = input()
i1 = i.split(',')
for ii in i1:
print(ii)
第二周训练题
水仙花
描述
判断给定的三位数是否是 水仙花 数。所谓 水仙花 数是指其值等于它本身 每位数字立方和的数。例 153 就是一个 水仙花 数。 153=13+53+33
输入描述
输入一个整数。
输出描述
是水仙花数,输出"YES",否则输出"NO"(不包括引号)
用例输入 1 | 用例输出 1 |
---|---|
123 | NO |
提示
是水仙花数,输出"YES",否则输出"NO"(不包括引号)
n = input()
m = 0;
for i in n:
m += int(i)**3
title = "NO"
if int(n) == m :
title = "YES"
print(title)
LQ1123 被7整除
描述
输入一个正整数N(N<100),输出1到N(包含1和N)之间所有可以被7整除的正整数,且输出的正整数之间以一个空格隔开。
输入描述
输入一个正整数N(N<100)。
输出描述
输出可以被7整除的正整数,且输出的正整数之间以一个空格隔开。
用例输入 1 | 用例输出 1 |
---|---|
15 | 7 14 |
n = input()
m = "";
for i in range(1,(int(n)+1)):
if i%7==0:
m += str(i) + " "
print(m)
LQ1161 判断偶数
描述
输入两个不相等的四位正整数N(1000<=N<=9999)和M(1000<=M<=9999),其中N<M,中间以一个空格隔开,输出N与M之间(包含N和M)所有的偶数且整数之间以一个空格隔开。
输入描述
在一行输入两个不相等的四位正整数N和M(N和M之间以一个空格隔开)。
输出描述
输出N与M之间(包含N和M)所有满足要求的正整数且正数之间以一个空格隔开。
用例输入 1 | 用例输出 1 |
---|---|
4000 4008 | 4000 4002 4004 4006 4008 |
提示
print(end=" “)修改print中的end参数可以将print默认的换行改为空格。
默认情况下print中的end参数的值为”\n"即print(end=”\n")
n = input()
n1 = int(n.split(" ")[0])
n2 = int(n.split(" ")[1])
for i in range(n1,n2+1): # (包含N和M)所以 M=n2+1
if i % 2 == 0: # 取模
print(i, end=" ") # 修改输出显示格式(看提示信息)
LQ1146 统计数字
描述
给定一个正整数N,找出3到N之间的正整数中,个位数为3的有多少个。
例如:N=25,3至25之间个位数为3的有3、13、23,一共有3个。
输入描述
输入一个正整数N(3≤N≤99993)。
输出描述
输出一个整数,表示3到N之间的正整数中,个位数为3的个数(包括3和N)。
用例输入 1 | 用例输出 1 |
---|---|
25 | 3 |
n = int(input())
m = 0 # 记录符合条件的累加
for i in range(1,n+1)):
if str(i)[-1] == "3" : # 将数值变成字符串,用 -1 的索引获取最后一位数值
m += 1
print(m)
水仙花数
描述
所谓水仙花数,就是指各位数字立方之和等于该数的数;a3称为a的立方,即等于a×a×a的值。例如:因为153=13+53+33,所以153是一个水仙花数。
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
附:其他位数的自幂数名字
一位自幂数:独身数
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数
输入描述
无
输出描述
若干行,每行一个整数,表示该范围内的所有水仙花数。按从小到大的顺序输出。
for i in range(100,1000): # 从 100 开始到 999 计算水仙花数
m = 0 # 用来保存累加的值
for j in str(i): # 例如当前数值是 153 ,先将 153 变成 字符串 str 类型做循环
m += int(j)**3 # 字符串循环会将 153 拆分成 1、5、3 循环,这里就要将 对应的 字符串 转换成 整形 int 才可以进行数学运算,立方的操作,并将结果累加到m里面
if m == i: # 如果累加的 m 值 等于 当前的数值(m=153,i=153),就代表这个数是水仙花数
print(i)
# 自动打印所有 附表方式,了解即可(下例只执行了 1~4 种)
for i in range(1,5):
i1 = 10**(i-1)
i2 = 10**i-1
memo = ""
for j in range(i1, i2):
m = 0
for k in str(j):
m += int(k) ** i
if j == m:
memo += str(j) + " "
print(i, memo)
百钱买百鸡
描述
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
用100文钱买一百只鸡, 其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
输入描述
(无)。
输出描述
输出可能有多行,每行3个数字,分别表示公鸡、母鸡、小鸡的购买数量。且每一行的两个数之间用一个空格分隔开。
输出格式如下:
a1 b1 c1
a2 b2 c2
…
每一行表示一种组合购买情况。
# 方法一
for a in range(1,20):
for b in range(1,33):
if 5*a+3*b+(100-a-b)/3==100 and (100-a-b)%3==0:
print (a,b,(100-a-b))
# 方法二
for i in range(1, 20):
for j in range(1,33):
for k in range(3, 99, 3):
if(i + j + k == 100 and i * 5 + j * 3 + k // 3 == 100) :
print(i, j, k)
第三周训练题
LQ1087 字符串逆序
描述
给出一个字符串,然后将字符串逆序输出。
输入描述
输入一个只包含数字及字母的字符串(2<字符串长度<100)。
输出描述
将字符串逆序输出。
用例输入 1 | 用例输出 1 |
---|---|
abc | cba |
n = input()
# range(起,止,步进数): range(2,-1,-1), 就是 2 到 0,每次循环-1;注意:止的数值是-1后的值
# 起 len(n)-1 获取到字符串的长度(abc=3)但数据是重0开始算的,所以最大值要-1;止 0-1 最小值是0 的话,就要-1;-1是步进数,每次-1操作
for i in range(len(n)-1,0-1,-1):
print(n[i], end="")
【入门】统计字符的个数
描述
从键盘中任意输入一串字符,直至输入"#"字符代表结束.请编程统计输入的字符中的大写字母,小写字母和数字字符的个数分别是多少?
输入描述
输入只有一行,包括一串字符.(长度小于20)
输出描述
输出只有一行(这意味着末尾有一个回车符号),包括3个整数。分别代表大写字符,小写字符和数字字符的个数。
用例输入 1 | 用例输出 1 |
---|---|
daDSALDdcada3240 | 5 7 4 |
n = input()
isUp = 0 # 大写字数累计值
isLow = 0 # 小写字数累计值
isOther = 0 # 其它字数累计值
for i in range(len(n)): # len(n) 获取字符串的长度来做循环次数
if n[i] == "#": # 遇到 # 号时,程序终止
break; # break 跳出循环
elif n[i].isupper(): # isupper() 判断是否大写函数
isUp += 1 # 大写字数累计+1
elif n[i].islower(): # islower() 判断是否小写函数
isLow += 1 # 小写字数累计+1
else:
isOther += 1 # 其它字数累计+1
print(isUp, isLow, isOther) # 打印输出,自带空格分隔
【入门】删除指定字符
描述
从键盘输入一个字符串str和一个字符c,删除str中的所有字符c并输出删除后的字符串str。
输入描述
第一行是一个字符串; (不含空格)
第二行是一个字符。
输出描述
删除指定字符后的字符串。
用例输入 1** | 用例输出 1 |
---|---|
sdf$$$sdf$$ $ | sdfsdf |
_str = input()
_str2 = input()
print(_str.replace(_str2,"")) # replace 替换函数 replace(旧值,新值)
LQ1092 数位求和
描述
给定两个正整数 N 和M(N<M) ,统计N 到M 之间(包含N 和M)的正整数中,各个位上的数字之和为8 的有多少个。
如:N=100,M=150,100 到 150 之间有 5 个数,各个位上的数字之和为 8。分别是 107、116、125、134、143。
输入描述
输入两个正整数 N 和M(100≤N<M≤801),且正整数之间以一个空格隔开。
输出描述
输出一个整数,表示N 到M 之间(包含N 和M)的正整数中有多少个各个位上的数字之和为 8。
用例输入 1** | 用例输出 1 |
---|---|
100 150 | 5 |
n = input()
n1 = int(n.split(" ")[0])
n2 = int(n.split(" ")[1])
cc = 0
for i in range(n1, n2+1):
# 获取百位数:i//100%10 获取十位数:i//10%10 获取个位数:i%10 (固定获取方法,记住即可)
if i//100%10 + i//10%10 + i%10 == 8:
cc += 1
print(cc)
LQ1067 做统计
描述
输入 n 个正整数,以空格分隔。
依次输出其中的最大值、最小值以及平均值,以 逗号 分隔。
输入描述
第一行 一个整数n。
第二行 n 个正整数,以空格分隔。
输出描述
三个数,以逗号“ ,”分隔。
用例输入 1** | 用例输出 1 |
---|---|
10 1 2 3 4 5 6 7 8 9 10 | 10,1,5.5 |
提示
编译器默认只忽略行末的空格和换行符,其他内容不忽略。
n = int(input())
nn = input()
n_list = nn.split(" ") # 将字符串变成列表 ["1","2","3","4","5","6","7","8","9","10"]
max_val = int(n_list[0]) # 记录最大值,获取列表的第一个值并转成 int 整型
min_val = int(n_list[0]) # 记录最小值,获取列表的第一个值并转成 int 整型
_sum = 0 # 数值累计值
for i in n_list: # 循环列表,列表里面的数值是字符串类型
num = int(i) # 将列表中的字符串转成整型 int,不然赋值和计算会报错
if num > max_val: # 判断当前值和记录的最大值做比较
max_val = num # 当前值 “大于” 记录中的最大值时,替换成当前值
if num < min_val: # 判断当前值和记录的最小值做比较
min_val = num # 当前值 “小于” 记录中的最小值时,替换成当前值
_sum += num # 当前值累加
# "{},{},{}".format() 格式化输出的结果,有多少个 {},在 format 里面就要对应多少个输出值(位置要对应上)
print("{},{},{}".format(max_val,min_val,_sum/n))
LQ1175 相邻身高差
描述
有N (4<N<100)名同学站成一队,已知每名同学的身高 ( 单位: 厘米),请比较该队中任意相邻两名同学的身高差( 取正值 ),并输出最大的身高差。
例:N = 8,8名同学的身高分别是151、120、144、182、160、158、147、161.
相邻两名同学的身高差依次是31、24、38、22、2、11、14,其中最大身高差是38。
输入
第一行输入一个正整数N (4<N<100),表示站队的同学人数第二行输入N个正整数( 80<正整数<220),表示队列中学生的身高( 单位: 厘米),相邻两个正整之间用一个空格隔开。
输入描述
第一行输入一个正整数N (4<N<100),表示站队的同学人数第二行输入N个正整数( 80<正整数<220),表示队列中学生的身高( 单位: 厘米),相邻两个正整之间用一个空格隔开。
输出描述
输出一个非负整数,表示相邻两名同学中最大身高差。
用例输入 1** | 用例输出 1 |
---|---|
8 151 120 144 182 160 158 147 161 | 38 |
n = int(input())
nn = input()
n_list = nn.split(" ") # 将字符串变成列表 ["151","120","144","182","160","158","147","161"]
max_val = 0 # 记录最大值
old_val = int(n_list[0]) # 记录前一位数
for i in n_list: # 循环列表,列表里面的数值是字符串类型
num = int(i) # 将列表中的字符串转成整型 int,不然赋值和计算会报错
betw = old_val-num # 计算相邻数的差值
if betw < 0: # 差值一定是要正数,小于零就要做正数处理
betw = betw*-1 # 做正数处理 *-1
if betw > max_val: # 新差值 “大于” 记录值时,当前差值替换成最大值
max_val = betw
old_val = num # 将当前值赋值成前一位数
print(max_val)