Loading

Python思考题

4字符串格式化

'''
请实现一个程序,实现如下需求点:
1.程序开始的时候提示用户输入学生年龄信息 格式如下:
Jack Green ,   21  ;  Mike Mos, 9;
我们假设 用户输入 上面的信息,必定会遵守下面的规则:
  学生信息之间用分号隔开(分号前后可能有不定数量的空格),
  每个学生信息里的 姓名和 年龄之间用 逗号隔开(逗号前后可能有不定数量的空格)

2. 程序随后将输入的学生信息分行显示,格式如下
Jack Green          :21;
Mike Mos            :09;
学生的姓名要求左对齐,宽度为20, 年龄信息右对齐,宽度为2位,不足前面补零
'''
students = input("请输入学生年龄信息:")
# students = 'Jack Green ,   21  ;  Mike Mos, 9;'
student_infos = students.split(';')
for student_info in student_infos:
    if ',' not in student_info:
        continue
    name, age = student_info.split(',')
    name = str(name).strip()
    age = str(age).strip()
    age = int(age)
    print('%-20s:%02d' % (name, age))

5循环

'''
1.
下面的log变量记录了云服务器上
当天上传的文件信息
其中第一列是文件名,第二列是文件大小

请编写一个程序,统计出不同类型的
文件的大小总和
比如:
jpeg
9988999
json
324324
png
2423233
----------------------------------
'''
log = '''
f20180111014341/i_51a7hC3W.jpeg 169472  FrITJxleSP7wUD-MWw-phL_KP6Eu    15156063244230469   image/jpeg  0   
f20180111014341/j_R0Hpl4EG.json 1036    ForGzwzV3e-uR3_UzvppJs1VgfQG    15156064773253144   application/json    0   
f20180111020739/i_0TDKs0rD.jpeg 169472  FrITJxleSP7wUD-MWw-phL_KP6Eu    15156076847077556   image/jpeg  0   
f20180111020739/j_JFO6xiir.json 1040    FmUhTchdLOd7LBoE8OXzPLDKcW60    15156077904192983   application/json    0   
f20180111090619/i_1BwNksbL.jpg  49634   FtXBGmipcDha-67WQgGQR5shEBu2    15156329458714950   image/jpeg  0   
f20180111090619/i_3BKlsRaZ.jpg  30152   FoWfMSuqz4TEQl5FT-FY5wqu5NGf    15156330575626044   image/jpeg  0   
f20180111090619/i_5XboXSKh.jpg  40238   Fl84WaBWThHovIBsQaNFoIaPZcWh    15156329453409855   image/jpeg  0   
f20180111090619/i_6DiYSBKp.jpg  74017   FrYG3icChRmFGnWQK6rYxa88KuQI    15156329461803290   image/jpeg  0   
f20180111090619/i_76zaF2IM.jpg  38437   Fui8g5OrJh0GQqZzT9wtepfq99lJ    15156334738356648   image/jpeg  0   
f20180111090619/i_B6TFYjks.jpg  37953   FleWqlK2W1ZmEgAatAEcm1gpR0kC    15156329464034474   image/jpeg  0   
f20180111090619/i_N9eITqj3.jpg  38437   Fui8g5OrJh0GQqZzT9wtepfq99lJ    15156330419595764   image/jpeg  0   
f20180111090619/i_QTSNWmA6.jpg  37953   FleWqlK2W1ZmEgAatAEcm1gpR0kC    15156333104224056   image/jpeg  0   
f20180111090619/i_XdHcAfh1.jpg  56479   FjLQIQ3GxSEHDfu6tRcMylK1MZ05    15156334227270309   image/jpeg  0   
f20180111090619/i_Xyy723MU.jpg  50076   FsfZpQzqu084RUw5NPYW9-Yfam_R    15156334229987458   image/jpeg  0   
f20180111090619/i_d8Go0EOv.jpg  30152   FoWfMSuqz4TEQl5FT-FY5wqu5NGf    15156334736228515   image/jpeg  0   
f20180111090619/i_diuHmX53.jpg  40591   FuTx1pw4idbKnV5MSvNGxCA5L470    15156333878320713   image/jpeg  0   
f20180111090619/i_qQKzheSH.jpg  55858   Fj0A3i8V7fzzOiPQFL79ao15hkN9    15156329456666591   image/jpeg  0   
f20180111090619/i_rHL5SYk8.jpg  40238   Fl84WaBWThHovIBsQaNFoIaPZcWh    15156336509742181   image/jpeg  0   
f20180111090619/i_xZmQxUbz.jpg  40238   Fl84WaBWThHovIBsQaNFoIaPZcWh    15156333240603466   image/jpeg  0   
f20180111090619/i_zBDNgXDv.jpeg 73616   FlgNwq8lypgsxrWs_ksrS_x47SQV    15156334232887875   image/jpeg  0   
f20180111090619/j_4mxbEiVh.json 2990    Fpq-3yl3Yr1CadNrJVSDnpeRhQtT    15156331445226898   application/json    0   
f20180111090619/j_i1K74768.json 3042    Fl5PpDw1TsZXMuhoq1RUrOeGZ6br    15156335067090003   application/json    0   
f20180111095839/i_Q7KMKeda.png  518522  Fl-yB1_ruL2uxZN9k7DjB62h9dYH    15156359599713253   image/png   0   
f20180111095839/j_5DpqHolV.json 184 FoYvi7cmSrzuVjUgCRzW5kU95SVo    15156359719719064   application/json    0   
f20180111100442/i_No8kToIV.jpg  48975   Fu1cw3f--5Vpz9kLGeJfvljhCtyZ    15156364349642377   image/jpeg  0   
f20180111100442/i_P1bkvSeg.jpg  68200   FvYe8vi46TjUKhEy_UwDqLhO6ZsW    15156363800690634   image/jpeg  0   
f20180111100442/i_T1AulKcD.jpg  52641   Fj2YzvdC1n_1sF93ZZgrhF3OzOeY    15156364021186365   image/jpeg  0   
f20180111100442/i_X8d8BN07.jpg  50770   FivwidMiHbogw77lqgkIKrgmF3eA    15156363969737156   image/jpeg  0   
f20180111100442/i_g0wtOsCX.jpg  76656   Fmtixx0mP9CAUTNosjLuYQHL6k0P    15156363448222155   image/jpeg  0   
f20180111100442/i_h5OT9324.jpg  72672   FvbIqPLTh2cQHTIBv2akUfahZa_Z    15156364401354652   image/jpeg  0   
f20180111100442/i_he8iLYI6.jpg  49399   FjeJvwjwhU-hKZsq66UoBg9_tEJs    15156363907932480   image/jpeg  0   
f20180111100442/i_kg29t7Pp.jpg  76293   FuYj__sSeEN7AsXMbxO24Z8Suh8d    15156364156384686   image/jpeg  0   
f20180111100442/i_oz1YoBI1.jpg  75620   FkY3xsUMwOI01zgoH1iXXgiQeq6I    15156364089112904   image/jpeg  0   
f20180111100442/i_xrOT98on.jpg  50021   Fql7ookM1Rc6V7VairKAfnKe-o9w    15156363856357316   image/jpeg  0   
f20180111135114/i_Zqt8Tmoe.png  161629  FlELw59_mV3VqDBLyu1BKN4fIWnx    15156500155209863   image/png   0   
f20180111135114/j_uhHoMXKq.json 159 FrypljwAr2LgoLAePBNTUYTUAgDt    15156500200488238   application/json    0   
f20180111142119/i_s83iZ2GR.png  92278   Fns8tdh3JCkRmfE_COYEu4o8w03E    15156517082371259   image/png   0   
f20180111142119/j_0g45JRth.json 159 Fq1rFwdRguYRXrp61nGZ5TsUG1V-    15156517143375596   application/json    0   
f20180111144306/i_yE5TC84E.png  139230  Fjf61ymabEnEvnr5ZMHFjXGCrYlP    15156530038824150   image/png   0   
f20180111144306/j_OF4WVtSH.json 159 FqwkKcxfo8jd0jFUyuH4X2CrnE9q    15156530083419530   application/json    0   
f20180111150230/i_KtnER4g3.png  120044  FuwOWdrqzcr2-UScem-LzEMgMezs    15156541734892258   image/png   0   
f20180111150230/j_xMSUEejY.json 158 FjJr_4deMqFphGaptm-2Pa6wwRP2    15156541771989216   application/json    0   
f20180111151741/i_JuSWztB3.jpg  92506   FrIjRevHSi6xv4-NQa2wrHu5a1zQ    15156550875370965   image/jpeg  0   
f20180111153550/i_9wWzVenl.gif  769872  FvslKY9JUaCQm-lu02E34tvAP_oG    15156561674621628   image/gif   0   
'''

jpeg = []
png = []
json = []
logs = log.split('\n')
for i in logs:
    if '_' not in i:
        continue
    if 'image/jpeg' in i:
        size = i.split('.jpeg')[-1].split('.jpg')[-1].strip().split(' ')[0]
        jpeg.append(int(size))
    elif 'image/png' in i:
        size = i.split('.png')[-1].strip().split(' ')[0]
        png.append(int(size))
    elif 'application/json' in i:
        size = i.split('.json')[-1].strip().split(' ')[0]
        json.append(int(size))

print(f'jpeg 类型总大小:{sum(jpeg)}\npng 类型总大小:{sum(png)}\njson 类型总大小:{sum(json)}')

05文件的读写+字典与json

思考题1

'''
现有一个数据库记录文件(见附件0005_1.txt),保存了学生课程签到的数据库记录。 内容格式如下 ,

('2017-03-13 11:50:09', 271, 131),
('2017-03-14 10:52:19', 273, 131),
('2017-03-13 11:50:19', 271, 126),
每一行记录保存了学生的一次签到信息。

每一次签到信息的记录,分为三个部分, 分别是签到时间、签到课程的id号、签到学生的id号

要求大家实现下面的函数。其中参数fileName 为 数据库记录文件路径, 输出结果是将数据库记录文件中的学生签到信息保存在一个字典对象中,并作为返回值返回。

def putInfoToDict(fileName):

要求返回的字典对象的格式是这样的:

key 是各个学生的id号, value是 该学生的签到信息

   其中value,里面保存着该学生所有签到的信息

       其中每个签到的信息是字典对象,有两个元素: key 是lessonid的 记录课程id,key是checkintime的 记录签到时间

比如,对于上面的示例中的3条记录,相应的返回结果如下:

{
    131: [
        {'lessonid': 271,'checkintime':'2017-03-13 11:50:09'},
        {'lessonid': 273,'checkintime':'2017-03-14 10:52:19'},
    ],


    126: [
        {'lessonid': 271,'checkintime':'2017-03-13 11:50:19'},
    ],

}
'''
import json

student_info = {}


def putInfoToDict(fileName):
    with open(fileName, 'r') as f:
        lines = f.read().replace(',', '').split('\n')
    for line in lines:
        checkintime = line.split("' ")[0].replace("('", "")
        lessonid = line.split(" ")[2].strip()
        studentid = line.split(" ")[3].strip().replace(')', '').replace(';', '')
        # print(studentid)
        if studentid in student_info.keys():
            student_info[studentid].append({'lessonid': lessonid, 'checkintime': checkintime})
        else:
            student_info[studentid] = [{'lessonid': lessonid, 'checkintime': checkintime}]


fileName = '0005_1.txt'
putInfoToDict(fileName)
print(json.dumps(student_info, indent=4))

思考题2

'''
现有文件1(如下,请保存到文件file1.txt中), 记录了公司员工的薪资,其内容格式如下

name: Jack   ;    salary:  12000
 name :Mike ; salary:  12300
name: Luk ;   salary:  10030
  name :Tim ;  salary:   9000
name: John ;    salary:  12000
name: Lisa ;    salary:   11000

每个员工一行,记录了员工的姓名和薪资,
每行记录 原始文件中并不对齐,中间有或多或少的空格

现要求实现一个python程序,计算出所有员工的税后工资(薪资的90%)和扣税明细,
以如下格式存入新的文件 file2.txt中,如下所示

name: Jack   ;    salary:  12000 ;  tax: 1200 ; income:  10800
name: Mike   ;    salary:  12300 ;  tax: 1230 ; income:  11070
name: Luk    ;    salary:  10030 ;  tax: 1003 ; income:   9027
name: Tim    ;    salary:   9000 ;  tax:  900 ; income:   8100
name: John   ;    salary:  12000 ;  tax: 1200 ; income:  10800
name: Lisa   ;    salary:  11000 ;  tax: 1100 ; income:   9900

要求像上面一样的对齐
tax 表示扣税金额和 income表示实际收入。注意扣税金额和 实际收入要取整数
'''
fileName = 'file1.txt'
with open(fileName, 'r') as f:
    lines = f.read().splitlines()
for line in lines:
    name = line.split(';')[0].strip().replace(' ', '')[5:]
    salary = line.split(';')[1].strip().replace(' ', '')[7:]
    tax = int(salary) * 0.1
    tax = int(tax)
    income = int(salary) - tax
    print(f'name: {name:7};    salary: {salary:>7} ;  tax:{tax:>5} ; income:   {income:>7}')

06习题

思考题1

'''
统计10000以内有多少个含有9的数.
'''
sum = 0
for i in range(10000):
    if '9' in str(i):
        sum += 1
print(f'10000以内有{sum}个含有9的数')

07模块与包+yaml文件操作

思考题1

'''
写一个猜数字游戏,需求如下:
随机生成一个0-100之间的数字,让用户猜,如果用户猜对了,提示:回答正确,游戏结束.
如果猜错了给出对应的提示(您输入的值过大,您输入的值过小),最多允许猜7次.
'''
import random

random_num = random.randrange(0, 100)
for i in range(7):
    input_num = input("请输入0-100之间的数字:")
    if int(input_num) == random_num:
        print(f"恭喜您,猜对了!数值为{random_num}")
        break
    elif int(input_num) > random_num:
        print("您输入的值过大!")
    elif int(input_num) < random_num:
        print("您输入的值过小!")
else:
    print("对不起,您已超过次数!")

08pycharm使用技巧+requests爬虫

思考题1

https://www.cnblogs.com/greensunit/p/15433582.html

10面向对象进阶+面向对象高级

'''
要求大家用面向对象的设计编写一个python程序,实现一个文字游戏系统。

动物园里面有10个房间,房间号从1 到 10。

每个房间里面可能是体重200斤的老虎或者体重100斤的羊。
游戏开始后,系统随机在10个房间中放入老虎或者羊。

然后随机给出房间号,要求游戏者选择敲门还是喂食。

如果选择喂食:
喂老虎应该输入单词 meat,喂羊应该输入单词 grass
喂对了,体重加10斤。 喂错了,体重减少10斤

如果选择敲门:
敲房间的门,里面的动物会叫,老虎叫会显示 ‘Wow !!’,羊叫会显示 ‘mie~~’。 动物每叫一次体重减5斤。


游戏者强记每个房间的动物是什么,以便不需要敲门就可以喂正确的食物。
游戏3分钟结束后,显示每个房间的动物和它们的体重。


实现过程中,有什么问题,请通过课堂上讲解的调试方法,尽量自己发现错误原因。
'''
import random


class Game:
    def __init__(self):
        animal = {"老虎": 200, "羊": 100}
        self.room = {}
        for i in range(1, 11):
            self.room[i] = {}
        for i in self.room.keys():
            a = random.sample(animal.keys(), 1)[0]
            self.room[i] = {a: animal[a]}
        self.b = random.sample(self.room.keys(), 1)[0]
        print(self.room)
        print(f"房号:{self.b}")
        self.num = input("1.喂食\n2.敲门\n请输入序号选择:")
        if self.num == "1":
            flag = input("喂老虎输入单词 meat\n喂羊输入单词 grass\n请输入序号选择:")
            if flag == "meat":
                self.meat()
        elif self.num == "2":
            print("敲门")
            self.door()

    def meat(self):
        if '老虎' in self.room[self.b].keys():
            self.room[self.b]['老虎'] = int(self.room[self.b]['老虎']) + 10
            print(self.room[self.b]['老虎'])
        else:
            self.room[self.b]['羊'] = int(self.room[self.b]['羊']) - 10
            print(self.room[self.b]['羊'])

    def grass(self):
        if '羊' in self.room[self.b].keys():
            self.room[self.b]['羊'] = int(self.room[self.b]['羊']) + 10
            print(self.room[self.b]['羊'])
        else:
            self.room[self.b]['老虎'] = int(self.room[self.b]['老虎']) - 10
            print(self.room[self.b]['老虎'])

    def door(self):
        for key, value in self.room[self.b].items():
            if key == '老虎':
                print("Wow !!")
                self.room[self.b]['老虎'] = int(self.room[self.b]['老虎']) - 5
            else:
                print("mie~~")
                self.room[self.b]['羊'] = int(self.room[self.b]['羊']) - 5


if __name__ == '__main__':
    Game()
posted @ 2021-10-20 17:35  GreenSunIT-绿阳  阅读(430)  评论(0)    收藏  举报