欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python基础练习题

程序员文章站 2024-03-05 14:43:13
...

python基础习题


python学习过程中题目很多,特写此记录部分习题,解题方法不一定最佳,欢迎文末讨论。

T1 字符串密码强度

题干: “一般作为密码字符的主要有数字、小写字母、大写字母和标点符号这4个类型。假设密码安全强度主要和字符串的复杂程度有关系:字符串包含的字符种类越多,认为其安全强度越高。将安全强度分为:强密码(同时含有4个类型)、中高密码(同时含有3个类型)、中低密码(同时含有2个类型)、弱密码(只含有1个类型)。编写程序,用户输入一个字符串后,输出该字符串作为密码时的安全强度。”

基础阶段的题目都比较简单,简单分析本题:遍历字符串的所有单个字符,设定计数列表来统计不同类型的出现与否,从而判断出密码的安全强度。

# 编写程序,用户输入一个字符串后,输出该字符串作为密码时的安全强度。
for j in range(4):
    n = input("输入一个字符串:")
    n = "".join(n)
    count = [0,0,0,0]
    for i in n:
        if i.isdigit():
            count[0] = 1
        elif i.islower():
            count[1] = 1
        elif i.isupper():
            count[2] = 1
        else:
            count[3] = 1
    if sum(count) == 4:
        print("强密码")
    elif sum(count) == 3:
        print("中高密码")
    elif sum(count) == 2:
        print("中低密码")
    else:
        print("弱密码")

运行的截图:
python基础练习题

T2 复制文档并添加行号

题干: “编写一个程序demo.py,要求运行该程序后,生成demo_new.py文件:与demo.py一样,只是在每一行的后面加上该行的行号。要求行号以#开始(例如第1行后面注明#1),并且所有行的#对齐。”

本题我的做法应该不是最好的做法,只能算一般:首先计算得整个文档每行字符最多的一行,求其长度为max_len,然后给每一行都补齐。要注意的是每一行末尾还有一个/n(最后一行除外),所以在追加#+行号的时候需要进行特别处理。

# 编写一个程序demo.py,要求运行该程序后,生成demo_new.py文件
count = "1"
max_len = 0
source = open("demo.py","r",encoding = "UTF-8")
back = open("demo_new.py","w")
s = source.readlines()

for i in range(len(s)):
    if len(s[i]) >= max_len:
        max_len = len(s[i])

for i in range(len(s)):
    temp_s = list(s[i])
    for j in range(max_len - len(s[i])):
        temp_s.insert(-1," ")
    s[i] = temp_s

for line in s:
    line = list(line)
    line.insert(-1,"#")
    line.insert(-1,count)
    back.write("".join(line))
    count = str(int(count) + 1)
source.close()
back.close()

运行后文档的截图:
python基础练习题

T3 MD5

题干: “MD5是一个对文件求哈希值的算法,不论原始信息长度如何,总是计算得到一个固定长度的二进制串。(MD5算法对原文的改动非常敏感,原文哪怕做微小改动,重新计算得到的MD5会有巨大变化。该算法常用于数字签名、文件完整性校验等应用中)。请编写程序:a)要求用户输入一个文件名(包含完整路径),输出该文件名对应文件的MD5值;b)对用户选择的文件做任意微小改动(可*选择如何改动),输出新文件的MD5值.
提示: Python标准库的md5()函数可以用来计算字符串的MD5值,如果是要计算其他类型数据的MD5值,要先将其转换为字符串。”

# MD5题
import os
import hashlib

source = input("请输入文件路径:")
while True:
    f = open(source,'r')
    res = f.read()
    print("md5:",hashlib.md5(res.encode(encoding='UTF-8')).hexdigest())
    print("是否进行编辑?Y/...")
    n = input()
    if n == "Y":
        os.system(source)
    else:
        break

python基础练习题
python基础练习题
python基础练习题

T4 excel操作

前提: “请先将下面表格数据存入excel文件。”

姓名 语文 数学 英语 物理
小张 86 95 86 70
小明 76 90 66 76
小刘 100 96 66 70
小王 96 100 90 66
小郑 96 90 66 100

题干: “编写程序:a)统计每个学生的课程最高分(注明课程名)、课程最低分(注明课程名)和课程平均分,并写入新的excel文件。b) 统计每门课程的最高分(注明学生名字)和最低分(注明学生名字),并写入新的excel文件。”

# 表格题
from openpyxl import load_workbook
import openpyxl

# 获取原表格数据
excel = load_workbook('demo.xlsx')
table = excel['Sheet1']
rows = table.max_row
cols = table.max_column

data_content = []
data = []
for i in range(1,rows + 1):
    for j in range(1,cols + 1):
        data_content.append(table.cell(row = i,column = j).value)
    data.append(data_content)
    data_content = []

# 运算
temp_list = []
temp_data = [["姓名","最高分课程","最高分分数","最低分课程","最低分分数","平均分"]]
for k in range(1,rows):
    temp_list.append(data[k][0])
    temp_list.append(data[0][data[k].index(max(data[k][1:]))])
    temp_list.append(max(data[k][1:]))
    temp_list.append(data[0][data[k].index(min(data[k][1:]))])
    temp_list.append(min(data[k][1:]))
    s = 0
    for m in data[k][1:]:
        s += m
    temp_list.append(s / (len(data[k]) - 1))
    temp_data.append(temp_list)
    temp_list = []

# 写入新的表格
wb = openpyxl.Workbook()
sheet1 = wb.create_sheet(index=0, title="sheet1")
for p in range(1,len(temp_data[1]) + 1):
    for q in range(1,len(temp_data) + 1):
        directionCell = sheet1.cell(row = p, column = q)
        directionCell.value = temp_data[p - 1][q - 1]
wb.save("demo_1.xlsx")

# 获取原数据
data_content_1 = []
data_1 = []
for i in range(1,cols + 1):
    for j in range(1,rows + 1):
        data_content_1.append(table.cell(row = j,column = i).value)
    data_1.append(data_content_1)
    data_content_1 = []

# 运算
temp_list_1 = []
temp_data_1 = [["课程名","最高分","最高分姓名","最低分","最低分姓名"]]
for k in range(1,cols):
    temp_list_1.append(data_1[k][0])
    temp_list_1.append(max(data_1[k][1:]))
    temp_list_1.append(data_1[0][data_1[k].index(max(data_1[k][1:]))])
    temp_list_1.append(min(data_1[k][1:]))
    temp_list_1.append(data_1[0][data_1[k].index(min(data_1[k][1:]))])
    temp_data_1.append(temp_list_1)
    temp_list_1 = []

# 写入新的表格
wb = openpyxl.Workbook()
sheet1 = wb.create_sheet(index=0, title="sheet1")
for p in range(1,len(temp_data_1[1]) + 1):
    for q in range(1,len(temp_data_1) + 1):
        directionCell = sheet1.cell(row = p, column = q)
        directionCell.value = temp_data_1[p - 1][q - 1]
wb.save("demo_2.xlsx")

总结

  • 同步更新至CSDN,仅作实验记录之用。
  • 水平有限,解题有需要改正之处还望指出。
  • 更新中。
相关标签: 学习记录 python