十二道python编程题,有答案(计算文件大小、三级菜单、文件监听、发红包

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

# import os
# import hashlib
# def file\_md5(path):
# filesize = os.path.getsize(path)
# md5 = hashlib.md5()
# with open(path,'rb') as f:
# while filesize >= 4096:
# content = f.read(4096)
# md5.update(content)
# filesize -= 4096
# else:
# content = f.read(filesize)
# if content:
# md5.update(content)
# return md5.hexdigest()
#
# def cmp\_file(path1,path2):
# return file\_md5(path1) == file\_md5(path2)
# path1 = r'D:\s20\day18\视频\4.面向对象整理.mp4'
# path2 = r'D:\s20\day18\视频\tmp.mp4'
# ret = cmp\_file(path1,path2)
# print(ret)

九、打印九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print("%s\*%s=%s"%(i,j,i\*j),end=' ')
    print()


for i in range(1,10):
    for j in range(i,10):
        print("%s\*%s=%s"%(i,j,i\*j),end=' ')
    print()

十、购物车作业
# 创建一个名为‘购买账单的txt文件’
goods = []
money = input('请充值充值金额').strip()
with open('商品信息',encoding='utf-8')as f:
    for i in f:
       xinxi = i.strip().split(' ')
       if xinxi[0] == 'name':
           continue
       else:
           dic = dict([('name',xinxi[0]),('price',xinxi[1])])
           goods.append(dic)
print(goods)
"""
页面显示 序号 + 商品名称 + 商品价格
"""
a = 1
for v in goods:
    print(a,v['name'],v['price'])
    a += 1
print('n 购物车结算')
print('q 或 Q 退出')
shop_dic = {}
sum = 0
a = 1
dic = {}
balance = 0
while 1:
    shuru = input('请输入序号').strip()
    if shuru.isdigit() and (0 < int(shuru) <= len(goods)):
        print(goods[int(shuru)-1]['name'],goods[int(shuru)-1]['price'])
        # 购物车添加商品名称和价格和数量
        shop_dic.setdefault(goods[int(shuru)-1]['name'],{'price':goods[int(shuru)-1]['price'],'amount':0})
        # 增加商品数量
        shop_dic[goods[int(shuru)-1]['name']]['amount'] += 1
    elif shuru == 'n':
        for k,j in shop_dic.items():
            # python学习交流群:489111204
            # 展示购物车商品名称价格数量
            print(a,k,j['price'],j['amount'])
            # 带序号和商品名称的字典
            dic[a] = k
            a += 1
            sum += int(j['price'])\*int(j['amount'])
        if int(money) >= sum:
            print('结算成功')
            balance = int(money)-sum
            for s, b in shop_dic.items():
                print(s, b['price'], b['amount'])
            print('共计消费{}元,剩余金额{}元'.format(sum, balance))
            break
        while int(money) < sum:
            print('余额不足')
            shanchu = input('请输入要删除的商品序号')
            # 用户选择删除购物车里的商品则在购物车里将数量减一
            shop_dic[dic[int(shanchu)]]['amount'] -= 1
            sum = sum - int(shop_dic[dic[int(shanchu)]]['price'])
        else:
            print('结算成功')
            balance = int(money) - sum
            for s, b in shop_dic.items():
                print(s, b['price'], b['amount'])
            print('共计消费{}元,剩余金额{}元'.format(sum, balance))
            break
    elif shuru.upper() == 'Q':
            print('程序退出')
            break
    else:
        print('输入有误请重新输入')
with open('购买账单',encoding='utf-8',mode='w') as f1:
    for s, b in shop_dic.items():
        f1.write('商品名称:{} '.format(s))
        f1.write('单价:{} '.format(b['price']))
        f1.write('数量:{}\n'.format(str(b['amount'])))
    f1.write('共计消费{}元\n'.format(sum))
    f1.write('剩余金额%s元'%(balance))

十一、博客园登录
# 创建一个log和register文件,
import time
dic = {
    1: '请登录',
    2: '请注册',
    3: '文章页面',
    4: '日记页面',
    5: '评论页面',
    6: '收藏页面',
    7: '退出程序',
}
def Home\_display():
    """
 首页展示
 :return:
 """
    print('欢迎来到博客园首页!!!')
    for i in dic:
        print(i,dic[i])
Home_display()
def ster():
    """
 用户注册函数,将用户名,密码写入文件
 :return:
 """
    user_name = input('请填写注册名称').strip()
    pass_word = input('请填写注册密码').strip()
    with open('register','a+',encoding='utf-8') as f1:
        f1.write('{},{}'.format(user_name,pass_word)+'\n')
        print('注册成功,请登录!!!')

def login\_system():
    """
 登录函数
 :return:
 """
    user_name = []
    time = 3
    with open('register', 'r+', encoding='utf-8') as f:
        for i in f:
            user_name.append(i.strip())
        while time >= 1:
            name = input('请输入用户名')
            wd = input('请输入密码')
            l = name + ',' + wd
            if l in user_name:
                print('登录成功')
                chioce(name)
            else:
                time -= 1
                if time == 0:
                    print('登录次数超出限制,请您注册后登录!')
                    break
                print('用户名或密码错误,剩余{}次机会'.format(time))

def eixt\_procedure():
    """
 退出程序
 :return:
 """
    print('程序退出,欢迎下次光临')
    exit()

def log(n,func):
    with open('log','a+',encoding='utf-8') as f2:
        current_time = time.strftime("%Y-%m-%d-%X",time.localtime())
        f2.write('{}:{}调用了{}函数'.format(n,current_time,func) + '\n')

def diary(n):
    """
 日记页面
 :return:
 """
    print('欢迎{}访问日记页面'.format(n))
    log(n, 'diary')
def comment(n):
    """
 评论页面
 :return:
 """
    print('欢迎{}访问评论页面'.format(n))
    log(n, 'comment')
def Collection(n):
    """
 收藏页面
 :return:
 """
    print('欢迎{}访问收藏页面'.format(n))
    log(n, 'Collection')
def Article(n):
    """
 文章页面
 :return:
 """
    print('欢迎{}访问文章页面'.format(n))
    log(n, 'Article')
lis = [login_system,ster,Article,diary,comment,Collection,eixt_procedure,log]
def chioce(a):
    """
 用户选择函数
 :return:
 """
    while 1:
        number = input('请选择页面:').strip()
        if number.isdigit() and 3 <= int(number) <= 6:
            lis[int(number)-1](a)
        # 不可以输入字母
        elif number.isdigit() and (int(number) ==1 or int(number)==7):
            if int(number)==7:
                eixt_procedure()
            lis[int(number) - 1]()
        else:
            print('请输入正确页面选项:')
def chioce1():
    while 1:
        number = input('请选择登录或注册或退出').strip()
        if number.isdigit() and (1 == int(number) or int(number) == 7 or int(number) == 2) :
            if int(number) == 7:
                eixt_procedure()
            else:
                lis[int(number)-1]()
        else:
            print('输入有误请重新输入')
chioce1()

十二、学生选课系统
# 创建course\_file,test.log,vip\_admin 文件
import hashlib
import pickle
import os
import logging

logger = logging.getLogger()
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler('test.log',encoding='utf-8')

# 再创建一个handler,用于输出到控制台
# ch = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
# ch.setFormatter(formatter)
logger.addHandler(fh) #logger对象可以添加多个fh和ch对象
# logger.addHandler(ch)
logger.setLevel(logging.DEBUG)

# python学习交流群:489111204
# 密码加密
def md5\_user(username,password):
    md5 = hashlib.md5(username.encode('utf-8'))
    md5.update(password.encode('utf-8'))
    return md5.hexdigest()
# 读取文件
def read\_file\_name(file_name):
    with open(file_name,'rb') as f:
        while True:
            try:
                res = pickle.load(f)
                if res:
                    yield res
            except EOFError:
                break
# 写文件
def add\_file(file_name,content):
    with open(file_name,'ab') as f:
        pickle.dump(content,f)
# 创建课程类
class Course:
    def \_\_init\_\_(self,name,price,period,teacher):
        self.name = name
        self.price = price
        self.period = period
        self.teacher = teacher

    def \_\_str\_\_(self):
        return format('\t课程:' + self.name,'<13') + format('价钱:' + self.price,'<13') + format('周期:' + self.period,'<13') + format('老师:' + self.teacher,'<13')
class Admin:
    msg = [('创建课程', 'course'),
            ('创建学生和学生账号', 'account\_num'),
            ('查看所有课程', 'view\_courses'),
            ('查看所有学生', 'look\_all\_student'),
            ('查看所有学生的选课情况', 'look\_all\_courses'),
            ('退出程序', 'quit')]

    # 实例化出一个管理员
    def \_\_init\_\_(self,username,password,identify='Admin'):
        self.username = username
        self.password = password
        self.identify = identify

    # 创建课程
    def course(self):
        student_name = input('请输入课程名称')
        student_pricce = input('请输入课程价钱')
        student_period = input('请输入课程周期')
        student_teacher = input('请输入授课老师')
        Course1 = Course(student_name,student_pricce,student_period,student_teacher)
        add_file('course\_file', Course1)
        return True
    # 创建学生和学生账号
    def account\_num(self):
        username = input('请输入要创建的姓名')
        password = input('请输入要创建的密码')
        student1 = Student(username,md5_user(username,password))
        add_file('vip\_admin', student1)
        return True
    # 查看所有课程
    def view\_courses(self):
        ret = read_file_name('course\_file')
        for index,i in enumerate(ret,1):
            print(index,i)   # 因为用\_\_str\_\_所以直接打印对象名直接可以打印他的return值
        return True
    # 查看所有学生
    def look\_all\_student(self):
        ret = read_file_name('vip\_admin')
        for i in ret:
            if i.identify == 'Student':
                print(i.username,i.password)
        return True
    # 查看所有学生的选课情况
    def look\_all\_courses(self):
        ret = read_file_name('vip\_admin')
        for i in ret:
            if i.identify == 'Student':
                print(i.username)
                for j in i.course:
                    print(j)
        return True
    # 退出程序
    def quit(self):
        print('程序退出')
        logger.info(self.username + '——' + self.msg[-1][0])
        exit()
# 实例化一个alex密码123的管理员
# alex = Admin('alex',md5\_user('alex','123'))
# def write\_file\_name():
# with open('vip\_admin','wb') as f:
# pickle.dump(alex,f)
# write\_file\_name()
class Student:
    msg = [('查看所有课程', 'look\_all\_course'),
            ('选择课程', 'choice\_course'),
            ('查看所选课程', 'look\_choice\_course'),
            ('退出程序', 'quit')]
    def \_\_init\_\_(self,username,password,identify = 'Student'):
        self.username = username
        self.password = password
        self.identify = identify
        self.course = []

    def look\_all\_course(self):
        ret = read_file_name('course\_file')
        for index, i in enumerate(ret, 1):
            print(index, i)
        return True
    def choice\_course(self):
        ret = list(read_file_name('course\_file'))
        # print(ret)
        for index, i in enumerate(ret, 1):
            print(index, i)
        while True:
            choice = input('请选择课程>>>:').strip()
            if choice.isdigit() and int(choice) in range(1,len(ret) +1 ):
                print(ret[int(choice)-1].name)
                print([i.name for i in self.course])
                if ret[int(choice)-1].name not in [i.name for i in self.course]:
                    self.course.append(ret[int(choice)-1])
                    with open('vip\_admin','rb') as f1,open('vip\_admin2','wb') as f2:
                        while True:
                            try:
                                res1 = pickle.load(f1)
                                if res1.username == self.username:
                                    res1.course.append(ret[int(choice)-1])
                                    pickle.dump(res1,f2)
                                else:
                                    pickle.dump(res1, f2)
                            except EOFError:break
                    os.remove('vip\_admin')
                    os.rename('vip\_admin2','vip\_admin')
                    logger.info(self.username + '——' + self.msg[1][0]+ str(ret[int(choice)-1])) # ?????
                    break
                else:
                    print('该课程您已选择')
                    break
            else:
                print('输入有误重新输入')
    def look\_choice\_course(self):
        ret = read_file_name('vip\_admin')
        for i in ret:
            if i.username == self.username:
                for j in i.course:
                    print(j)
        return True
    def quit(self):
        logger.info(self.username + '——' + self.msg[-1][0])
        exit()
# 登录验证
def login(username,password):
    ret = read_file_name('vip\_admin')
    for i in ret:
        # print(i.username)
        if i.username == username and i.password == md5_user(username,password):
            return i



如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费**学习**大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。



### 一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

### 二、学习软件



工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。



![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)



### 三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

![](https://img-blog.csdnimg.cn/img_convert/eec417a3d4d977b313558a11d3c13e43.png)



### 四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



![](https://img-blog.csdnimg.cn/img_convert/ec690501ea1dbe2cb209cbf4013c2477.png)  

![](https://img-blog.csdnimg.cn/img_convert/3eaeaa6747419c9d86c72e0d10d0a6a2.png)



### 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。



![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)



### 五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值