# a1 = 'A'
# a2 = 'A B A'
# a3 = 'ABA C ABA'
# a4 = 'ABACABADABACABA'num = int(input('N <= 26:')) # 26 个字母
str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"if num == 1:a = 'A' # str[0]
else:a = 'A'for i in range(1, num, 1): # b = str[i]c = a + b + aa = c# print(str[i])# print(a)
print(a)
# print('请输入第一个字符串:', end="")
str1 = input()
# print('请输入第一个字符串:', end="")
str2 = input()l1 = len(str1) # 计算字符串的长度
l2 = len(str2)s1_lower = str1.lower() # 全部转换成小写字母
s2_lower = str2.lower()if l1 != l2: # 长度不同print(1)
elif l1 == l2 and str1 == str2: # 长度相同 内容相同print(2)
elif l1 == l2 and s1_lower == s2_lower: # 长度相同 内容相同 大小写不同print(3)
elif l1 == l2 and s1_lower != s2_lower : # 长度相同 内容不同print(4)
#【蓝桥杯】 水下探测器
# u : 水深
# s :初始深度
# u - up : 上浮1米
# d - down: 下沉1米print("请输入\'h\'和\'s\':", end="") # h 和 s ,以空格分开
num = input() #
print("请输入指令序列(仅包含u或d):", end="")
ud = input() # 指令# print(num)
# print(type(num))
num = num.split()
# print(type(num))
num = list(map(int, num))
# print(num)
# print(num[0])
# print(num[1])h = num[0] # 最大深度 h
s = num[1] # 最初深度 sif s > 0:for i in ud:if i == 'u' and s > 0:s -= 1if i == 'd' and s < h:s += 1continue# print(i, end=" ")print(s)
样例分析
# 猫吃鱼
# n 站点数
# y 买鱼费用
# m 保存鱼到下一站的费用
# print("请输入\'n\'个站点:", end="")
n = int(input())
# print(type(n))
ls1 = list()
min_p = 10000
count = 0for i in range(1, n+1):# print(f"请输入第{i}站(y鱼费用)和(m保存鱼的费用):", end="")ls2 = list(map(int, input().split()))ls1.append(ls2)
# print(ls1) # 二维列表# for i in ls1:
# for j in i:
# print(j, end=" ")
# # print()
for i in range(len(ls1)):# for j in range(len(ls1[i])):# print(ls1[i][j], end=" ")if ls1[i][0] < min_p:min_p = ls1[i][0]count += min_pmin_p += ls1[i][1]print('\n', count)
第十届蓝桥杯大赛青少年创意编程C++组省赛之小猫吃鱼
# 【评选最佳品牌】
# m 个商品(选1个品牌) 0i}位评委打分:", end="")s = input() # 打分ls.append(s) ## print()
ls = list(map(int, ls))
print(ls)for i in range(1, m+1):for j in ls:print(j, end=" ")
数学几何教学工具: https://www.geogebra.org/geometry
给出矩形的一对相对顶点的坐标:
a1x = 0 # 第一个矩形a的第1个顶点的x坐标
a1y = 0 # 第一个矩形a的第1个顶点的y坐标
a2x = 0 # 第一个矩形a的第2个顶点的x坐标
a2y = 0 # 第一个矩形a的第2个顶点的y坐标b1x = 0 # 第二个矩形b的第1个顶点x坐标
b1y = 0 # 第二个矩形b的第1个顶点y坐标
b2x = 0 # 第二个矩形b的第2个顶点x坐标
b2y = 0 # 第二个矩形b的第2个顶点y坐标
# a1x, a1y, a2x, a2y = list(map(float, input().split())) # int, float
# b1x, b1y, b2x, b2y = list(map(float, input().split()))
a1x = 0 # 第一个矩形a的第1个顶点的x坐标
a1y = 0 # 第一个矩形a的第1个顶点的y坐标
a2x = 0 # 第一个矩形a的第2个顶点的x坐标
a2y = 0 # 第一个矩形a的第2个顶点的y坐标b1x = 0 # 第二个矩形b的第1个顶点x坐标
b1y = 0 # 第二个矩形b的第1个顶点y坐标
b2x = 0 # 第二个矩形b的第2个顶点x坐标
b2y = 0 # 第二个矩形b的第2个顶点y坐标# print("第一个矩形对角:", end="")
# a1x, a1y, a2x, a2y = list(map(int, input().split()))
# print("第二个矩形对角:", end="")
# b1x, b1y, b2x, b2y = list(map(int, input().split()))
# print("第一个矩形对角:", end="")
a = list(map(float, input().split()))
# print("第二个矩形对角:", end="")
b = list(map(float, input().split()))
# print(a)
a1x = a[0]
a1y = a[1]
a2x = a[2]
a2y = a[3]
# print(b)
b1x = b[0]
b1y = b[1]
b2x = b[2]
b2y = b[3]
# print(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y)
参考程序
a1x = 0 # 第一个矩形a的第1个顶点的x坐标
a1y = 0 # 第一个矩形a的第1个顶点的y坐标
a2x = 0 # 第一个矩形a的第2个顶点的x坐标
a2y = 0 # 第一个矩形a的第2个顶点的y坐标b1x = 0 # 第二个矩形b的第1个顶点x坐标
b1y = 0 # 第二个矩形b的第1个顶点y坐标
b2x = 0 # 第二个矩形b的第2个顶点x坐标
b2y = 0 # 第二个矩形b的第2个顶点y坐标# print("第一个矩形对角:", end="")
# a1x, a1y, a2x, a2y = list(map(int, input().split()))
# print("第二个矩形对角:", end="")
# b1x, b1y, b2x, b2y = list(map(int, input().split()))
# print("第一个矩形对角:", end="")
a = list(map(float, input().split()))
# print("第二个矩形对角:", end="")
b = list(map(float, input().split()))
# print(a)
a1x = a[0]
a1y = a[1]
a2x = a[2]
a2y = a[3]
# print(b)
b1x = b[0]
b1y = b[1]
b2x = b[2]
b2y = b[3]
# print(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y)# 第三个矩形c第1个顶点的x、y坐标
c1x = max(min(a1x, a2x), min(b1x, b2x))
c1y = max(min(a1y, a2y), min(b1y, b2y))
# 第三个矩形c第2个顶点的x、y坐标
c2x = min(max(a1x, a2x), max(b1x, b2x))
c2y = min(max(a1y, a2y), max(b1y, b2y))if c1x >= c2x and c1y >= c2y: # 不相交的情况a = 0b = 0
else:a = c2x - c1x # 底边b = c2y - c1y # 高
# 四边形的面积 = 底 x 高
s = a * b
if s < 0:# print("%.2f"%0)# s = 0.00# print("%.2f"% s)print("0.00")else:print("%.2f"% s) # 保留小数后两位
蓝桥杯练习系统习题(Python)–基础练习 矩形面积交
【题目描述】
编程实现两个字符串s1和s2的字典序比较。(保证每一个字符串不是另一个的前缀,且长度在100以内)。若s1和s2相等,输出0;若它们不相等,则指出其第一个不同字符的ASCII码的差值:如果s1>s2,则差值为正;如果s1 【输入格式】 输入2个字符串,每个字符串仅包含小写字母(不含空格),两个字符串之间用空格隔开。 【输出格式】 按题意输出差值或0。 【输入样例 】 java basic 【输出样例】 8 【前导知识】 输出结果: 所以,变换规律如下: 1次变换后:1; … 输入说明 : 输入1个整数n,范围为0<=n<=19,表示变换的次数 输出说明 : n次变换后的s01串,行首行尾无空格,也无空行。 输入范例 : 6 输出范例 : 0110110101101 试题 算法训练 s01串—蓝桥杯 问题描述 输出格式 样例输入 2 样例输出 <1>1-2,3-4 输出结果 请输入n:2 请输入n:2 <2>match[1][2]=1 match[1][3]= <3>match[1][2]=1 match[1][3]=1 match[1][4]=1 问题是关于二维列表[x][y] 标记为1 的处理上。以下这种方法是错误的。 问题:想要修改二维列表中其中一个值,会造成所有项都改变! 输出结果: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 解决办法 原因是,创建二维数组的方式有问题。可能使用的创建方式是: 正确创建二维列表的方式为: 参考程序最终版本 以下实例用于判断用户输入的年份是否为闰年: 【题目描述】 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形,以帮助你的迷信朋友解决难题。 【输入格式】 输入只有一行,即某个特定的年份(大于或等于1998年)。 【输出格式】 输出只有一行,即在这一年中,出现了多少次既是13号又是星期五的情形。 【输入样例】 1998 【输出样例】 3 参考代码 1757 【入门】FJ的字符串蓝桥杯字符串 3 3 100.000% https://blog.csdn.net/lybc2019/article/details/105791813/ch1 = 'a'
ch2 = 'b'
print(type(ch1))print(ord(ch1)) # 输出ASCII编码
print(ord(ch2))
print(ord(ch2) - ord(ch1))
97
98
1'''
编程实现两个字符串s1和s2的字典序比较。(保证每一个字符串不是另一个的前缀,且长度在100以内)。
若s1和s2相等,输出0;
若它们不相等,则指出其第1个不同字符的ASCII码的差值:
如果s1>s2,则差值为正;
如果s1
2028【入门】s01串蓝桥杯字符串
2次变换后:01;
3次变换后:101;
4次变换后:01101;
5次变换后:10101101;
2032 【基础】比赛安排
设有有2 n(n<=6)个球队进行单循环比赛,计划在2 n – 1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2 n – 1天内每个队都与不同的对手比赛。
输入格式
输入文件matchplan.in共一行,输入n的数值。
输出文件matchplan.out共(2 n – 1)行,第i行输出第i天的比赛安排。
格式为: A-B,C-D,……。其中i是天数,A,B分别为比赛双方的编号,每行共2 n-1个比赛场次。
<2>1-3,2-4
<3>1-4,2-3print("请输入n:", end="")
n = int(input())
game_team = pow(2, n) # 比赛球队
game_day = pow(2, n) - 1 # 比赛天数# 比赛情况
match = [[0] * 100] * 100
# 记录
temp = [0] * 100
# print(match, temp)# print(match, " ", tamp)
# print(match[0][0]," ", match[1], " ", tamp)print(f"\'{game_team} 支球队参赛, {game_day}天完成比赛\'")for i in range(1, game_day+1):print("<%d>" % i, end="")count = 0# print(f"<{i}>")for x in range(1, game_team+1):for y in range(x+1, game_team+1):print(f"({x},{y})", end=" ")# if match[x][y] == 0 and temp[x] == 0 and temp[y] == 0:# count += 1# temp[x] = 1 # 比赛过的小组标记为 1# temp[y] = 1# match[x][y] = 1# print(f"{x}-{y}", end=" ")# if count == game_team / 2:# continue# print()print()
print(f"({x},{y})", end=" ") # 测试--打印出所有组合情况
print(f"match[{x}][{y}]={match[x][y]}", end=" ")
‘4 支球队参赛, 3天完成比赛’
<1>(1,2) (1,3) (1,4) (2,3) (2,4) (3,4)
<2>(1,2) (1,3) (1,4) (2,3) (2,4) (3,4)
<3>(1,2) (1,3) (1,4) (2,3) (2,4) (3,4)
‘4 支球队参赛, 3天完成比赛’
<1>match[1][2]=0
1-2 match[1][3]=0
match[1][4]=0
match[2][3]=0
match[2][4]=0
match[3][4]=0
3-40
1-3 match[1][4]=1
match[2][3]=1 match[2][4]=1
match[3][4]=1
match[2][3]=1 match[2][4]=1
match[3][4]=1match[i][j] = 1
match = [[0] * 4] * 4 # 创建二维列表
temp = [0] * 4 # 创建一维列表# print(match,"\n", temp)
print(match)
for i in range(4):for j in range(4):match[i][j] = 1print(f"match[{i}][{j}]={match[i][j]}", end=" ")print()
match[0][0]=1 match[0][1]=1 match[0][2]=1 match[0][3]=1
match[1][0]=1 match[1][1]=1 match[1][2]=1 match[1][3]=1
match[2][0]=1 match[2][1]=1 match[2][2]=1 match[2][3]=1
match[3][0]=1 match[3][1]=1 match[3][2]=1 match[3][3]=1match = [[0] * 4] * 4 # 比赛情况
list1 = [[0] * 3 for _ in range(3)]
import timegame_team = 0
game_day = 0
match = [[0] * 100 for _ in range(100)] # 比赛情况 (注意二维列表的创建)def match_info():count = 0 # 统计已经安排的比赛队伍global matchtemp = [0] * 100 # 记录 标记for x in range(1, game_team+1):for y in range(x+1, game_team+1):# print(f"({x},{y})", end=" ") # 测试--打印出所有组合情况# print(f"temp[{x}][{y}]", end="|")# print(f"match[{x}][{y}]={match[x][y]}", end=" ")time.sleep(1)if match[x][y] == 0 and temp[x] == 0 and temp[y] == 0:count += 1temp[x] = 1 # 当天分配过的小组编号标记为 1temp[y] = 1 # match[x][y] = 1 # 之前分配过的小组对决编号标记为 1print(f"{x}-{y}", end=" ")if count == game_team / 2: # 2-2对决 比赛队伍组数breakprint()# print()if __name__ == '__main__':print("请输入n:", end="")n = int(input())game_team = pow(2, n) # 比赛球队game_day = pow(2, n) - 1 # 比赛天数print(f"\'{game_team} 支球队参赛, {game_day}天完成比赛\'")for i in range(1, game_day + 1):print("<%d>" % i, end="")match_info()# print()
2036【基础】黑色星期五
四年一润百年不润四百年再润
print("请输入年份:", end="")
y = int(input())
# 闰年:四年一润,百年不润,四百年再润。即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份
# if y % 4 == 0 and y % 100 != 0 or y % 100 == 0 and y % 400 ==0:
# if y % 4 == 0 and y % 100 != 0:
# print("闰年")
# elif y % 100 == 0 and y % 400 ==0:
# print("闰年")
# else:
# print("平年")# 口诀:四年一润,百年不润,四百年再润!!!if y % 4 == 0:if y % 100 == 0:if y % 400 == 0:print("闰年")else:print("不是闰年!")else:print("闰年")
else:print("不是闰年!")
说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用户输入的年份肯定大于或等于1998年。import time
while True:print("请输入年份:", end="")y = int(input())while(1):if y < 1998:print("请输入大于或等于1998的年份:", end="")y = int(input())else:breakbreak# y = int(input())# 口诀:四年一润,百年不润,四百年再润!!!
day_year = 0 # 该年的天数
day_month2 = 0 # 该年的二月天数
if y % 4 == 0:if y % 100 == 0:if y % 400 == 0:print(f"{y}闰年")day_month2 = 29 # 闰年二月29天day_year += 366else:print(f"{y}不是闰年!")day_month2 = 28 # 平年二月28天day_year += 365else:print(f"{y}闰年")day_month2 = 29 # 闰年二月29天day_year += 366
else:print(f"{y}不是闰年!")day_month2 = 28 # 平年二月28天day_year += 365# 第一步: 判断闰年和平年 365 366天 year
# 第二步: 计算 12个月份 一星期7天 month week
# 初始数据 1998 1.1 是星期四 (计算当前年份1月1日的星期是多少 = 1998.1.1星期四 + 当前-1年份的星期数 )day_count = 0 # 统计天数
for i in range(1998, y, 1): # 统计1998 至 year-1年 天数if i % 4 == 0:if i % 100 == 0:if i % 400 == 0:print(f"{i}闰年")day_count += 366else:print(f"{i}不是闰年!")day_count += 365else:print(f"{i}闰年")day_count += 366else:print(f"{i}不是闰年!")day_count += 365# print(f"day_count = {day_count}")time.sleep(1)# print(f"1998年至{y}年共有:{day_count} 天")# 1星期 = 7天
week = divmod(day_count, 7) # 星期=day_count // 7 ; day_count % 7; divmod()该函数返回的是元组(整数商,余数)
print(f"divmod({day_count}, 7)= {week}") # 星期4 + 余数 就是y年的起始星期数
print(f"week[1] = {week[1]}") # 取week元组中的第二个数字 余数if y == 1998:y_week = 4 # 1998.1.1是星期四
else:y_week = 4 + week[1] + 1 # y年1月1日 星期4 + 余数 就是y年的起始星期数 4 + 5 + 1 = 10if y_week > 7: # 一周只有7天y_week_error= divmod(y_week, 7) # divmod(10, 7) = (1, 3) 商1余3y_week = y_week_error[1]print(f"{y}年1月1日是星期{y_week}")black_week5 = 0 # 统计黑色星期五的数量# 12个月 1月:31天 2月:28/29天 3月:31天 4月:30天 ……
# if week == 星期五 and day == 13
# count += 1 黑色星期五
# 月份()
# 天数() 二月份的天数
# 星期() 该年第一天的星期数
# month = [31, day_month2, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
month = {'m1': 31, 'm2': day_month2, 'm3': 31, 'm4': 30, 'm5': 31, 'm6': 30, 'm7': 31, 'm8': 31,'m9': 30, 'm10': 31, 'm11': 30, 'm12': 31}
for key, value in month.items():print(f"month[{key}][{value}]", end=" ")# print("\n", type(key), type(value))# breakfor i in range(1, value+1, 1):if y_week == 5 and i == 13:print(f"{key}月{i}日黑色星期5")black_week5 += 1y_week += 1if y_week > 7:y_week = 1time.sleep(0.05)
print(f"\n{y}年共有{black_week5}个黑色星期五")
print(black_week5)
参考资料:
1758 【入门】字符串对比蓝桥杯字符串 2 2 100.000%
2009 【基础】水下探测器:deep.cpp蓝桥杯字符串 6 6 100.000%
2010 【基础】小猫吃鱼:fish.cpp蓝桥杯数组问题递推 4 7 57.143%
2012 【基础】评选最佳品牌:king.cpp蓝桥杯字符串 1 1 100.000%
2020 【基础】报时助手蓝桥杯分支问题 4 5 80.000%
2021 【基础】分解质因数蓝桥杯循环的应用 2 2 100.000%
2022 【基础】龟兔赛跑预测蓝桥杯循环的应用 4 8 50.000%
2023 【提高】回形取数蓝桥杯二维数组递归 2 2 100.000%
2024 【入门】矩形面积交蓝桥杯分支问题 2 2 100.000%
2025 【提高】完美的代价蓝桥杯字符串贪心 1 1 100.000%
2026 【基础】芯片测试蓝桥杯 1 1 100.000%
2027 【入门】判定字符位置蓝桥杯字符串 4 4 100.000%
2028 【入门】s01串蓝桥杯字符串 3 3 100.000%
2029 【基础】阿尔法乘积蓝桥杯循环的应用 4 4 100.000%
2030 【基础】摆动序列蓝桥杯递推 1 1 100.000%
2031 【入门】比较字符串蓝桥杯字符串 3 3 100.000%
2032 【基础】比赛安排蓝桥杯 1 1 100.000%
2033 【提高】和为T蓝桥杯深搜 2 2 100.000%
2034 【基础】猴子分苹果蓝桥杯 4 6 66.667%
2035 【基础】集合运算蓝桥杯数组问题 3 3 100.000%
2036 【基础】黑色星期五蓝桥杯模拟 2 2 100.000%
2037 【基础】寂寞的数蓝桥杯循环的应用 3 3 100.000%
2038 【提高】删除多余括号蓝桥杯字符串 3 3 100.000%
2039 【基础】输出米字形蓝桥杯循环的应用 3 3 100.000%
2040 【基础】数的划分蓝桥杯动态规划 3 4 75.000%
2041 【入门】数组查找及替换蓝桥杯数组问题字符型 4 4 100.000%
2042 【入门】完数判断蓝桥杯循环的应用 5 5 100.000%
2043 【入门】薪水计算蓝桥杯分支问题 3 3 100.000%
2044 【入门】整除问题简单循环蓝桥杯 5 5 100.000%
2047 【提高】单词接龙的最长长度深搜蓝桥杯 1 1 100.000%
2048 【提高】黑白无常蓝桥杯深搜 2 2 100.000%
2349 【基础】评选最佳品牌