zoukankan      html  css  js  c++  java
  • python题目练习

    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)
    View Code

    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)
    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 []  

      



  • 相关阅读:
    centos 挂载u盘
    如何将网站部署到tomcat根目录下
    seo工具
    mysql 1045 access denied for user********
    div 自适应宽度
    mysql 日志提示 is marked as crashed and should be repaired
    css overflow:hidden无效解决办法
    java 调用 .net webservice
    Java开发笔记(十五)短路逻辑运算的优势
    Java开发笔记(十四)几种运算符的优先级顺序
  • 原文地址:https://www.cnblogs.com/snow-wolf-1/p/10558872.html
Copyright © 2011-2022 走看看