给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年: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