python实训day1

1、

python 复制代码
dd2 = dict(id=101, name='小明', age=23, score=[90, 67, 98])
print(dd2)
print()
print('dd2.id ->', dd2.get('id'))  # 101
print('dd2.age ->', dd2.get('age'))  # 23
print()
"""
  字典数据由三部分组成:
  1、键集
  2、值集;
  3、元素集;就是一个字典中的多个键值对的集合  
"""
print('键值对数量 ->', dd2.__len__())
print()
# 键集
print("*** 键集 ***")
keys = dd2.keys()
print(keys)
print("*** 值集 ***")
# 值集
values = dd2.values()
print(values)
# 元素集;  一个元素就是一个键值对,就是一个元组
print("*** 元素集 ***")
for d in dd2.items():
    print(d)
python 复制代码
D:\pyproject\Project1\venv\Scripts\python.exe D:\pyproject\Project1\day1\test1.py 
{'id': 101, 'name': '小明', 'age': 23, 'score': [90, 67, 98]}

dd2.id -> 101
dd2.age -> 23

键值对数量 -> 4

*** 键集 ***
dict_keys(['id', 'name', 'age', 'score'])
*** 值集 ***
dict_values([101, '小明', 23, [90, 67, 98]])
*** 元素集 ***
('id', 101)
('name', '小明')
('age', 23)
('score', [90, 67, 98])

Process finished with exit code 0

2、

python 复制代码
print()
# 创建一个字典
dd1 = {"id": 1024, "name": "王小明", "age": 21,
       "score": [77, 88, 98, 45]}
# 整体输出
print(dd1)
print()
# 输出所有的键
keys = dd1.keys()
print(keys)
print()
# 输出字典中的所有值
values = dd1.values()
print(values)
print()
# 输出所有的键值对
for d in dd1.items():
    print(d)

运行结果:

python 复制代码
D:\pyproject\Project1\venv\Scripts\python.exe D:\pyproject\Project1\day1\test1.py 

{'id': 1024, 'name': '王小明', 'age': 21, 'score': [77, 88, 98, 45]}

dict_keys(['id', 'name', 'age', 'score'])

dict_values([1024, '王小明', 21, [77, 88, 98, 45]])

('id', 1024)
('name', '王小明')
('age', 21)
('score', [77, 88, 98, 45])

Process finished with exit code 0

3、

python 复制代码
dd1={}
print('type(',dd1,')->',type(dd1),sep='')
aa=[]
print('type(',aa,')->',type(aa),sep='')
dd1['id']=1024
dd1['name']='张'
dd1['age']=25
dd1['score']=[67,78,58,25,64]
print(dd1)

运行结果:

python 复制代码
D:\pyproject\Project1\venv\Scripts\python.exe D:\pyproject\Project1\day1\test1.py 
type({})-><class 'dict'>
type([])-><class 'list'>
{'id': 1024, 'name': '张', 'age': 25, 'score': [67, 78, 58, 25, 64]}

Process finished with exit code 0

4、

python 复制代码
import json
class Base(object):
    def __init__(self, id, name, age):  # 相当于Java中的构造器
        self.id = id
        self.name = name
        self.age = age
    def hello(self):  # 类中的一个普通实例方法,用类对象调用
        print("*** hello,Base ***")
    def __str__(self):  # 相当于Java中的toString方法,在此重写对象
        return json.dumps(self, indent=4, ensure_ascii=False,
                          default=lambda o: o.__dict__)
b1 = Base(1112, "jack", 23)
print(b1)
print(b1.id)
print(b1.name)
print(b1.age)
print()
class MyUtilClass(object):
    def __str__(self):  # 相当于Java中的toString方法,在此重写对象
        return json.dumps(self, indent=4, ensure_ascii=False,
                          default=lambda o: o.__dict__)
class Person(MyUtilClass):
    pass
p = Person()  # 此处调用默认的无参构造器创建Person对象
p.__setattr__("name", "张小三")
p.__setattr__("age", 22)
p.__setattr__("address", '中国 山东 泰安')
print(p)
print('name ->', p.name)
print('age ->', p.age)
print('address ->', p.address)

运行结果:

python 复制代码
D:\pyproject\Project1\venv\Scripts\python.exe D:\pyproject\Project1\day1\test2.py 
{
    "id": 1112,
    "name": "jack",
    "age": 23
}
1112
jack
23

{
    "name": "张小三",
    "age": 22,
    "address": "中国 山东 泰安"
}
name -> 张小三
age -> 22
address -> 中国 山东 泰安

Process finished with exit code 0

5、

python 复制代码
class Student(object):
    def __init__(self, id=None, name=None, age=None):
        self.id = id
        self.name = name
        self.age = age

s2 = Student()  # 不提供参数,使用默认值
s2.id = "1023"
s2.name = "张三"
s2.age = "20"

print(s2.id)
print(s2.name)
print(s2.age)

运行结果:

python 复制代码
1023
张三
20

6、

python 复制代码
import json
filename="../files/student.json";
print()
print('filename -> ', '\'', filename, '\'', sep='')
print()
with open(filename,'r',encoding='utf-8')as ff:
    print("将文件内容以字符串形式输出")
    rr=ff.read()
    print(rr)
    print()
    print("将文件内容处理为一个字典对象")
    dic=json.loads(rr)
    print(dic)
    print(type(dic))
    print()
    js=json.dumps(dic,ensure_ascii=False)
    print(js)
    print(type(js))

运行结果:

python 复制代码
将文件内容以字符串形式输出
{
  "id": 1024,
  "name": "王小明",
  "age": 21,
  "score": [
    77, 88, 98
  ]
}

将文件内容处理为一个字典对象
{'id': 1024, 'name': '王小明', 'age': 21, 'score': [77, 88, 98]}
<class 'dict'>

{"id": 1024, "name": "王小明", "age": 21, "score": [77, 88, 98]}
<class 'str'>

7、用最简洁的方法生成一个一维整型数组,共计17个元素,每个元素都在10-150之间。要求升序排列,降序排列,统计数组的最大值,最小值,平均值。

法一:

python 复制代码
import random

a= [random.randint(10, 150) for i in range(7)]

# 升序排列数组
arr_asc = sorted(a)
print(arr_asc)

# 降序排列数组
arr_desc = sorted(a, reverse=True)
print(arr_desc)

# 统计数组最大值、最小值、平均值
max_val = max(a)
min_val = min(a)
avg_val = sum(a) / len(a)

print("最大值:", max_val)
print("最小值:", min_val)
print("平均值:", avg_val)

运行结果:

python 复制代码
[20, 30, 44, 77, 134, 145, 148]
[148, 145, 134, 77, 44, 30, 20]
最大值: 148
最小值: 20
平均值: 85.42857142857143

法二:

python 复制代码
from random import randint
nn = 7
arr = [randint(10, 150) for k in range(nn)]
print("*** 原始数组 ***")
for elem in arr:
    print('->', elem)
print("*** 升序 ***")
arr.sort()
for elem in arr:
    print('->', elem)
print("*** 降序 ***")
arr.sort(key=lambda e: -e)
total = 0
for elem in arr:
    total += elem
    print('->', elem)
print("*** 最值 ***")
print('max ->', arr[0])
print('min ->', arr[-1])
print('average ->', total / nn)

运行结果:

python 复制代码
*** 原始数组 ***
-> 61
-> 29
-> 65
-> 62
-> 111
-> 33
-> 133
*** 升序 ***
-> 29
-> 33
-> 61
-> 62
-> 65
-> 111
-> 133
*** 降序 ***
-> 133
-> 111
-> 65
-> 62
-> 61
-> 33
-> 29
*** 最值 ***
max -> 133
min -> 29
average -> 70.57142857142857

8、从一个名为dept.txt的文件中读取数据,将这些数据存储在一个Dept类的实例中,并将所有实例存储在一个名为depts的列表中。

python 复制代码
from ming import BaseClass
class Dept(BaseClass):
    pass
depts = []
names = ['deptno', "dname", 'loc']
nn = names.__len__()
with open("../files/dept.txt", 'r', encoding="UTF-8") as ff:
    rr = ff.read()
    rows = rr.split("\n")
    for row in rows:
        cols = row.split(",")
        dept = Dept()
        for i in range(nn):
            dept.__setattr__(names[i], cols[i])
        depts.append(dept)
for dept in depts:
    print(dept)

ming.py

python 复制代码
import json
import random
import time
'''
  生成一个随机整数,如果无参,则返回100以内的整数
  如果传递了参数,则返回0-参数间的随机整数
'''
def rnd(value=100):
    return int(random.random() * value)
'''
  输入两个整数参数,返回两数之间的随机值
'''
def rd(a=0, b=100):
    return int(a + random.random() * (b - a))
'''
  一个通用的父类,主要是在输出类对象时,以JSON的方式输出
'''
def tojson(dic):
    return json.dumps(dic, indent=4, ensure_ascii=False,
                      default=lambda o: o.__dict__)
class BaseClass(object):
    def __str__(self):
        return json.dumps(self, indent=4,
                          ensure_ascii=False,
                          default=lambda obj: obj.__dict__)
'''
  以 10 进制表示的RGB 颜色
'''
def rgb():
    return 'rgb(' + str(random.randint(0, 255)) + "," + str(
        random.randint(0, 255)) + ',' + str(
        random.randint(0, 255)) + ")"
'''
  16 进制颜色
'''
def hexcolor():
    cstr = 'ABCDEF01234567890'
    rr = '#'
    for i in range(6):
        rr += cstr[rnd(len(cstr))]
    return rr
'''
  一个用于统计函数运行时间的装饰器类
'''
class MyTimer:
    def __init__(self, func):
        self.func = func
    def __call__(self, *args, **kwargs):
        begin = time.time()
        val = self.func(*args, **kwargs)
        end = time.time()
        print(f'用时 : {end - begin} 秒!')
        if val is not None:
            print('->', val)
'''
  一个用于带异常处理函数的装饰器类
'''
class ExpTry:
    def __init__(self, func):
        self.func = func
    def __call__(self, *args, **kwargs):
        try:
            ret = self.func(*args, **kwargs)
            if ret is not None:
                print('返回 ->', ret)
        except Exception as err:
            print('出错信息: ', err)
        return
'''
  一个用于统计时间的装饰器类
'''
class TimeIt:
    def __init__(self, prefix, postfix):
        self.prefix = prefix
        self.postfix = postfix
    def __call__(self, func):
        def wrapper(*args, **kwargs):
            start = time.time()
            val = func(*args, **kwargs)
            if val is not None:
                print('返回 ->', val)
            end = time.time()
            print(
                f'{self.prefix} : {end - start} {self.postfix}!')
        return wrapper

运行结果:

python 复制代码
{
    "deptno": " 10",
    "dname": "ACCOUNTING",
    "loc": "NEW YORK"
}
{
    "deptno": " 20",
    "dname": "RESEARCH",
    "loc": "DALLAS"
}
{
    "deptno": " 30",
    "dname": "SALES",
    "loc": "CHICAGO"
}
{
    "deptno": " 40",
    "dname": "OPERATIONS",
    "loc": "BOSTON"
}

9、

python 复制代码
from pyecharts.faker import Faker
# 产生七种动物
animals = Faker.animal
print(type(animals))
for animal in animals:
    print('->', animal)
print('* * * * * * * * * * * * * * * * * * * * * * * * *')
# 产生七种水果
fruits = Faker.fruits
for fruit in fruits:
    print('->', fruit)
print('* * * * * * * * * * * * * * * * * * * * * * * * *')
# 产生七种饮料
drinks = Faker.drinks;
for drink in drinks:
    print('->', drink)
print('* * * * * * * * * * * * * * * * * * * * * * * * *')
# 产生七种0-150之间的随机整数
values = Faker.values()
for value in values:
    print('->', value)
print('* * * * * * * * * * * * * * * * * * * * * * * * *')
# 产生七种服装
clothes = Faker.clothes
for clothe in clothes:
    print('->', clothe)

运行结果:

python 复制代码
-> 河马
-> 蟒蛇
-> 老虎
-> 大象
-> 兔子
-> 熊猫
-> 狮子
* * * * * * * * * * * * * * * * * * * * * * * * *
-> 草莓
-> 芒果
-> 葡萄
-> 雪梨
-> 西瓜
-> 柠檬
-> 车厘子
* * * * * * * * * * * * * * * * * * * * * * * * *
-> 可乐
-> 雪碧
-> 橙汁
-> 绿茶
-> 奶茶
-> 百威
-> 青岛
* * * * * * * * * * * * * * * * * * * * * * * * *
-> 33
-> 58
-> 39
-> 68
-> 89
-> 75
-> 23
* * * * * * * * * * * * * * * * * * * * * * * * *
-> 衬衫
-> 毛衣
-> 领带
-> 裤子
-> 风衣
-> 高跟鞋
-> 袜子

10、

python 复制代码
from pyecharts.faker import Faker
# 产生16进制的随机颜色
for i in range(5):
    print('->', Faker.rand_color())
print()
# 产生一周的日期
weeks = Faker.week
print(weeks)
print()
# 产生七个国家
cc = Faker.country
for c in cc:
    print('->', c)
print()
# 产生七种名车
cars = Faker.cars
for car in cars:
    print('->', car)
print()
# 产生七种名犬
dogs = Faker.dogs
for dog in dogs:
    print('->', dog)
print()
# 产生 12 月份
months = Faker.months
print('->', months)
print()
# 产生七种手机品牌
phones = Faker.phones
print(phones)
print()
# 产生七个省或直辖市
provinces = Faker.provinces
print('->', provinces)

运行结果:

python 复制代码
-> #bda29a
-> #c23531
-> #d48265
-> #1d953f
-> #f05b72

['周一', '周二', '周三', '周四', '周五', '周六', '周日']

-> China
-> Canada
-> Brazil
-> Russia
-> United States
-> Africa
-> Germany

-> 宝马
-> 法拉利
-> 奔驰
-> 奥迪
-> 大众
-> 丰田
-> 特斯拉

-> 哈士奇
-> 萨摩耶
-> 泰迪
-> 金毛
-> 牧羊犬
-> 吉娃娃
-> 柯基

-> ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']

['小米', '三星', '华为', '苹果', '魅族', 'VIVO', 'OPPO']

-> ['广东省', '北京市', '上海市', '江西省', '湖南省', '浙江省', '江苏省']
相关推荐
爱写代码的小朋友10 分钟前
Python的几个高级特性
python
Eric.Lee202115 分钟前
数据集-目标检测系列- 螃蟹 检测数据集 crab >> DataBall
python·深度学习·算法·目标检测·计算机视觉·数据集·螃蟹检测
一丝晨光21 分钟前
C++、Ruby和JavaScript
java·开发语言·javascript·c++·python·c·ruby
sp_wxf44 分钟前
Lambda表达式
开发语言·python
蜡笔小新星1 小时前
Python Kivy库学习路线
开发语言·网络·经验分享·python·学习
篝火悟者1 小时前
问题-python-运行报错-SyntaxError: Non-UTF-8 code starting with ‘\xd5‘ in file 汉字编码问题
开发语言·python
hakesashou2 小时前
python如何比较字符串
linux·开发语言·python
_.Switch2 小时前
Python机器学习模型的部署与维护:版本管理、监控与更新策略
开发语言·人工智能·python·算法·机器学习
Hoper.J3 小时前
PyTorch 模型保存与加载的三种常用方式
人工智能·pytorch·python
弱冠少年3 小时前
websockets库使用(基于Python)
开发语言·python·numpy