蓝桥杯个人总结(入门练习-普通题)

给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:1. 年份是4的倍数而不是100的倍数;2. 年份是400的倍数。其他的年份都不是闰年

样例输入

2013

样例输出

no

input_num = int(input())
if input_num % 400 == 0 or (input_num % 4 == 0 and not input_num % 100 == 0):
    print('yes')
else:
    print('no')

python没有!有not

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。

输出格式

输出32行,按从小到大的顺序每行一个长度为5的01串。

样例输出

00000
00001
00010
00011
<以下部分省略>

for value in range(32):
    print('%05d' % int(bin(value)[2::]))

32位就是从0-31,先把十进制数转化为二进制,在对二进制进行切片,在利用整数的输出格式来规范

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

样例输入

5 7

样例输出

ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

from functools import reduce
num_list = input().split(' ')
num1 = int(num_list[0])
num2 = int(num_list[1])

total_list = []
for x in range(num2):
    total_list.append(chr(ord('A') + x))
    print(total_list[x], sep='', end='')
print()
for x in range(1, num1):
    total_list.pop()
    total_list.insert(0, chr(ord('A') + x))
    result = reduce(lambda s, z: s + z, total_list)
    print(str(result))

利用字母的ASCII码和数组,这里的reduceh函数输出为数字

给出n个数,找出这n个数的最大值,最小值,和

样例输入

5
1 3 -2 4 5

样例输出

5
-2
11

num = input()
num_list = list(map(lambda x: int(x), input().split()))
# num_list = input().split(' ')				也可以
# new_list = [int(a) for a in num_list]

print(max(num_list))
print(min(num_list))
print(sum(num_list))

这里要注意split()与split(’ ')的关系。这里的map类型要转化为list类型

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

样例输入

6
1 9 4 8 3 9
9

样例输出

2

num_total = input()
num_list = [int(n) for n in input().split()]
num_find = int(input())

try:
    res = num_list.index(num_find) + 1
except:
    res = -1
finally:
    print(res)

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:

1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。

样例输入

4

样例输出

1
1 1
1 2 1
1 3 3 1

num_total = int(input())

num_list = [[0]*i for i in range(1, 1 + num_total)]		# 创建一个i*n的二维数组,其值为0
for n in range(num_total):
    for m in range(n + 1):
        if m == 0 or m == n:			# 每行的第一个或最后一个赋值为1
            num_list[n][m] = 1		
        else:
            num_list[n][m] = num_list[n-1][m-1] + num_list[n-1][m]	# 其他的是上一行的两个值相加
        print(num_list[n][m], end=' ')
    print()			# 换行

这里要注意可以使用二维数组来简化算法,这里的测试忽略了每行末尾的空格

153是一个非常特殊的数,它等于它的每位数字的立方和,即153= 1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。

输出格式

按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

for n in range(100, 1000):
    new_list = str(n)
    if n == pow(int(new_list[0]), 3) + pow(int(new_list[1]), 3) + pow(int(new_list[2]), 3):
        print(n)

注意如果用split(‘’)来分开字符是没有意义的,因为参数不能为空字符串

1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式

按从小到大的顺序输出满足条件的四位十进制数。

for n in range(10, 100):
    print(str(n) + str(n)[::-1])


# 或
for i in range(1000,10000):
    if str(i)==str(i)[::-1]:#str(i)[::-1]作用是将字符串倒置
        print(i)

123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

样例输入

52

样例输出

899998
989989
998899

from functools import reduce

num_count = int(input())
for n in range(100, 1000):
    list_5 = str(n) + str(n)[1::-1]
    if num_count == reduce(lambda x, y: int(x) + int(y), list_5, 0):
        print(list_5)

for n in range(100, 1000):
    list_6 = str(n) + str(n)[::-1]
    if num_count == reduce(lambda x, y: int(x) + int(y), list_6, 0):
        print(list_6)

利用切片和reduce函数对字符串的每个值进行转换并相加来达成效果

十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。给出一个非负整数,将它表示成十六进制的形式。

样例输入

30

样例输出

1E

num_count = int(input())
print(hex(num_count)[2::].upper())
  • 把十进制数转换 – bin(x)函数:可把10 -> 2,oct(x)函数:可把10 -> 8,hex(x)函数:可把10 -> 16;这三个函数的输出值都为字符串
  • 转换为十进制数 – int(x, base)函数:可把base(默认为10)进制 -> 10但是x必须为字符串,意思是把base进制的x转化为10进制

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

num_input = input()

print(int(num_input, 16))

这里的int函数可以把前一个16进制的参数转化为10进制数

给定n个十六进制正整数,输出它们对应的八进制数。

样例输入

2
39
123ABC

样例输出

71
4435274

num_input = int(input())
for n in range(num_input):
    num = int(input(), 16)
    print(str(oct(num))[2::])

16 -> 10 -> 8

给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

样例输入

5
8 3 6 4 9

样例输出

3 4 6 8 9

num_input = int(input())
num_list = [int(n) for n in input().split()]
num_list.sort()
print(*num_list)

利用列表推导式和解包与排序。还要注意list的sort函数不会有返回值,是在原数组上面进行的。而全局函数sorted要返回一个新list

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值