蓝桥杯

其它杂事 · 2023-10-31

蓝桥杯

第一周训练题
N+N的值

描述

题目描述:(注.input()输入函数的括号中不允许添加任何信息)

编程实现:

给定一个正整数N,计算出N+N的值。

例如:N = 4,4+4的值为8(8=4+4)。

输入描述

输入一个正整数N。

输出描述

输出N+N的值。

用例输入 1用例输出 1
48
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
83
N = int(input())
Q = N - 5
print(Q)

A+B问题

描述

(注:input()输入函数的括号中不允许添加任何信息)
编程实现:
给定两个整数,计算两个数的和。

输入描述

输入两个整数,数与数之间用空格分隔。

用例输入 1用例输出 1
2 35

提示

输出两个数的和。
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,41
2
3
4
i = input()
i1 = i.split(',')

for ii in i1:
    print(ii)

第二周训练题
水仙花

描述

判断给定的三位数是否是 水仙花 数。所谓 水仙花 数是指其值等于它本身 每位数字立方和的数。例 153 就是一个 水仙花 数。 153=13+53+33

输入描述

输入一个整数。

输出描述

是水仙花数,输出"YES",否则输出"NO"(不包括引号)

用例输入 1用例输出 1
123NO

提示

是水仙花数,输出"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
157 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 40084000 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
253
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
abccba
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
daDSALDdcada32405 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 1505
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)
Python 考试
Theme Jasmine by Kent Liao