题目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')
posted on 2022-06-28 11:10  jiayou111  阅读(68)  评论(0编辑  收藏  举报