1.计算对称平方数
题目描述
打印所有不超过n(n<256)的,其平方具有对称性质的数,如11*11=121。
输入描述
无
输出描述
每行一个数,表示对称平方数
def f(n): flag = True sum = n * n sum_str_list = [i for i in str(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 = False break else: if sum_str_list[len(sum_str_list)//2-i-1] == sum_str_list[len(sum_str_list)//2+i]: continue else: flag = False break if flag: print(n) else: pass if __name__ == '__main__': for i in range(1, 257): f(i)
2、找出所有三位数组合
题目描述
有1、2、3、4四个数字,要求任选三个,组成一个三位数,每位数字各不相同,输出所有三位数组合。
输入描述
无
输出描述
打印所有三位数组合
a_list = ['1','2','3','4'] def get_num_list(num,arg): arg.remove(num) return arg for a in a_list: for b in get_num_list(a,a_list.copy()): if b == a: continue else: for c in get_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)
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 []