Python学习1.0基础知识教学

一、两种使用方法

控制台

在这里插入图片描述

软件(如pycharm)

在这里插入图片描述

二、基础语法

1.变量

变量前加上 global关键字,会变为全局变量

x = “name” (直接定义即可,约定俗成:驼峰 newUserName)
MyJob = "teacher"
player1 = “”姚 明“”
player1_score = 41

2.数据类型

整数,浮点数,布尔(true,false),字符串(0,none,空字符串转换为布尔值后为false)

int(9.9)             9
round(9.9)           10
round(3.141564,2)    3.14

3.算数运算符

1. + - * /  
2. //(除法取整符号)  print(5 / 2)     2.5
                    print(5 // 2)     2
3. %(取模运算 eg:a%b = a-(a//b)*b),正数的取模和取余数一样  print(7 % 4)      3
                                                          print(-7 % 4)     1
4. 字符串支持+ *运算,不支持- /运算 print("hello " + "koko")             hello koko
                                  print("ko" * 10)                    kokokokokokokokokoko
                                  print("您的账户余额为:" + str(500))  您的账户余额为:500
5. 书写运算符两边要有空格

4.赋值运算符

                                         ko = 0
1. +=  -=          (加法,减法赋值运算符)  print(ko += 1010
2. *=  /=   //=   (乘法,除法,取整除赋值运算符)
3. %=  **=        (取模,幂赋值运算符)

5.比较运算符

== 等于  !=不等于 >大于 <小于  >=大于等于  <=小于等于(输出true  false)

6.逻辑运算符

andornot 非(走完一部分逻辑成立就不会走剩下的部分,直接输出已走完部分的结果)
a=10
a>20 and a<90   false
a>20 or a<90    true
not a>20        true
not a<20        false

7.条件判断 if elif else

python里面没有{}的表示形式,表达包含关系需缩进4个空格(pycharm按Tab键即可)

score = 89
if score >= 68 and score <= 100:
    # pass(可作为占位符)
    if score < 78 :
        print("成绩合格")
    elif score >= 98 :
        print("成绩优秀")
    else:
        print("成绩良好")
else:
    print("成绩不合格")

8.循环 for 循环 while

打印9 9乘法表
for i in range(1,10):         ----- range返回10前从1开始的数字1-9
    for j in range(1,i+1):    ----- 先执行的放内层
        print(str(i) + "*" + str(j) + "=" + str(i*j), end= " ")  
                                               ----- end为换行符,放入空字符串,打印的数据放进同一行
    print()                   ----- 换行

break continue

lap = 0
total = 0          ----- 一定写在外面,写在循环里会被多次循环覆盖
while lap < 8:
    lap += 1
    if lap % 2 == 0:
        continue   ----- 跳出第二圈的循环,直接执行第三圈
    total += lap
    print("跑完了第" + str(lap) + "圈")
    if lap == 5:
        break      ----- 第五圈循环结束直接跳出,其余循环不执行
print("共计跑完了" + str(total) + "圈")

在这里插入图片描述

小节练习:智能密码锁

密码锁逻辑:一大段密码中只要包含真实密码就能打开大门
123456
4567865451234564654

password = '123456'
failed_time = 0
while True:       -----死循环
    pwd = input("请设置您的密码:\n")  ----- \n为换行符
    if  not pwd:
        break
    confirm_pwd = input("请再次输入您的密码:\n")
    if pwd == confirm_pwd:
        password = pwd
        break
    print("您两次输入的密码不一致,请重新输入")
print("您的初始密码已设置为",password)
print("进入开锁程序")
while True:
    input_pwd = input("请输入您的密码:\n")
    if password in input_pwd:     ----- 关键:查看password是否在input_pwd里
        print("开锁成功")
        break
    else:
        failed_time += 1
        if failed_time >= 3:
            print("输入错误3次以上,密码已锁定")
            break
        print("您输入的密码有误,请重新输入")

三、数据结构

1.数字格式化

占位符写法作用
%d整数占位符(取整无四舍五入)
%f浮点数占位符
%.f指定精度的浮点数占位符 %.2f %.4f(不足指定精度会往后面补0)
%s字符串占位符(什么都能传,整数,浮点数等等)
%%特殊符号,输出%
str.format()数字格式化函数,通过 : 来代替 %
lap = 3.1
print("%d(整数占位符会取整)" % lap)    ----- 此处执行为3
print("%f(浮点数占位符默认小数点后6位,不足会补0,超了会截掉)" % 3.1415)     ----- 此处执行为3.141500
print("%.2f(传整数也会自动转为浮点数)" % 3.141592)  ----- 此处执行为3.14

str.format() 格式化数字的多种方法
在这里插入图片描述

s = "{0}的国家今年总收入金币{1:,}枚,这{1:}枚全部被{0}挥霍掉了".format("苏丹",1534312313)
print(s)
-----苏丹的国家今年总收入金币1,534,312,313枚,这1534312313枚全部被苏丹挥霍掉了

2.字符串格式化

格式化教程

格式化方法作用
%s字符串占位符(什么都能传,整数,浮点数等等)
str.format()字符串格式化函数,通过 {} 来代替 %

%s字符串占位符的使用

print("看到这里的都%s" % "暴富")  -----只想发财的作者

str.format() 格式化字符串的多种方法

  1. 方法一:在format里直接设置参数
print("姓名:{name},年龄:{age}".format(name="流氓", age=18))
  1. 方法二:通过字典设置参数
site={"name":"流氓","age":18,"sex":"男"}
print("姓名:{name},年龄:{age},性别:{sex}".format(**site))
  1. 方法三:通过列表索引设置参数
site=["流氓","男",18]
print("姓名:{0[0]},年龄:{0[2]},性别:{0[1]}".format(site))         -----"0" 是必须的
  1. 方法四:可向 format里传入对象
class AssignValue(object):
    def __init__(self, value):
        self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value))  -----"0" 是可选的
  1. 方法五:format 函数可以接受不限个参数,位置可以自己用数组下标设置
print("{1} {0} {1}".format("hello", "world"))  -----用数组下标设置指定位置   'world hello world'

3.字符串索引与切片

s = “kokoamber”
----- 0123 索引 ------------切片方式和数组类似

s[0:2]     ----kok              s[::2] ---kkabr     --0开始取,隔2个取一个  s[3:11:2]        
s[2:]      ----koamber          s[3:11:2]  ----ome     --3开始到11结尾,每隔2个取一个 
s[0:16]     ----kokoamber       s[:]  ----kokoamber -- 想截取全部,结尾和0都可以省略不写
s[0:-1]    ----kokoambe
s[0:-2]    ----kokoamb
s[:5]      ----kokoa    ----- 0可以省略不写

4.字符串函数

函数写法作用
空格 .strip(),.rstrip(),.lstrip()去除字符串首尾空格,\n,\t。去除首(左)空格,去除尾(右)空格
大小写 .upper(),.lower(),.capitalize(),.title()大写字符串,小写字符串,首个字符大写,标题展示(所有单词的首字母均大写)
判断 .islower(),.isupper(),.isdigit()是不是全小写,是不是全大写,是不是全数字(清洗用)
检查数据 .startswith(‘c’),.endswith(‘_’)是不是以xx字符开头,是不是以xx结尾
位置 .find(),.index()找到某一字符在字符串中的位置(find返回 -1不存在,index报错不存在)
举例:‘1234564321’.find(‘456’)
数量 .count(‘a’)查找某一字符在字符串中的数量
替换 .replace(‘a’,‘b’)替换字符串,前为被替换,后为替换
长度 len(‘dafd’)查看字符串长度

小节练习:电话号码识别

callphone_number_start = '13 15 18 17 19'   --手机号
telephone_number_start = "010 021 022 025 0888 0555"  --固定电话
'400'  --广告号

while True:
    num = input('输入拨入的电话号码:\n')
    if num.strip() == 'exit':    ------ 自定义退出
        break
    if not num:
        print('电话号码不能为空')
        continue
    num = num.strip()
    if not num.isdigit():
        print('您输入的是一个无效的电话号码')
        continue
    if num[:2] in callphone_number_start and len(num) == 11:
        print('这是一个手机号码')
        continue
    if num.startswith('0'):
        if (len(num) == 12 and num[:4] in telephone_number_start) or \
                (len(num) == 11 and num[:3] in telephone_number_start):    --- \ 是一行分成两行的固定用法
            print('这是一个固定电话号')
            continue        --- 注意continue的缩进
    if num.startswith('400') and len(num) == 10:
        print('这是一个广告电话')
        continue
    print('您输入的是一个无效的电话号码')

5.元组( )

定义元组的方式tuple( )
t = tuple(rang(10000))打印出0-9999
t = (‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’)打印出 (‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’)
t = ‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’打印出 (‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’)
t = (‘p’,)打印出(‘p’,),元组只有一个元素时需在后面加‘,’

1)元组和字符串类似 - - - 可使用索引 [:],使用字符串函数,使用in
2)元组是不可变序列

t = 'p', 'y', 't', 'h', 'o', 'n'
print("+".join(t))   -----  p+y+t+h+o+n 

for i in t:
    print(i)

元组练习:销售统计冠军

sales = (
    ('peter',(78,72,60)),
    ('tom',(65,56,59,80)),
    ('tony',(62,78,79,99)),
    ('john',(65,54,58,50)),
)
champion = ''
max_total = 0
for name,quarter_amount in sales:   ---- 一次性拿出sales元组里面的元素
    total_amount = sum(quarter_amount)     ---- sum函数计算
    if total_amount > max_total:             
        champion,max_total = name,total_amount     ---- 同时取出champion,max_total两个元素
print('第一季度的销售冠军是{0},总销售额是{1}万元'.format(champion, max_total))

------第一季度的销售冠军是tony,总销售额是318万元

6.列表[ ]

定义列表的方式list( ) 变量名不要用list
lst = list(‘abcd’)打印出[‘a’, ‘b’, ‘c’, ‘d’]
lst = [1,2,3,4]打印出 [1,2,3,4]
lst = [‘sdff’,1,2,(1,3,‘na’)]打印出[‘sdff’, 1, 2, (1, 3, ‘na’)]
lst = list((1,2,3,‘tuple’))打印出[1, 2, 3, ‘tuple’]

1)列表和字符串类似 - - - 可使用索引 [:],使用字符串函数,使用in
2)列表里数据可变 ,经常使用del

函数写法作用
位置 .index()找到某一元素在列表中的位置, 举例:[‘afd’,456,45,32].index(‘456’)
数量 .count(‘a’)查找某一元素在列表中的数量
插入 .insert(索引,元素)插入元素,前为插入位置的索引,后为插入内容
添加 .extend(),拓展 .append().extend(‘a’)末尾插入一个元素,.append(‘a’,‘c’,‘w’)末尾插入多个元素
删除 del删除元素,del b[0] - - 删除b列表的第一个元素
删除 .pop()删除元素,b.pop(1) - - 删除b列表的第二个元素
删除 .remove()可以不借助索引,直接删除元素(仅删除第一个相同元素)
b.remove(‘afd’) - - 删除b列表的‘afd’元素
排序 .sort() - - 按ASCII编码值排序.sort()从小到大排序,.sort(reverse=True)从大到小排序
(在原有列表的基础上排序,不生成新的列表)
复制 .copy()lst2 = lst1.copy() 复制生成新的列表
翻转 .reverse()颠倒列表里所有元素的顺序
清除 .clear()清除列表内容,列表变为空(很少用,ptyhon会自动回收已使用列表)
b = []
while b:   ---- 空列表布尔值为False
  print(b.pop())

sort()

按ASCII编码排序,0-9,A-Z,a-z,每个字符对应一个数字

sort写法含义
排序 .sort(reverse=True)从大到小排序,sort()默认从小到大排序
指定元素排序 .sort(reverse=True,key=lambda x:x[1])key=lambda x是一个函数,此为指定每个元组的第二项排序
lst = ['orange','apple','banana','blueberry']  
lst.sort()                       --- 比较所有元素的首字母,若首字母相同再比较第二位字母
---- ['apple', 'banana', 'blueberry', 'orange']

revenue = [('7月',56180000),('2月',35443123),('5月',1315645321)]
revenue.sort(reverse=True)       --- 按照第一个元素的ASCII值排序
---- [('7月', 56180000), ('5月', 1315645321), ('2月', 35443123)]

列表表达式

生成列表时,直接在[ ]中写表达式,简洁代码

  • 生成一个列表,包含20以内的偶数
lst1 = [i for i in range(0,20) if i % 2 == 0]     ------ 遍历20以内的偶数放入列表中
lst3 = [i for i in range(0,20,2)]     ------ for前必须写上 i 代表把遍历出的元素放入列表
  • 生成一个列表,打印26个大写字母
a_z = [chr(i) for i in range(65,65+26)]   --- chr()用于将整数转换为其对应的ASCII字符
---- ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

列表练习:销售数据排行榜

1.for循环写法

sales = (
    ('peter',(78,72,60)),
    ('tom',(65,56,59,80)),
    ('tony',(62,78,79,99)),
    ('john',(65,54,58,50)),
)
total_sales = []
for name,quarter_amount in sales:
    total_amount = sum(quarter_amount)
    total_sales.append((name,total_amount))   
           --- .append()每次只能推入一个元素,加个( )把name,total_amount封装成一个元组
total_sales.sort(reverse=True,key=lambda x:x[1]) --- 按第二个元素的大小排序
print(total_sales)

--- [('tony', 318), ('tom', 260), ('john', 227), ('peter', 210)]

2.列表表达式写法

total_sales = [(name,sum(quarter_amount)) for name,quarter_amount in sales]
              --- 加个( )把name,sum(quarter_amount)封装成一个元组
total_sales.sort(reverse=True,key=lambda x:x[1])   

--- [('tony', 318), ('tom', 260), ('john', 227), ('peter', 210)]

7.字典{key:value,key1:value1}

  • 定义字典的两种方式------ dict( ) , { } (字典内元素顺序有可能变化)
  • ---------- 字典可直接搜索元素,修改元素,增加元素,删除元素
方式一:
sales = {
    'tony':318,
    'tom':260,
    'john':227,
    'peter':210,
}
方式二:
s = [('tony', 318), ('tom', 260), ('john', 227), ('peter', 210)]
sales1 = dict(s)

------ {'tony': 318, 'tom': 260, 'john': 227, 'peter': 210}
sales = {
    'john':227,
    'peter':210,
}
sales['mike'] = 300    ----{'john': 227, 'peter': 210, 'mike': 300}
del sales['john']      ----{'peter': 210}
sales['peter'] = 0     ----{'john': 227, 'peter': 0}
print(sales['peter'])  ----210

字典的遍历和函数 .items()

for key,value in sales.items():  ---- sales.items()把元素转化成元组,for循环把两个值取出来
    print(key,value)

----
tony 318
tom 260
john 227
peter 210
  • 字典的函数
字典的函数函数的含义
.get(‘mike’,0)查找列表中是否有‘mike’元素,如果有返回‘mike’的值,没有返回我们设置的0;
0不设置时返回‘None’;若不使用get()函数,运行会报错
.keys()返回字典里所有key,- - - dict_keys([‘tony’, ‘tom’, ‘john’, ‘peter’])
.values()返回字典里所有value,- - - dict_values([318, 260, 227, 210])

8.集合{元素1,元素2}

集合里的元素是唯一且无序的,不能使用索引,常用于统计
.set( ) 集合和字符串类似 - - - 可使用函数,使用in

lst = ['a',1,2,3,3,4,4,5,'c']
print(set(lst))

---- {1, 2, 3, 4, 5, 'c', 'a'}
函数写法作用
添加 .add()添加元素,添加前会比对集合内是否有相同元素,有的话不会添加
删除 .pop()删除元素,并返回被删除的元素
删除 .remove()删除元素(如果集合内没有该元素,会报错) b.remove(‘afd’) - - 删除b集合的‘afd’元素
删除 .discard()删除元素(如果集合内没有该元素,不会报错) b.discard(‘afd’) - - 删除b集合的‘afd’元素
求交集 .intersection()集合1.intersection(集合2),求集合1和集合2的交集
求并集 .union()集合1.union(集合2),求集合1和集合2的并集
判断是否是子集 .issubset()集合1.issubset(集合2),判断集合1是否是集合2的子集
判断是否是父集 .issuperset()集合1.issuperset(集合2),判断集合1是否是集合2的父集

9.自定义函数 def

在这里插入图片描述
自定义书写方式

方式一:
def hello2(name,sex):
    print('{n}性别是{w}'.format(n=name,w=sex))
hello2('小杨','女')

方式二:
def hello2(name,sex='女'):
    print('{n}性别是{w}'.format(n=name,w=sex))
hello2(name='小明')

方式三:
def hello2(name='小明',sex='女'):
    print('{n}性别是{w}'.format(n=name,w=sex))
hello2()

1)return 返回值

def multiply(num1, num2):
    return num1 * num2
print(multiply(2, 3))

return一般写在最末尾,有多个返回值情况不同,没写return时,函数返回None。

def permit(age):
    if age >= 18:
        return True            ----- True
    else:
        return False
print(permit(18))

return可返回多个值,以元组形式返回

def find_min_max(nums):
    nums.sort()
    return nums[0], nums[-1]   ---- 取最小值和最大值
print(find_min_max([1,2,3,6,5,9,2]))

----- (1, 9)
min,max = find_min_max([1,2,3,6,5,9,2])   ---- 拆开元组
print(min,max)

------ 1  9

2)匿名函数 lambda

无需定义函数,只需写一行简单的、单行的匿名函数,常用于map()、filter()、reduce() 等函数中

revenue = [('7月',56180000),('2月',35443123),('5月',1315645321)]
key = lambda x: x[1]       ---- key生成的是一个函数
for i in revenue:
    print(key(i))

plus = lambda x,y,z : x*(y+z)   ---- lamdba可以多参数
print(plus(10,20,30))     

revenue = [('7月',(1231,56,561)),('2月',(12312,1564,3544)),('5月',(2,4,1315))]
revenue.sort(key=lambda x:sum(x[1]))   ----- lambda内部使用函数
print(revenue)  

四、python进阶

1.面向对象、类、实例

类 class : 类是某一类事物的抽象集合,用于创建对象的模版,类是一个有属性和方法的集合
对象 object :对象是类的实例,每个对象都共有定义了它们的类的属性和方法
实例 : 类的具体对象,创建一个类的实例

class Dog:               ------ 首字母大写,驼峰命名法
    pass

dog,dog1,dog2= Dog(),Dog(),Dog()     ---- 定义对象
print(type(dog))            ---- <class '__main__.Dog'>,类是class Dog:
print(type(dog) == Dog)         --- True  ---- type用于查看任何对象的类型

print(isinstance(dog,Dog) )      ----- True isinstance(对象,类)查看某对象是否是某类
print(isinstance(1,int))        --- True
print(isinstance([],list))        --- True

2.对象的属性和方法

  • _ init _(self)
    初始化对象属性的特殊函数(构造函数),类里的一个特殊方法,类实例化时会自动调用
  • 2.有 self 的是普通函数,没有的是类的方法,self 代表类的实例
class Dog:
    def __init__(self,creed,color='黑白色',size):   ----- 对象的属性,self无需传递参数
                            ------- 可设置默认参数,不传参时默认
        self.creed = creed             ------ 传参进来
        self.color = color
        self.size = size
    def eat(self):         ----- 对象的函数
        print("eating...骨头")
    def run(self):         -----  对象的函数
        print("runing...的快")
    def bark(self):       -----  对象的函数
        print("barking...大声")
        print(self.size)   -----类内打印用self,打印自己

dog = Dog('哈士奇','黑白色','大型')  -----  对象的属性调用方法,self无需传递参数
dog.eat()               -----  对象的函数调用方法
dog.run()
dog.bark()
dog.creed = '金毛'   -----  修改对象的属性调用方法
print(dog.creed)


--------  
eating...骨头
runing...的快
barking...大声
大型
金毛

3.类的属性和方法

  • 1.对象之间是并行的,互不影响 ,对象可以调用类和对象的属性,类只能调用类的属性
  • 2.装饰器写法 @classmethod
class Goods:
    id_count = 0
    ----- 装饰器写法,定义类方法
    @classmethod
    def generate_id(cls): ----- 表示类自身的属性 cls  代表class 和写Goods一样
        cls.id_count += 1
        return cls.id_count  ----- 类的装饰器函数须有返回值,才能被其他函数调用到

    def __init__(self,name,price,discount):   ----- 对象自身的属性
        self.id = str(self.generate_id()).zfill(5)   ----- 商品的唯一序号,0000102789
                                ----- 使用str.zfill(长度)id变为5个字符长度的字符串
        self.name = name
        self.price = price
        self.discount = discount


for _ in range(100):              -----  _  是 参数的占位符,用于没有参数使用时
    g = Goods(1,2,3)
    print(g.id, Goods.id_count)   ----- 类只能调用自身方法,对象可以调用类和自身的方法

案例练习:电商购物车

# 商品:名称、价格、折扣率
# 购物车:商品、商品数量

class Goods:
    id_count = 0
    """商品类"""   -----  相应文档
    @classmethod
    def generate_id(cls):
        cls.id_count += 1
        return cls.id_count

    def __init__(self,name,price,discount=1):
        self.id= str(self.generate_id()).zfill(5)  ----- id转换成5位字符串
        self.name = name
        self.price = price
        self.discount = discount  ----- 折扣率

    def calc_price(self):
        return self.price * self.discount


class Gart:
    """购物车"""
    def __init__(self):
        self.cart = {}         ----- 商品字典:key 商品id ,value:商品数量
        self.goods_list = []     ----- 购物车里所有商品的列表,用来装g1,g2,g3

    def add_cart(self,goods,num=1):
        """向购物车内添加商品"""
        if goods in self.goods_list:  ----- 如果商品在商品列表里,对应商品数量增加num
            self.cart[goods.id] += num
        else:                         ----- 如果商品不在商品列表里,直接添加商品名,数量设置为num
            self.goods_list.append(goods)
            self.cart[goods.id] = num

    def remove_cart(self,goods,num=1):
        """向购物车内减少商品"""
        if goods not in self.goods_list:
            return                 ----- 如果商品不在购物车,不执行
        self.cart[goods.id] -= num   ----- 商品在购物车,数量减去num
        if self.cart[goods.id] <= 0:   ----- 如果删掉部分商品之后商品数量小于等于0,购物车删掉商品名,字典里删掉该商品
            del self.cart[goods.id]
            self.goods_list.remove(goods)

    def get_goods_by_id(self,id):
        """根据商品id找到商品"""
        for goods in cart.goods_list:
            if goods.id == id:
                return goods

    def get_total_amount(self):
        """获取当前购物车内的总价"""
        amount = 0
        for id,num in self.cart.items():  ----- 字典.items()把元素转化成元组,for循环把两个值取出来
            goods = self.get_goods_by_id(id)  ----- 调用get_goods_by_id函数找到商品
            amount += goods.price * num
        return amount

    def get_pay_amount(self):
        """获取实际需要支付的总价"""
        amount = 0
        for id,num in self.cart.items(): ----- 字典.items()把元素转化成元组,for循环把两个值取出来
            goods = self.get_goods_by_id(id)   ----- 调用get_goods_by_id函数找到商品
            amount += goods.calc_price() * num
        return amount

    def show(self):
        """展示商品"""
        title = ('商品id','商品名','商品价格','商品数量','此商品总价')
        def show_row(row):
            """内部函数,显示购物车中的每一行"""
            for col in row:
                print(str(col).ljust(12), end='\t')
            print()
        show_row(title)

        for id,num in self.cart.items():
            goods = self.get_goods_by_id(id)
            price = '%.2f(不打折)' % goods.price
            if goods.discount < 1:           ----- 如果打折展示打折率
                price = '%.2f(%d折)' % (goods.price,goods.discount * 100)
            show_row((id,goods.name,price,num,'%.2f' % (goods.calc_price() * num)))
        show_row(('','','','','总金额:%.2f' % cart.get_total_amount()))
        discount_amount = cart.get_total_amount() - cart.get_pay_amount()
        if discount_amount > 0:          ----- 如果折扣金额大于0,展示优惠价格
            show_row(('', '', '', '', '优惠了:%.2f' % discount_amount))
        show_row(('','','','','实付金额:%.2f' % cart.get_pay_amount()))

g1 = Goods("苹果手机",6800,0.98)
g2 = Goods("小米手机",4500,0.99)
g3 = Goods("华为手机",12700)

cart = Gart()
cart.add_cart(g1,2)
cart.add_cart(g2,7)
cart.add_cart(g3,3)
cart.remove_cart(g2,2)
cart.show()

4.内置模块导入import

导入一个模块
方法一:import math   ----- 导入math模块
方法二:from math import sqrt    ----- 具体导入math里的sqrt(算数平方根)模块
方法三:from math import sqrt as sq     ----- 具体导入math里的sqrt(算数平方根)模块,取名为sq

导入多个模块
方法一:import sys,os        -----  导入两个模块
方法二:from math import sqrt,pow       -----  具体导入math里的两个模块

1)日期时间模块

datetime,timedelta,time

from datetime import datetime,timedelta
import time
datetimefrom datetime import datetime
datetime.now()返回当前系统时间:2025-05-29 14:57:58.961962
now.timestamp()时间戳 1978-1-1 00:00:00 截止到目前的时间(秒) 一般用于比较时间
now.strftime(“%Y-%m-%d %H:%M:%S”)格式化时间固定写法: 2025-05-29 15:30:46
now.year,now.month,now.day年月日
now.replace(year=2020,month=now.month,day=1)替换时间:2020-05-01 15:35:21
timedeltafrom datetime import timedelta
now + timedelta(days=20,hours=20)+ - 时间可做加减法
timeimport time
time.time()时间戳 1978-1-1 00:00:00 截止到目前的时间(秒) 一般用于比较时间
time.strftime(“%Y-%m-%d %H:%M:%S”)格式化时间固定写法: 2025-05-29 15:30:46
time.sleep(seconds)程序到这里暂停xx秒:time.sleep(6) 暂停6秒

2)生成随机数

random

randomimport random
random.random()随机生成0-1之间的数,包含0不包含1
random.randint(1,10)随机生成1-10之间的整数,包含1,10
random.choice(az)随机抽取az里的一个数(非空)
random.choices(az, k=6)随机抽取az里的6个数(非空),可换成random.sample(az, k=6),抽取的数不重复
random.shuffle( list )随机打乱顺序(只能是列表)

3)os模块(操作系统接口)

osimport os
os.getcwd()获取当前程序运行的目录
os.mkdir(os.getcwd()+‘/test’)在当前工作目录下创建目录(一层)
os.makedirs(os.getcwd()+‘/abc/132’)在当前工作目录下创建目录(多层)
os.listdir(os.getcwd())列出指定目录下的所有文件,‘ / ’ 根目录
os.path.abspath(‘./’)

os.path .abspath ( _ _ file _ _)
当前代码文件所在绝对路径,绝对路径 C:\document\
相对路径 ./ …/ . 表示当前目录, . . 表示父级目录
Windows: \ Mac和Linux /
os.path.isfile( _ _ file _ _ )判断“文件”是否存在
os.path.join(os.getcwd(),‘abc’,‘132’)拼接目录:C:\Users\Shop\abc\132
os.path.dirname(运行文件路径)截取该运行文件的目录:C:\Users\Shop\abc
os.path.basename(运行文件路径)截取该运行文件的文件名:132.py

4)sys模块(查询系统相关参数和函数)

sysimport sys
sys.path以列表形式返回各种python包存放目录
sys.path.append( ‘./test’ )把./test下的文件放到sys.path中
sys.argv保存用户输入到命令行里的参数
if __name__ == '__main__':
    print("hello world",end="")
    if len(sys.argv)>1:
        print(''.join(sys.argv[1:]))

在这里插入图片描述

5.自定义模块导入

  1. 同级目录下的导入
from goods import Goods    ----- 同级目录下可直接导入模块
from cart import Gart     ----- 最小化导入,需要什么取什么
from goods import Goods,AAA,show_row   -----  可导入类,函数,变量
from goods import *      -----全部导入

在这里插入图片描述

  1. 非同级目录下的导入
from Shopcart.cart import Gart      ----- 非同级目录需写出嵌套结构(一层嵌套)
from Shopcart.Cart.goods import Goods    

创建python软件包
在这里插入图片描述
在这里插入图片描述

  1. 主入口文件(固定写法:if _ name _ == ‘_ main _’: )

写在main文件中

if __name__ == '__main__':  ----- 只有文件名等于__main__的文件才会运行(主入口文件),其他都是模块
    g1 = Goods("苹果手机",6800,0.98)
    g2 = Goods("小米手机",4500,0.99)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值