1.计算对称平方数
题目描述
打印所有不超过n(n<256)的,其平方具有对称性质的数,如11*11=121。
输入描述
无
输出描述
每行一个数,表示对称平方数
deff(n):
flag=True
sum= n *n
sum_str_list= [i for i instr(sum)]
a, b= divmod(len(str(sum)), 2)for i in range(0,len(sum_str_list)//2):if b >0:if sum_str_list[len(sum_str_list)//2-i-1] == sum_str_list[len(sum_str_list)//2+i+1]:continue
else:
flag=Falsebreak
else:if sum_str_list[len(sum_str_list)//2-i-1] == sum_str_list[len(sum_str_list)//2+i]:continue
else:
flag=Falsebreak
ifflag:print(n)else:pass
if __name__ == '__main__':for i in range(1, 257):
f(i)
View Code
2、找出所有三位数组合
题目描述
有1、2、3、4四个数字,要求任选三个,组成一个三位数,每位数字各不相同,输出所有三位数组合。
输入描述
无
输出描述
打印所有三位数组合
a_list = ['1','2','3','4']defget_num_list(num,arg):
arg.remove(num)returnargfor a ina_list:for b inget_num_list(a,a_list.copy()):if b ==a:continue
else:for c inget_num_list(b,a_list.copy()):if c == a or c ==b :continue
else:print(c + a +b)print(a + c +b)print(c + b +a)print(a + b +c)print(b + a +c)print(b + c + a)
View Code
2、找出所有三位数组合(改良)
上述程序输出有点繁琐,改良如下。
1 for i in range(1,5):2 for j in range(1,5):3 for k in range(1,5):4 if i!=k and i!=j and j!=k:5 print(i,j,k)
3、斐波那契数列
题目描述
打印0,1,1,2,3,5,......
输入描述
无
输出描述
输出0,1,1,3,5,......规律的数
def feibo(n):
if n == 0:
return 0
if n==1:
return 1
return feibo(n-1)+feibo(n-2)
for i in range(10):
print(feibo(i))
3、字符串查找
题目描述
给一字符串,查找字符串出现最多的字符,并打印该字符。
输入描述
输入一个字符串
输出描述
输出该字符传出现次数最多的字符
def get_str_dict(string):
str_dict = {}
for s in string:
if s in str_dict.keys():
str_dict[s] += 1
else:
str_dict[s] = 1
return str_dict
def get_max_str_value(str_dict):
count = 0
s_char = ''
for key, value in str_dict.items():
if value > count:
count = value
s_char = key
return s_char, count
if __name__ == "__main__":
string = input('>>:').strip()
str_dict = get_str_dict(string)
s,count = get_max_str_value(str_dict)
print(s,count)
4、日期累加
题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入描述
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述
输出m行,每行按yyyy-mm-dd的个数输出。
import sys
import datetime
def add_time(year,month,day,add_days):
in_time = datetime.date(year=year,month=month,day=day)
add_time = datetime.timedelta(days=add_days)
out_time = in_time + add_time
print(out_time)
if __name__ == "__main__":
n = sys.stdin.readline().strip()
for i in range(int(n)):
in_str = sys.stdin.readline().strip().split()
add_time(int(in_str[0]), int(in_str[1]),int(in_str[2]),int(in_str[3]))
5、贴邮票
题目描述
某人有8 角的邮票5 张,1 元的邮票4 张,1 元8 角的邮票6 张,用这些邮票中的一张或若干张可以得到多少中不同的邮资?
输入描述
无
输出描述
输出一行,表示题目所求。
a_list = []
for i in range(6):
for j in range(5):
for k in range(7):
a_list.append(i*8+j*10+k*18)
print(len(set(a_list)))
6.图片验证码生成
import random
from io import BytesIO
from PIL import Image, ImageDraw, ImageFont
class CodeImage(object):
_source = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
_mode = 'RGB'
_bg_color = (255, 255, 240)
def __init__(self,size=(90, 30)):
# 初始化画布,初始化画笔
self._size = size
self.image = Image.new(self._mode, self._size, self._bg_color)
self.draw = ImageDraw.Draw(self.image, self._mode)
def get_color(self):
'''获取随机rgb'''
return (random.randint(64, 200), random.randint(0,200), random.randint(0, 200))
def get_str(self, length):
'''获取随机字符串'''
code = random.sample(self._source, length)
return ''.join(code)
def get_point(self):
'''获取坐标'''
point = (random.randrange(self._size[0])+1,random.randrange(self._size[1]+1))
return point
def draw_text(self,code):
'''画文本内容'''
length = len(code)
font = ImageFont.truetype('Monaco.ttf', self._size[1]-3)
x = 10
y = 0
for i in range(length):
x = i * (self._size[0]/length) + 5
self.draw.text(xy=(x,y),text=code[i],font=font,fill=self.get_color())
def draw_point(self, num):
'''画干扰点'''
for i in range(num):
self.draw.point(xy=self.get_point(), fill=self.get_color())
def draw_line(self):
'''画干扰线'''
for i in range(random.randrange(4)):
self.draw.line((self.get_point(),self.get_point()), fill=self.get_color())
def save_image(self,num=500):
code = self.get_str(4)
self.draw_text(code)
self.draw_line()
self.draw_point(num)
self.image.save('code.jpg')
return code
def save_image_io(self,num=500,image_format='png'):
'''保存图片为io流'''
code = self.get_str(4)
self.draw_text(code)
self.draw_line()
self.draw_point(num)
fp = BytesIO()
self.image.save(fp=fp,format=image_format)
return code,fp
CodeImage().save_image()
7、两数之和
题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
输入描述
nums = [2, 7, 11, 15], target = 9
输出描述
[0,1]
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
num = target - nums[i]
for j in range(i+1,len(nums)):
if nums[j] == num:
return [i,j]
return []
方式二
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
adict = {}
for i,item in enumerate(nums):
num = target - item
if num in adict.keys():
return [i,adict.get(num)]
adict.update({item:i})
return []