• python20220628


    题目1:

    创建文件data.txt,共100000行,每行存放一个1~100之间的整数
    

    代码如下:

    # 方法1: with上下文管理关键字
    import random
    with open('data.txt','w+') as f:
        for i in range(100000):
            f.writelines(str(random.randint(0,100)) + '\n')
    
    # 方法2: 3部曲
    import random
    f = open('data.txt','w+')
    for i in range(100000):
        f.writelines(str(random.randint(0,100)) + '\n')
        # f.seek(0,0)
        # print(f.read())
    f.close()
    

    题目2:

    栈的工作原理:
    1.入栈
    2.出栈
    3.栈顶元素
    4.栈长度
    5.栈是否为空
    

    代码如下:

    # 列表法1: 
    stack = []
    info = '''
        栈操作: 
        1.入栈
        2.出栈
        3.栈顶元素
        4.栈长度
        5.栈是否为空
    
    while True:
        print(info)
        select = input("输入你的选择: ")
        if select == "1":
            item = input("输入入栈元素: ")
            stack.append(item)
            print("%s 元素入栈成功" %(item))
        elif select == "2":
            if not stack:
                print("栈为空,不能出栈")
            else:
                item = stack.pop()
                print("%s 元素出栈成功" %(item))
        elif select == "3":
            if len(stack) == 0:
                print("栈为空")
            else:
                item = stack[-1]
                print("栈顶元素为 %s" %(item))
        elif select == "4":
            print("栈长度为 %s" %(len(stack)))
        elif select == "5":
            if len(stack) == 0:
                print("栈为空")
            else:
                print("栈不为空")
        elif select == "exit":
            print("退出...")
            exit()
        else:
            print("请输入1-5的数字..")
    
    # 面向对象法2: 
    class Stack():
        def __init__(self):
            self.stack = []
        
        def push(self,value):
            self.stack.append(value)
            return True
    
        def pop(self):
            # 判断栈是否为空
            if self.stack:
                item = self.stack.pop()
                return item
            # 栈为空
            else:
                return False
        
        def top(self):
            # 栈不为空
            if self.stack:
                item = self.stack[-1]
                return item
            else:
                return False
    
        def length(self):
            return len(self.stack)
    
        def view(self):
            return ','.join(self.stack)
    
    s = Stack()
    s.push('1')
    s.push('2')
    s.push('3')
    item = s.pop()
    print(s.view())
    

    题目3:

    生成一个大文件ips.txt,要求1200行,每行随机为172.25.254.0/24段的ip;
    读取ips.txt文件统计这个文件中ip出现频率排前10的ip;
    

    代码如下:

    # 方法1,自己写的:
    # 生成文件,记录ip
    import random
    f = open('ips.txt', 'w+')
    
    for i in range(1200):
        f.writelines('172.25.254.' + str(random.randint(1,255)) + '\n')
    
    f.close()
    
    # 对文件中的ip统计次数
    f = open('ips.txt', 'r')
    ip_dict = {}
    for lines in f.readlines():
        lines = lines.strip()
        if lines in ip_dict:
            ip_dict[lines] += 1
        else:
            ip_dict[lines] = 1
    print(ip_dict)
    
    # # 统计前10个ip
    sorted_ips = sorted(ip_dict.items(),key = lambda x: x[1],reverse = True)[:10]
    print(sorted_ips)
    
    # 方法2,写成函数形式:
    import random
    
    def create_ip(filename):
        ip = ['172.25.254.' + str(i) for i in range(1,255)]
        with open(filename,'a+') as f:
            for i in range(1200):
                f.write(random.sample(ip,1)[0] + '\n')
    create_ip('ips.txt')
    
    def sorted_by_ip(filename,count=10):
        ips_dict = dict()
        with open(filename) as f:
            for ip in f:
                ip = ip.strip()
                if ip in ips_dict:
                    ips_dict[ip] += 1
                else:
                    ips_dict[ip] = 1
        sorted_ip = sorted(ips_dict.items(),key=lambda x:x[1],reverse = True)[:count]
        return sorted_ip
    print(sorted_by_ip('ips.txt'))
    

    题目4:

    在当前目录新建目录img, 里面包含100个文件, 100个文件名各不相同(X4G5.png)
    将当前img目录所有以.png结尾的后缀名改为.jpg.
    

    代码如下:

    import os
    import random
    import string
    
    s = string.ascii_letters + string.digits
    
    # 生成4位随机字符的文件名
    def gen_code(len=4):
        li = random.sample(s,len)
        # 将4个字符拼接为字符串
        return ''.join(li)
    print(gen_code())
    
    # 新建img目录和以.png后缀的文件
    def create_files():
        # 调用函数gen_code()100次,即生成100个验证码
        li = [gen_code() for i in range(100)]
        # 新建目录
        os.mkdir('img')
        for i in li:
            # 新建文件,linux中才可用
            os.mknod('img/' + i + '.png')
    
    print(create_files())
    
    # 修改后缀名,从png改为jpg
    def modify_suffix(dirname,old_suffix,new_suffix):
        pngfile = filter(lambda filename:filename.endswith(old_suffix),os.listdir(dirname))
    
        # 分离后缀名和文件名
        basefiles = [os.path.splitext(filename)[0] for filename in pngfile]
    
        for filename in basefiles:
            oldname = os.path.join(dirname,filename + old_suffix)
            newname = os.path.join(dirname,filename + new_suffix)
            os.rename(oldname,newname)
            print('%s重命名为%s成功' % (oldname,newname))
    
    modify_suffix('img','.png','.jpg')
    
  • 相关阅读:
    (todo)数组名 有存储空间吗?
    c和指针 指针数组 关于指针数组
    c面试题 来自android手机 1/6
    c 和指针 二维数组赋予一维数组指针 数组长度 数组与指针长度区别
    c语言优先级面试小结
    hxf 每晚 宏 不用大于小于 求大小
    DelphiX中的DXSprite单元中涉及到修改
    在java开发过程中,添加表时,需要配置一下的目录和文件。
    代码生成器cs的注册方法.
    将一个字符串映射为一个Delphi页面控件属性名
  • 原文地址:https://www.cnblogs.com/even160941/p/16418791.html
Copyright © 2020-2023  润新知