1、闰年判断
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:1.年份是4的倍数而不是100的倍数 2.年份是400的倍数。
其他的年份都不是闰年。
输入格式
输入包含一个整数y,表示当前的年份。
输出格式
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。
代码:
# 闰年判断
judge = 1
while judge:
judge = int(input("请问你是否想要进行程序,如果你需要则输入1,不需要则输入0:"))
x = int(input("请输入你想要判断的年份:"))
if x % 4 == 0 and x%100!=0 :
print("yes")
elif x%400 == 0:
print("yes")
else:
print("no")
2、01字符串
代码:
# 输出32个二进制的数字
for i in range(32):
b_str = bin(i)[2:].zfill(5)
print(b_str)
这个题目的代码比较简单,但是涉及较多的语法,我给大家简单分析一下:
首先我们是要输出32行,按照从小到大的顺序每行一个长度为5的01串,我一开始没有想到如何做,但是后来想到python中有直接转二进制的情况,就可以适用bin(i)
我根据这个想法首先写了这个代码:
# 输出32个二进制的数字
for i in range(32):
b_str = bin(i)
print(b_str)
但是这个代码的输出是这样的:
0b0
0b1
0b10
0b11
0b100
0b101
0b110
0b111
0b1000
0b1001
0b1010
0b1011
0b1100
0b1101
0b1110
0b1111
0b10000
0b10001
0b10010
0b10011
0b10100
0b10101
0b10110
0b10111
0b11000
0b11001
0b11010
0b11011
0b11100
0b11101
0b11110
0b11111
我们需要把前面0b去掉,并且在前面的几个补足到5位:
# 输出32个二进制的数字
for i in range(32):
b_str = bin(i)[2:].zfill(5)
print(b_str)
其中[2:]这是一个切片操作,表示从索引 2 开始到字符串末尾的部分。
.zfill(width)
是字符串方法,用于在字符串前面补0,直到字符串的长度达到指定的宽度 width
。
3、字母图形
问题描述:
利用字母可以组成一些美丽的图形,下面给出了一个例子:
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式:
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式:
输出n行,每个m个字符,为你的图形。
思路:
在这里我主要是想用循环的方式,循环的方式涉及向右移动
所以我想的是主要使用一个列表的空间,通过列表内元素的循环移动,
最后输出的时候将其转换为字符串就可以了
具体大家看代码
代码:
# 字母图形
from typing import List
# 由于题目要求输入一行分别表示我要输出的图形的行数和列数
n,m = map(int,input("请输入需要的行数和列数,用空格分隔:").split( ))
# 输出图形
apl = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
str_1 =list[str](m*[''])#创建一个长度为m的列表,每个元素都是空字符串
for i in range(m):
str_1[i]=apl[i]
print("".join(str_1))
#上述代码完成了第一行的构造
for j in range(n-1):
i = m-1
while i>0:
str_1[i]=str_1[i-1]
i-=1
str_1[i]=apl[j+1]
print("".join(str_1))
4 数列特征
问题描述:
给出n个数,找出这n个数的最大值,最小值,和。
输入格式:
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出格式:
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
思路:
这种题感觉就是熟悉一下即可,主要就是运用循环,我认为之前出的博客难度都要比这个题高,我们就快速的刷一下
代码:
# 数列特征
from typing import List
n = int(input("请输入你需要输入一个多大的数列:"))
num = list[int](n*[''])
num = list(map(int,input("请输入数列,各个数字之间以空格为分隔:").split(' ')))
max = num[0]
min = num[0]
sum = 0
l = len(num)
i = 0
while i<l:
if max<num[i]:
max = num[i]
if min>num[i]:
min = num[i]
sum += num[i]
i+=1
print(max)
print(min)
print(sum)
刷完之后,其实希望和大家分享的经验就是还是要自己亲自来敲代码,还是会遇到很多自己考虑不周的地方,尤其是在使用 list[int](n*['']) 的时候,这里面的int就表示的是输出的会是int
5 查找整数
问题描述:
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式:
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式:
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
代码:
# 查找整数
n = int(input())
num_str = list(map(int, input().split( )))
number = int(input())
l = len(num_str)
for i in range(l):
if num_str[i] == number:
i+=1
print(i)
break