美文网首页
python 最基础部分代码入门

python 最基础部分代码入门

作者: kusasakey | 来源:发表于2022-04-26 23:33 被阅读0次

前言:

预习资料:

1. python3 菜鸟教程

第一部分

day1 输入 、格式化输出 、 数据类型

#coding = utf-8

#输出

print("****你好") # 字符串

print('****你好') #单引号和双引号没区别

#字符串对象在 python 中有三种形式存在 单引号 双引号 三引号

# 格式化输出

age = 10

print('age=%d',age) #C语言中的输出方式 #age=%d 10

print('%d'%age) # 10

print("%d"%age) # 10

age +=1 # age=age+1

print("age = %d " %age ) #11=110+1*

print("age = %o " %age ) # 13 = 181+3*80*

print("age = %x" %age) # B ABCDEF (10)(11)(12)(13)...

print("age= %f" %age) # 11.000000

#换行

print("age= %f " %age) ; print("age= %f" %age)

print("age= %f \n " %age) ; print("age= %f" %age)

#数据类型 #字符串对象 数字

name="lin "

password=1234

print(type(name)) #<class 'str'>

print(type(password)) #<class 'int'>

#输入 # raw_input()2.0 # input() 3.0++

stuid=input("Enter your ID :")

# print("%d"%stuid) #TypeError: %d format: a number is required, not str

print(type(stuid))

print("%s"%stuid)

#input() 只能输出 string 局限性 后面对函数 进行重写

day2 运算、注释、简单数据类型转化

# coding = utf-8

#*算术运算 + - * / % (整除取余数) // (整除取商) *(指数运算)

#扩号调整运算优先级()

#赋值运算 =

#*复合赋值运算 += *= /= *= -=(c-=a 等价于 c=c-a) %=

#控制台操作 python console

stu1,stu2,stu3,stu4=123,"1234",1.23,'12'

print(stu1,type(stu1))

print(stu2,type(stu2))

print(stu3,type(stu3))

print(stu4,type(stu4))

#多行注释 (结果)

'''

123 <class 'int'>

1234 <class 'str'>

1.23 <class 'float'>

12 <class 'str'>

'''

#数据类型

# 除了数字类型 常见为 整型 浮点型 复数型 暂不介绍其他

#数据类型转换

#只是介绍数字类型三个类型的数据的变化, 其他后面进行介绍

str1='2020'

year = int(str1) # 2020

print(year,type(year)) # 2020 <class 'int'>

number=int(6.18)

print(number) # 6 (出去小数部分)

f2=float(10)

print(f2) # 10.0 (浮点数部分) 保留一位小数

# str与整数 变换 函数实现

# str变为字符串

num1=int(str1,8) #str=“2020” 转化为整数再进行转换 为 8进制的整数 ,以下同理

print(num1,type(num1)) # 1040 <class 'int'> 18^3+48=2020

num2=int(str1,10)

print(num2,type(num2)) # 2020 <class 'int'>

num3=int(str1,16)

print(num3,type(num3)) # 8224 <class 'int'>

#hex(x) 整数转化为十六进制的字符串

#oct(x) 整数转化为八进制的字符串

#bin(x) 整数转化为二进制的字符串

num= 2

print(hex(num),type(hex(num))) # 0x2 <class 'str'>

#(浮点数) 和 str 变换

str2 = '3.14'

f1=float(str2)

print(f1,type(f1)) # 3.14 <class 'float'>

#str()

f2=str(f1)

print(f2,type(f2)) # 3.14 <class 'str'>

# 其他类型之后讲

day3 if语句 、if -else 、elif、 随机生成、列表了解

#coding = utf-8

#if 语句

age =20

if age >=19 :

print("****我已经成年") #我已经成年

print("--over----") # --over----

if age <=0:

print(123)

# 判断条件 : 运算符 关系运算符 == >= != < > <=

#console 结果

'''

**x=2020 **

y=2021

print(x==y)

#False

print(x!=y)

#True

'''

#逻辑运算符

#或与非 and or not # & ! ||

#x=99

#print(x>0 and x<100) # SyntaxError: invalid character in identifier #只用于条件判断语句中

x=90

if x<100 and x>0 or x%3==0 and not 89:

print("yes")

#yes

# 普通 if -else

age =18

if age >=19 :

print("****我已经成年")

else :

print("****我未成年") # 我未成年

#elif == else if

name="huang"

if name=="lin" :

print("-----")

elif name=="tao":

print("++++++")

elif name=="huang":

print("name: %s" % name)

else:

print("=====")

#if嵌套

#作业: 地铁系统 : ticket : 1表示有车票 , 0 表示没有车票 security : 1 表示安全 ,0 表示危险

ticket = 1

security =1

if security==1:

print("****安全")

if ticket==1 :

print("****乘车")

elif ticket==0:

print("****请买票")

else:

print("****特殊处理")

elif security==0:

print("****进监狱")

else:

print("****阿伟必死")

'''

#****猜拳游戏 随机数产生 和随机数相同的话就正确否则错误

import random

num=input("****请输入一个数")

num=int(num)

print(num,type(num))

if num == random.randint(5,7): #****生成 a<=x<=b (a=5,b=6) # randint ()对象

print ("right")

elif num+1==random.randint(5,6):

print(num+1)

else :

print("error")

'''

#猜星座

import random

#列表

list=['****白羊座','****金牛座','****双子座',

'****巨蟹座','****狮子座','****处女座',

'****天秤座','****天蝎座','****射手座',

'****摩羯座','****水瓶座','****双鱼座'

] #类似一个元祖

#随机生成一个列表中的星座

collect= random.choice(list)

print("constellation is %s"%collect)

start = input("Enter the constellation :")

if start==collect :

print("right")

else :

print("error")

day4 while、 for循环 、break and continue

#coding = utf-8

#循环结构 while

i=0

while i<10:

print("error %d" %i)

i+=1

#求和

#1/1-1/3+1/5-1/7+...+1/99

i=1

n=0

sum=0

while i<100:

sum+=((-1)*n)(1/i)

i+=2

n+=1

print("sum=%f"%sum )

#while 循环的嵌套

#打印图形

i = 1

while i <= 5 :

j = 1

while j <= i:

print(" "*, end = '')

j +=1

print("****\n****")

i += 1

# 九九乘法表

i = 1

while i <= 9:

j = 1

while j <=i :

print(" %d * %d = %d " %(j,i,i*j),end = "")

j+=1

print('****\n****')

i+=1

#for循环

#语法结构 for 临时变量 in 列表或者字符串可以迭代的对象等 :

# 循环满足的条件

# simple version

name = "lin "

for x in name: # x 临时变量可以不用定义 自动识别 类型

print(x)

# l i n

for y in name :

if y == 'i':

print("%c" %y )

else :

print("next line")

'''

next line

i

next line

next line

'''

# 由此可见 lin 为四个字符的长度 末尾有一个‘/0’

# range()

for u in range(6):

print(u)

'''

0

1

2

3

4

5

'''

#break and continue

name = "python"

for X in name :

if X == '/0':

print('/0')

elif X == 'o':

continue # 结束本次循环 惊醒下一次循环

print("----------") #不执行

elif X == 'n ':

break #结束循环 "/0" 没有执行

else :

print(X)

'''

p

y

t

h

n

'''

day5 字符串 存储 、相关函数

python字符串

#coding = utf-8

#再讲字符串

name = 'huang'

position = 'Python'

address = '****梅州'

description = ''' 我是一名程序员

现在在做python的入门学习!

'''

print("****姓名 : %s " % name) # 空格

print("****职位 %s " % position)

print("****公司地址 %s " % address)

print("****描述 %s " % description)

#字符串的输入时用的是input() 函数

#demo

print('''there is a count please login ''')

username =input("Enter the username :")

password = input ("Enter the password :")

print("username : %s \n****password : %s \n****" %(username,password))

''' # 结果

there is a count please login

Enter the username: ddd

Enter the password: ddd

username : ddd

password : ddd

'''

#字符串的存储模式 存放在列表 或者元组之中

# 下标 索引 与C语言中的数组的内容是相似的

name = 'abcdefg'

for i in name:

print(i)

print("-------")

for i in range(6): # 0-5

print(name[i])

'''

a

b

c

d

e

f

g

-------

a

b

c

d

e

f

'''

# 切片 截取一部分 从某部分开始到某部分结束

# 语法结构 : 【Start : end : step】 (start --- end -1)

name = 'python'

print(name[-1]) # n

print(name[0]) # p

print(name[-0]) # p

print(name[+0]) # p

print(name[-2]) # o

print(name[0:2]) # py (name[0] name[1])

print(name[0:4]) # pyth (0,1,2,3)

print(name[2:6]) # thon (2,3,4,5)

print(name[0:-2]) # pyth (逆序 -2 尾部开始 '/0'=0 n = -1 , o= -2 ) (0,1,2,3)

print(name[1:]) # ython (1,2,3,4,5,6) 默认结束是 n 结束位/0 是后面添加的

print(name[:2]) # py (0.1) 默认开始 是 0 索引

print(name[1:5:1]) # ytho(默认的情况都是 1 ) (1,2,3,4)

print(name[1:5:]) # ytho

print(name[1:-1:]) # ytho 尾部开始 第一位 为 -1

print(name[::3]) # ph (0,3,6) (间距是3) (step= 2 默认从头部开始到尾部 结束 p = 0 顺序 依次往后)

print(name[::-1]) # (-1,-2,-3,-4,-5) nohtyp (/0)后面添加

print(name[::-2]) # nhy(-1.-3,-5) (-1=n 逆序 n=0 o=-1 h=-2 逆序 h=0 t =-1 y =-2 逆序 y=0 p=-1 n=-2 over )

print(name[::-3]) # nt (-1 = n 逆序 n=0 o = -1 h = -2 t = -3 逆序 t= 0 y =-1 p =-2 /0= -3 OVER)

print(name[::-4]) # ny (-1=n 逆序 nohty y= -4 逆序 ypno o=-4 等于 n 时over )

print(name[2:-1:2]) # (2,4) to (start = t ,end = n ,step = 2)

print(name[4:1:-2]) #ot (4 =o 1= y 逆序 ot )

# practice

s = 'hello python!'

print(s[4]) #o

print(s) #hello python!

print(s[:]) #hello python!

print(s[1:]) #ello python!

print(s[:5]) #hello

print(s[:-1]) #hello python

print(s[-4:-1]) #hon

print(s[1:5:2]) #el

print(s[::-1]) # !nothyp olleh

#对于字符串的常见操作

#对于一个字符串 mystr

#查 find(str ,start=0 ,end= len(mystr)) 返回值 (存在) 开始的索引值 (不存在) -1

a = 'a wei bi si '

print(len(a)) # 12 # 空格 和 /0 注意

a.find("bi") # 6

a.find('dh') # -1

a.find("a",0,10) # 0 #end =len(mystr) : 10 所以对应的是mystr = 10

# 查 index() index(str ,start = 任意小于mystr 长度的数,end=len(mystr)) 返回值(存在) 开始的索引 (不存在) 异常

a.index('s',0,12) #9

a.index('s') # 9

# a.index('s',0,1)

#error

'''

Traceback (most recent call last):

File "<input>", line 1, in <module>

ValueError: substring not found

'''

#从右边查找

#rfind() rfind(str ,start= 0 ,end = len(mystr))

#rindex() rindex(str ,start= 0 ,end = len(mystr))

a.rfind('a',0,12) # 0

a.rindex('s') # 9

#a.rindex('s',0,8) # errors

# 顺序 是正向的 不是反向的

# 字符串分隔 partition(str) 根据 str 讲 字符串变成 3部分 前、 中、 后

a.partition("bi")

# ('a wei ', 'bi', ' si ')

# 查找并分隔字符 rpartition(str) 从右边开始进行查找

a.rpartition("e") # ('a w', 'e', 'i bi si ')

#计算 str 出现的次数 count() count(str,start,end<= len(mystr))

a.count('i') #3 i出现了三次

#替换 replace(str1 ,str2,mtstr.count(str1)) mystr中的 str1 替换成 str2 替换次数不超过 count()次

mystr = " i like studing math ,and you like math too "

mystr.replace("like","hate")

mystr.replace("like","hate",1)

mystr.replace("like","hate",2)

'''

' i hate studing math ,and you hate math too ' #****默认全部替换

' i hate studing math ,and you like math too ' # 顺序 从前到后

' i hate studing math ,and you hate math too '

'''

# 分隔字符串 split(str=" ",2 ) #maxsplit 有无指定值

#统计时候 经常用得到 比如说

mode = "****日期 星期 天气 心情 "

data1 = "2021-1-21 Thursday rainning happy "

print(mode)

print(data1)

mode = mode.split(" ")

data1 = data1.split(" ")

print(mode)

print(data1)

'''

日期 星期 天气 心情

2021-1-21 Thursday rainning happy

['****日期', '星期', '', '', '天气', '', '心情', '']

['2021-1-21', 'Thursday', 'rainning', 'happy', '']

'''

# 便于数据的处理

#检查是否以 str 开头 startswith("str") 返回值 是 Ture 或者 False

#检查是否以 str 结尾 endswith ("str)

story = "long long age ,there is a boy called John . he died in 1987 .what fuck !"

s1=story.startswith("long")

s2=story.endswith('!')

s3=story.endswith(' ')

print(type(s1),type(s2),type(s3),s1,s2,s3)

# <class 'bool'> <class 'bool'> <class 'bool'> True True False

#bool 的打印 (补充)

print("%d"%s1) # 1 == Ture

print("%s" %s1) # Ture

# 首字母大写 capitalize()

# 每个单词首字母大写 title()

# 每个字符 大写 upper()

#每个 字符 小写 lower()

letter = 'my mother loves my father ,so they have me as the kid '

letter.capitalize()

letter.title()

letter.upper()

letter.lower()

# console results

'''

'My mother loves my father ,so they have me as the kid '

'My Mother Loves My Father ,So They Have Me As The Kid '

'MY MOTHER LOVES MY FATHER ,SO THEY HAVE ME AS THE KID '

'my mother loves my father ,so they have me as the kid '

'''

#对齐格式

# 左对齐 ljust() 不够用空格

# 右对齐 ljust()

# 居中 center()

letter.ljust(80)

letter.rjust(80)

letter.center(90)

'''

'my mother loves my father ,so they have me as the kid '

' my mother loves my father ,so they have me as the kid '

' my mother loves my father ,so they have me as the kid '

'''

#删除 左边空白字符 lstrip()

#删除 字符串末尾 的空白字符 rstrip()

#删除字符串两端的 空白字符 strip()

name=" heis i sss 123 "

name.lstrip()

name.rstrip()

name.strip()

'''

'heis i sss 123 '

' heis i sss 123'

'heis i sss 123'

'''

#简单列表 字符串

# 按照行分隔 返回列表 splitlines()

#

begin = '''hello

world \n hello python '''

begin.splitlines()

# ['hello ', ' world ', ' hello python ']

# 返回为boolean的 函数

# isalpha() 所有字符是字母

# isalnum() 所有字符是字母 或 数字

# isdigit() 是否只有数字

# isspace() 是否只包含空格

#isupper() 是否全大写

#islower() 是否全小写

#istitle() 是否每个单词字母大写

string = " today 123"

string.isalpha() # False # 空格

string.isalnum() # False

string.isdigit() # False

string.isspace() # False

string.isupper() # False # 与空格无关 只关每一个字符

string.islower() # Ture

string.istitle() # False

#还有其他的返回值是boolean 常见已 is开头的函数

day6 列表 增加、删除、修改、查询(之前讲过)、嵌套

#coding = utf-8

#list

# list 格式 name_list=[ 'a','b']

#相比C语言的数组 test_list = [2020,'22',2.333]

name_list = [ 2021 ,'2021-1-21',3.14]

print(name_list[0]) # 2021

print(name_list[1]) # 2021-1-21

print(name_list[2]) # 3.14

#list 的遍历

for name in name_list :

print(name)

'''

2021

2021-1-21

3.14

'''

#while 循环实现遍历

length =len(name_list)

count =0

while count<length :

print(name_list[count])

count+=1

'''

2021

2021-1-21

3.14

'''

#list 的操作

# 增加元素 append() extend() insert()

list1 = ['123',2021,1.34,"euy d fdf gii "]

count = 0

length = len(list1)

while count < length :

print(list1[count])

count +=1

print(len(list1)) # 4

#添加

li = input('Enter the information : ')

list1.append(int(li))

#添加后

for list in list1 :

print(list)

print(type(list1)) # <class 'list'>

print(len(list1)) #5

# append() list 后面添加 d个元素 循环实现多个元素的添加

# append() 添加之后改变 list的长度

list2 = [1,2,3,4,5]

list3 = ['a','b']

list3.append(list2) # list2 的 整个列表加到list3 中 最后返回list3

print(list3[2])

# list3[0] = 'a'

# list3[1] = 'b'

#list3[2] = [1, 2, 3, 4, 5]

# extend( ) 添加 列表中的每一个元素 进行添加

list4 = ['lin','huang','niu']

list3.extend(list4)

print(list3[3])

# lin

print(list3)

# ['a', 'b', [1, 2, 3, 4, 5], 'lin', 'huang', 'niu']

# 插入 将元素插入列表指定位置 insert( index ,object)

print(list4[0]) # hello

list4.insert(0,1232222)

print(list4[0]) # 1232222

# 修改 元素 通过下标来进行修改元素

list5 = ['I ', 'hate' , 'math' ]

print("before check : ")

for word in list5 :

print( word)

print("after check : ")

list5[0] = 'You'

print(list5)

'''

hate

math

after check :

['You', 'hate', 'math']

'''

# 查找 除了根据下标 find() index() count() 以及 他们的派生函数 以及他们的综合应用

# 可以根据 返回值 进行查询

list6 = ['3',1,2,3,4,'5']

find_list6 = '3'

if find_list6 in list6 : # not in the result should be reversed

print(find_list6)

else :

print("not in the list6")

# 3

# review index() 不存在报出异常的 count() 计算某一个字符出现的次数s

list7 = [1,2,3,4,5]

print(list7[0]) # 1

list7.index(1,0,4) # 0 返回下标

list7.index(2,0,4) # 1

list7.index(3,0,4) # 2

# 删除元素

# del

# pop()

# remove()

musics = ['****我怀念的','****告白气球','****夜空中最亮的星','****平凡之路'

,'****奇妙能力歌','****那些花儿']

print('---before delete ------')

i = 0

while i < len(musics) :

print(musics[i])

i += 1

del musics[1]

print ("after delete")

for music in musics :

print(music)

'''

---before delete ------

我怀念的

告白气球

夜空中最亮的星

平凡之路

奇妙能力歌

那些花儿

after delete

我怀念的

夜空中最亮的星

平凡之路

奇妙能力歌

那些花儿

'''

musics.pop() # 删除列表中的最后一个元素

print ("after delete")

for music in musics :

print(music)

'''

after delete

我怀念的

夜空中最亮的星

平凡之路

奇妙能力歌

'''

# remove() 指定去除

musics.remove('****我怀念的 ') # 不存在

for music in musics :

print(music)

'''

夜空中最亮的星

平凡之路

奇妙能力歌

'''

# 注意 如果remove() 执行过一次,数据没有更新的话,会报如下错误

# ValueError: list.remove(x): x not in list

#列表的排序

# 列表中是数字 按照数字从小到大 sort()

# 列表元素倒序 reverse()

list8 = [56,78,90,23,45,65,89]

list8.sort()

print(list8)

# [23, 45, 56, 65, 78, 89, 90]

list8.reverse()

print(list8)

# [90, 89, 78, 65, 56, 45, 23]

list9 = ['b','a','y','d','f',1,100]

list9.reverse()

print(list9)

# [100, 1, 'f', 'd', 'y', 'a', 'b']

# list9.sort()

# print(list9)

# # TypeError: '<' not supported between instances of 'str' and 'int'

# length =len(list9)

# i =0

# while i < length :

# list9[i] = int(list9[i]) # ValueError: invalid literal for int() with base 10: 'f'

# i +=1

# print(list9)

# list9.sort()

# print(list9)

# 由此可知 单个字符在python 中 不对应相应的ASCII的 数值 ,后面进行学习

# 列表嵌套

# 列表添加元素中 实现了列表的嵌套

# 类似于二维数组 ,其甚至可以表示多维

box = [[1,[[[[['hello'],'python']]]]],[1,2,3,4,5]]

print(box) # [[1, [[[[['hello'], 'python']]]]], [1, 2, 3, 4, 5]]

# print(box[0][0][0][0][0][0][0]) # TypeError: 'int' object is not subscriptable

# 暂时不如何取到 列表里面列表的数值 也许可以通过 循环来进行取 此处略

# 综合应用列表 # 分类列表元素

#coding = utf-8

import random

seat = [[],[],[],[]] # 四个类别

elements = ['s1','s2','s3','s4','s5','s6','s7','s8','s9','s10']

count = 0

for ele in elements :

index = random.randint(0,3) # 随机分类

seat[index].append(ele)

for x in range(0,4) :

print(seat[x])

'''

['s4', 's9', 's10']

['s3']

['s2', 's6', 's7', 's8']

['s1', 's5']

'''

day7 元组 不可修改

# 元组

# 元组 的元素 不能修改

# 元组 表示 小括号

tuple1 = ('python',2021,1,25)

print(tuple1) # ('python', 2021, 1, 25)

# 访问元组

tuple2 = ('hello','boy')

print(tuple2[1]) # boy

print(len(tuple2)) # 2

# 不可修改为元组的 基本属性 如果 修改的话会产生错误

# tuple2[1] = 'hello'

# print(tuple2)

# TypeError: 'tuple' object does not support item assignment

# index(str,start,end) count(str,start,end)

tuple3 = (1,2,3,4,5,6,2,1)

tuple3.index(4,0,5) # 3 下标

tuple3.count(2) # 2 个数

tuple3.count(1) # 2 个数

day8 字典 增加、删除、修改 遍历 、常见相关的函数

# 字典 1、存储多个数据 2、 访问元素时 方位定位到需要的元素

# 列表的嵌套 实现数据的列表

singers = [[ 1,'****王力宏',20],[2,'****林俊杰',23],[4,'****周杰伦',34]]

for singer in singers :

print(singer)

'''

[1, '****王力宏', 20]

[2, '****林俊杰', 23]

[4, '****周杰伦', 34]

'''

for singer in singers :

for sing in singer :

print(sing)

'''

1

王力宏

20

2

林俊杰

23

4

周杰伦

34

'''

# 类型不同 设计到转换 如果 不对的话 显示错误

# 字典 : 列表相似下;下标查找 ;键:值对

a_info = {'name': 'lin','age' : 'tao','sex': 1,'tel':182374433}

# 字典元素的访问

print(a_info['name']) # lin

print(a_info['tel']) #182374433

# print(a_info['sss']) # 不存在报错 KeyError: 'sss'

# 不确定 字典中是否存在的 键值对 get()方法

age = a_info.get('age') #

print(age,type(age)) # tao <class 'str'>

sex = a_info.get('sex')

print(sex,type(sex)) # 1 <class 'int'>

address =a_info.get('address')

print(address,type(address)) # None <class 'NoneType'> 不存在的

# 字典的操作

# 查看 a_info['age'] 或 a_info.get('age')

# 一般使用 a_info.get('anything')

# 修改元素

b_info = {'stuid' : 12306,'stuname':'haung' ,'class':12}

newid = input('Enter the new id ')

b_info['stuid'] = int(newid)

print( '%d'%b_info.get('stuid'))

'''

Enter the new id 12034

12034

'''

for b in b_info :

print(b_info.get(b))

'''

12034

haung

12

'''

# 添加元素

newsex = input('Enter sex ')

b_info['sex'] = newsex

for a in b_info :

print(a,b_info.get(a))

'''

stuid 12034

stuname haung

class 12

sex man

'''

# 字典末尾添加 注意添加的有 关键词+数值

# 删除元素 del clear()

del b_info['sex']

print(b_info.get('sex')) # None

# 删除整个词典

c_info = {'stuid' : 12306,'stuname':'haung' ,'class':12}

print(c_info) # {'stuid': 12306, 'stuname': 'haung', 'class': 12}

del c_info

#print(c_info) # NameError: name 'c_info' is not defined

# 清空字典 元素

d_info = {'name':'lin' ,'age' : 18,'sex' : 'man'}

print(d_info) # {'name': 'lin', 'age': 18, 'sex': 'man'}

d_info.clear()

print(d_info) # {}

# 关于字典的常见函数

# len() count the number of the key-value in the info

# keys() result == the list of the key in the info

# values() result == the list of the value in the info

# items() result == the list of the ke-value in the info

e_info = {'number':1,'score':12,}

print(len(e_info)) # 2

print(e_info.keys()) # dict_keys(['number', 'score'])

print(e_info.values()) # dict_values([1, 12])

print(e_info.items()) # dict_items([('number', 1), ('score', 12)])

# 复习加回顾

# 字符串

my_str = 'hello python'

for x in my_str :

print(x,end=' ')

# h e l l o p y t h o n

# 列表

my_list = [1,2,3,4,5,5]

for x in my_list :

print(x,end=' ')

# 1 2 3 4 5 5

# 元组

tuple = (11,22,33,44,55)

for i in tuple:

print(i,end=' ')

# 11 22 33 44 55

# 字典

# keys

info = {'name':'lin','age':23.0}

for key in info.keys():

print(key)

'''

name

age

'''

# values

for value in info.values():

print(value)

'''

lin

23.0

'''

#items

for item in info.items() :

print(item)

'''

('name', 'lin')

('age', 23.0)

'''

#key-value

for i,j in info.items() :

print(i,j)

'''

name lin

age 23.0

'''

# 带下标的遍历

# 列表

li =['1','2','3','4']

for i in range(0,len(li)):

print(i,str(li[i]))

'''

0 1

1 2

2 3

3 4

'''

# enumerate() 将一个可遍历的数据对象 组合成一个 索引序列 ,(数据+数据下标)

info_a = {'stuid' : 12306,'stuname':'haung' ,'class':12}

for i,j in enumerate(info_a.items()):

print('NO %d key-value %s'%(i,j))

'''

NO 0 key-value ('stuid', 12306)

NO 1 key-value ('stuname', 'haung')

NO 2 key-value ('class', 12)

'''# 字典 1、存储多个数据 2、 访问元素时 方位定位到需要的元素

# 列表的嵌套 实现数据的列表

singers = [[ 1,'****王力宏',20],[2,'****林俊杰',23],[4,'****周杰伦',34]]

for singer in singers :

print(singer)

'''

[1, '****王力宏', 20]

[2, '****林俊杰', 23]

[4, '****周杰伦', 34]

'''

for singer in singers :

for sing in singer :

print(sing)

'''

1

王力宏

20

2

林俊杰

23

4

周杰伦

34

'''

# 类型不同 设计到转换 如果 不对的话 显示错误

# 字典 : 列表相似下;下标查找 ;键:值对

a_info = {'name': 'lin','age' : 'tao','sex': 1,'tel':182374433}

# 字典元素的访问

print(a_info['name']) # lin

print(a_info['tel']) #182374433

# print(a_info['sss']) # 不存在报错 KeyError: 'sss'

# 不确定 字典中是否存在的 键值对 get()方法

age = a_info.get('age') #

print(age,type(age)) # tao <class 'str'>

sex = a_info.get('sex')

print(sex,type(sex)) # 1 <class 'int'>

address =a_info.get('address')

print(address,type(address)) # None <class 'NoneType'> 不存在的

# 字典的操作

# 查看 a_info['age'] 或 a_info.get('age')

# 一般使用 a_info.get('anything')

# 修改元素

b_info = {'stuid' : 12306,'stuname':'haung' ,'class':12}

newid = input('Enter the new id ')

b_info['stuid'] = int(newid)

print( '%d'%b_info.get('stuid'))

'''

Enter the new id 12034

12034

'''

for b in b_info :

print(b_info.get(b))

'''

12034

haung

12

'''

# 添加元素

newsex = input('Enter sex ')

b_info['sex'] = newsex

for a in b_info :

print(a,b_info.get(a))

'''

stuid 12034

stuname haung

class 12

sex man

'''

# 字典末尾添加 注意添加的有 关键词+数值

# 删除元素 del clear()

del b_info['sex']

print(b_info.get('sex')) # None

# 删除整个词典

c_info = {'stuid' : 12306,'stuname':'haung' ,'class':12}

print(c_info) # {'stuid': 12306, 'stuname': 'haung', 'class': 12}

del c_info

#print(c_info) # NameError: name 'c_info' is not defined

# 清空字典 元素

d_info = {'name':'lin' ,'age' : 18,'sex' : 'man'}

print(d_info) # {'name': 'lin', 'age': 18, 'sex': 'man'}

d_info.clear()

print(d_info) # {}

# 关于字典的常见函数

# len() count the number of the key-value in the info

# keys() result == the list of the key in the info

# values() result == the list of the value in the info

# items() result == the list of the ke-value in the info

e_info = {'number':1,'score':12,}

print(len(e_info)) # 2

print(e_info.keys()) # dict_keys(['number', 'score'])

print(e_info.values()) # dict_values([1, 12])

print(e_info.items()) # dict_items([('number', 1), ('score', 12)])

# 复习加回顾

# 字符串

my_str = 'hello python'

for x in my_str :

print(x,end=' ')

# h e l l o p y t h o n

# 列表

my_list = [1,2,3,4,5,5]

for x in my_list :

print(x,end=' ')

# 1 2 3 4 5 5

# 元组

tuple = (11,22,33,44,55)

for i in tuple:

print(i,end=' ')

# 11 22 33 44 55

# 字典

# keys

info = {'name':'lin','age':23.0}

for key in info.keys():

print(key)

'''

name

age

'''

# values

for value in info.values():

print(value)

'''

lin

23.0

'''

#items

for item in info.items() :

print(item)

'''

('name', 'lin')

('age', 23.0)

'''

#key-value

for i,j in info.items() :

print(i,j)

'''

name lin

age 23.0

'''

# 带下标的遍历

# 列表

li =['1','2','3','4']

for i in range(0,len(li)):

print(i,str(li[i]))

'''

0 1

1 2

2 3

3 4

'''

# enumerate() 将一个可遍历的数据对象 组合成一个 索引序列 ,(数据+数据下标)

info_a = {'stuid' : 12306,'stuname':'haung' ,'class':12}

for i,j in enumerate(info_a.items()):

print('NO %d key-value %s'%(i,j))

'''

NO 0 key-value ('stuid', 12306)

NO 1 key-value ('stuname', 'haung')

NO 2 key-value ('class', 12)

'''

day9 集合 、集合操作、集合相关函数

# settle

# the normal type of the elements which is immutable includes integer 、float、string、tuple and so on .

# the noraml type of the mutable elements are list 、dict and so on .

# settle

# elements in the settle are unique . if the element with the same value or mean,it would be only showed once.

langs = {'java','c++','c','python','java',1,2.22}

print(langs,type(langs))

# {'python', 1, 2.22, 'c', 'c++', 'java'} <class 'set'>

# set() 建立集合

a = ' i love python'

x = set(a)

print(x,type(x))

# {'i', 'o', 'y', 't', 'h', 'p', 'n', ' ', 'l', 'e', 'v'} <class 'set'>

# 列表转化为 集合

fruits =['apple','orange','banana','pear','peach','other','apple']

y = set(fruits)

print(y,type(y))

# {'peach', 'orange', 'other', 'pear', 'banana', 'apple'} <class 'set'>

# 字典转化为 集合

info = {'name':'lin','age':16,'age':'lll'}

z = set(info)

print(z)

# {'name', 'age'}

# 字典转化为 集合 只会保留相关的关键字

# 集合的操作

# 交集 : & ==

# 并集 :| !=

# 差集 : - in

# 对称差集 :^ not in

A = {1,2,3,4,5,6}

B = {4,5,6,7,8,9}

both =A & B

all = A | B

A_B = A - B

B_A = B - A

a_b = A ^ B

print(both,type(both)) # {4, 5, 6} <class 'set'>

print(all,type(all)) # {1, 2, 3, 4, 5, 6, 7, 8, 9} <class 'set'>

print(A_B,type(A_B)) # {1, 2, 3} <class 'set'>

print(B_A,type(B_A)) # {8, 9, 7} <class 'set'>

print(a_b,type(a_b)) # {1, 2, 3, 7, 8, 9} <class 'set'>

C = {1,2,3,4,5,6}

c = 4

d = 3

print(A==B) # False

print(A==C) # True

print(A!=C) # False

print(c in A ) # True

print(c in B) # True

print(c not in A ) # False

print(d not in B) # True

# 集合 的 方法

D = {1,2,3,4,5,6,7,8,9}

E = {'a','b','c','d','e'}

# 添加

D.add('6')

print(D) # {1, 2, 3, 4, 5, 6, 7, 8, 9, '6'}

# 复制

F = D.copy()

print(F) # {1, 2, 3, 4, 5, 6, 7, 8, 9, '6'}

# 删除

F.remove('6')

print(F) # {1, 2, 3, 4, 5, 6, 7, 8, 9}

# 删除 存在的元素

F.discard(6)

print(F) # {1, 2, 3, 4, 5, 7, 8, 9}

# 删除 不存在的元素

F.discard('7')

print(F) # {1, 2, 3, 4, 5, 7, 8, 9}

# 删除 随机删除

F.pop()

print(F) # {2, 3, 4, 5, 7, 8, 9}

# 清楚 集合中的所有元素

F.clear()

print(F) # set()

G = {1,2,3}

# 集合的交集 有返回 False 无 返回True

a1 = A.isdisjoint(B)

print(a1) # False

a2 = A.isdisjoint(D)

print(a2) # False

# 一个 集合是否是 另一个集合的子集合

a2 = A.issubset(G)

print(a2) # False A不是 G 的子集合

a3 = G.issubset(A)

print(a3) # True G 是 A 的 子集合

# 一个集合 是否是另一个几个的父集合

a4 = A.issuperset(G)

print(a4) # True A 是G 的父集合

# ret_value =A.intersection_update(B)*

*# B 为 一个至多个集合

A.intersection_update(B,C,D,E,F)

print(A) # set() 返回的是 A 与 B C D E F 的 交集

we= {2,3,4}

you = {4,5,6,7}

we.intersection_update(you)

print(we) # {4} 返回的是 b1 的 交集

# update() A .update(B) 将B 集合加到 A 中

A.update(B)

print(A) # {4, 5, 6, 7, 8, 9}

# difference_update() 删除交集的元素 保存在A 中

H ={4,5,6}

A.difference_update(H)

print(A) # {7, 8, 9}

# 对称差集

A.symmetric_difference(H)

print(A) # {7, 8, 9}

A1 = {4, 5, 6, 7, 8, 9}

print(A1 ^ H) # {7, 8, 9}

A1.symmetric_difference_update(H)

print(A1) # 7, 8, 9}

day10 函数、 参数、引用、函数注意

# coding = utf-8

# 函数 格式

def fun1():

print('hello python')

return

print('c++')

fun1() # hello python

# return 终止函数

# 函数计算两个数的积

def fun2(x,y):

print(x*y)

fun2(2,23) # 46

help(fun2)

# 查看函数的信息

'''

Help on function fun2 in module main:

fun2(x, y)

# return 终止函数

# 函数计算两个数的积

'''

# 函数的参数

#函数参数调用的顺序

def f1(x,y):

print(x,y,x+y)

f1(5,6)

f1(x=6,y=7)

f1('a','b')

'''

5 6 11

6 7 13

a b ab

'''

# 函数的返回值

def divided(x,y):

z = x+y

return z

result = divided(2020,2021)

print(result) # 4041

# 4种典型的函数类型

# 无参数 ,无返回值

def menu():

print(''**10,end = ' ') # *打印十个 **

menu()

*# ***********

# 无参数, 有返回值

def getage():

return 23

age =getage()

print('age = %d'%age) # age = 23

# 有参数, 无返回值

# 有参数, 有返回值

def num_sum(x):

result = 0

i = 1

while i <= x :

result += i

i += 1

return result

result = num_sum(100)

print('1~100 的和为 :%d '%result)

# 1~100 的和为 :5050

# 函数的嵌套调用

def f2():

print('a')

def f3():

f2()

print('b')

f3()

'''

a

b

'''

# 定义函数 ,打印条波浪线

# 打印 N条波浪

def waveline():

print('~'*1)

def n_line(n):

for i in range(n):

waveline()

n_line(10)

def p(x,y,z):

return xyz

def average_value(x,y,z):

return (x+y+z)/3

result = average_value(10,20,20)

print(result) # 16.666666666666668

# 局部变量

def fu1():

x = 2020

print(x)

x = 2021

print(x)

def fu2():

x = 1999

print(x)

fu1()

fu2()

'''

2020

2021

1999

'''

# 全局变量

num = 2021

def fuc1():

num = 1 # 局部变量

print(num)

def fuc2():

print(num)

fuc1()

fuc2()

# 1

# 2021

# 修改 全局变量 global 声明

age = 20

def q1():

global age

print(age) # 20

age =12

print(age) # 12

def q2():

print(age) # 12

print(age) *# 20 *全局变量未修改

q1() # 20 12 对全局变量进行了修改

q2() # 12 全局变量的值为上面的值

print(age) #12 全局变量修改为12

# 使用函数的返回值 、 参数 简单的函数嵌套

def d():

return 2021

def d2(x):

print(x)

result = d()

d2(result) # 2021

# 多return 语句 只执行 一条 return 语句

# 多个返回值的情况

def fun_test(x,y):

a = x/y

b = x // y

if ( a < b):

return a,b

else:

c=[a,b]

d={'all':a,'part':b}

e={a,b}

return c,d,e

print(fun_test(1,4))

print(type(fun_test(1,4)))

# ([0.25, 0], {'all': 0.25, 'part': 0}, {0.25, 0})

# <class 'tuple'> 多个返回值 默认返回为元组

# 函数形参具有默认的值 ,规定在参数列表的最后面 否则报错

def test(name,age,sex="man"):

print("name=%s age=%d sex =%s"%(name,age,sex))

test('lin',18) # name=lin age=18 sex =man

test(name='tao',age=20) # name=tao age=20 sex =man

test(' ',1 ) # name= age=1 sex =man

# def test1(gender = 'man', ne):

# print(ne,gender)

# test1('xiaopai')

# SyntaxError: non-default argument follows default argument

#不定长形参

def test3(args1,args2,args5,args6 = 'lin',args ='man',*args3):

#*默认参数在 *args5 之后 args5 表示为命名的参数 默认为元组

*# *args3 存放命名的参数 如下面是字典

print(args1,'****\n****',args2,'****\n****',args5,'****\n****',args6,'****\n****',args,'****\n****',args3)

help(test3)

test3(11,'c','d',11,a=12,b='ww')

'''

Help on function test3 in module main:

**test3(args1, args2, *args5, args6='lin', args='man', args3)

#****不定长形参

** 11**

** c**

** ('d',11)**

** lin**

** man**

** {'a': 12, 'b': 'ww'}**

'''

# 引用 数值的传递方式

x = 2020

y = x

print(y) #2020

# 使用 id() 看是否为同一个引用

print(id(x)) # 1926280302160

print(id(y)) # 1926280302160

# 同一个引用

x =['a','b','c']

y=x

print(y) #

x.append('d')

print(y) # ['a', 'b', 'c', 'd']

print(x) # ['a', 'b', 'c', 'd']

# x 与 y 的相等了

print(id(x)) # 2085017824584

print(id(y)) # 2085017824584

# 变量 x y 都是存储 关于 某个 单元的 地址的引用

# 可变类型 : 列表 、集合、字典

# 不变类型 : 数字、字符串、元组

# 改变引用的指向的地址

print("****\n****")

def function(x):

x+=x # 运算开辟了新的地址

print(id(x))

return x

x = 20

print(id(x)) # 2428873879304

function(x) # 140732108027952

day11 函数、字典、列表 一个简单的订单 软件

# 简单的商品选购

# 商品列表 存储在数据库中比较好 或者文件之中

product_dict= {

'001':{'name':'****乐事薯片','price':3.5,'des':'****黄瓜味'},

'002':{'name':'****百事可乐','price':2.5,'des':'****无糖零添加'},

'003':{'name':'****旺仔牛奶','price':2.5,'des':'****原味 浓厚奶香'},

'004':{'name':'****士力架','price':4,'des':'****柠檬味威化巧克力'},

'005':{'name':'DOVE****巧克力','price':5,'des':'Do you love me ?'},

'006':{'name':'****老鼠药','price':1.0,'des':'****希望你家有老鼠'},

'007':{'name':'****蟑螂药','price':3.5,'des':'****敢死队 小强'},

}

# 购物清单

list_order = []

# 打印 商品信息

def print_product():

for k,v in product_dict.items():

print("p_id :%d , name :%s ,price :%.3f ,description : %s"%(int(k),v['name'],v['price'],v['des']),end='****\n****')

# create order

def create_order():

while True:

p_id =input('Enter the id of the product : ')

if p_id in product_dict:

break

else :

print('the product is not exist')

p_number = int(input('Enter the number : '))

# one product order

order_single = {'p_id': p_id,'p_number':p_number} # 存储 商品的价格

list_order.append(order_single)

# 结算 函数

def count_order():

print_orders_info()

total_price =get_total_price()

paying(total_price)

# 支付 函数

def paying(total_price):

while True:

money = float(input('total price %.3f \n Enter the price : '%total_price))

if money > total_price :

print('back for %f 元'%(money - total_price))

list_order.clear()

break

else:

print('more money')

# 总 价格 函数

def get_total_price():

total_price = 0

for item in list_order:

product = product_dict[item['p_id']]

total_price += product['price'] * item['p_number']

return total_price

# 打印订单信息

def print_orders_info():

for item in list_order:

product =product_dict[item['p_id']]

print('name :%s , price : %f number :%d ,description : %s' %(product['name'],product['price'],item['p_number'],product['des']),end ='****\n****')

# 购买函数

def buying():

print('Information of the order:',end='****\n****')

# create order

print_product()

create_order()

print('add to the trolley \n ')

# main

def shopping():

while 1 :

item = input('1****、购买 2、结算 3、结束购物 \n****')

if item == '1':

buying()

elif item == '2':

count_order()

elif item == '3':

print('over')

break

else :

print('errors')

continue

shopping()

day12 类的定义、对象、初始默认普通函数

# 面向对象的思想解决问题

# 人 类 一听就懂 人是一类物种

# 外星人类 是另一种 物种

# 子类 父类

# 类 : 名称 、属性、方法

# 简单的 王者荣耀 游戏 案例

# 类的定义

class Game(object): # Game : name of the class of which the first letter is uppered.

# 登录游戏

def login(self):

print('login the game ,print the information of the players')

# m魔方函数 初始化函数

def init(self):

self.id = 2021127002

self.name = 'alibaba'

# 初始化玩家信息 init

def init(self):

players={'p_id':self.id,'p_name':self.name}

for player in players.items():

print(player,end='****\t****')

# 游戏开始

def begin(self): # 行为

print(self)

print('****欢迎来到王者荣耀')

# 游戏结束

def out(self):

i = int(input('1****、out 2、stay '))

if i==1 :

print('out')

elif i==2:

print('stay')

j = int(input('1****、out '))

if j==1:

print('out')

else :

print('again')

else :

print('-----')

# 类的实例化 创建对象

game1 = Game() # 第一局游戏

game1.login() # 开始

print(game1) # <main.Game object at 0x000001EA44D37E80>

#欢迎来到王者荣耀

print(type(game1)) # <main.Game object at 0x000001EA44D37E80>

#<class 'main.Game'>

print(id(game1)) # 2105688686208

game1.init() # ('p_id', 2021127002) ('p_name', 'alibaba')

game1.age =18 # 给对象添加新属性

print('****\n****',type(game1.age))

'''

<class 'int'>

'''

print(id(game1.age))

'''

140732108027248

'''

game1.out()

game2 = Game() # 第二局游戏

game3 = Game() # 第三局游戏

# 有参数的 初始化方法

class Batman(object):

def init(self,name,hp,attack,defence):

self.name = name

self.hp = 100

self.attack = attack

self.defence = defence

def attacked_batman(self):

life_losed = self.attack - self.defence

print('life_losed %d'%life_losed)

return life_losed

def print_info(self):

print('batman_name:%s,batname_hp :%.3f'%(self.name,self.hp))

def str(self): # 按照str 输出

return 'batman_name:%s,batname_hp :%.3f'%(self.name,self.hp)

def del(self): # 默认删除对象 ,释放内存空间 ,默认最后调用

print('%s delete '%self.name)

# 不同的对象

tony = Batman('normal',99,20,10) # 参数的个数一定一样

tom = Batman('super',1000,40,20) # 参数的数值

#不同对象的属性存放的位置

print(id(tony.name)) # 2680363888568

print(id(tom.name)) # 2680217701096

# 同一个对象属性存储的位置

print(id(tony.hp)) # 140732267151280

print(id(tom.hp)) # 140732267151280

# 同一个类的 不同对象,实例方法共享

print(id(tony.attacked_batman())) # life_losed 10

# 140732267148400

print(id(tom.attacked_batman())) #life_losed 20

# 140732267148720

tony.print_info() # batman_name:normal,batname_hp :100.000

tom.print_info() # batman_name:super,batname_hp :100.000

# 注意hp的初始值

tom.hp = 200

tom.print_info() # batman_name:super,batname_hp :200.000

# 总结 : 每一类的实例存放在独立的位置上面

# 同时该位置上的属性、行为的位置也是相互独立的

print(tom) # <main.Batman object at 0x000001BBBC439390>

print(tom) # batman_name:super,batname_hp :200.000 # str()才打印,这个,否则答应地址

print(tom.str()) # batman_name:super,batname_hp :200.000

# print(tom.doc()) # batman_name:super,batname_hp :200.000

# 删除对象

# 变量引用对象

jerry = Batman('hero',500,30,14)

jerry1 =jerry

jerry2 =jerry

jerry3 =jerry

del(jerry1)

del(jerry2) # 与他无关,默认函数最后直接调用

'''

normal delete

super delete

hero delete

'''

day13 类的简单应用

烧土豆

class Sweetpotato(object):

def init(self):

self.state = 0

self.method = []

self.cookedString = "****生的"

self.condiments = ['****芝麻']

def str(self):

msg = self.cookedString +'potato'

if len(self.method) > 0:

for item in self.method:

msg += item

if len(self.condiments) > 0:

msg = msg + '****:('

for temp in self.condiments:

msg = msg + temp + ' '

msg = msg.strip(' ')

msg = msg + ')'

return msg

def cook(self,time):

self.state = self.state + time

if self.state > 60:

self.cookedString = '9****分熟 '

elif self.state >30:

self.cookedString = '7****分熟 '

else :

self.cookedString = '5****分熟 '

def addCondiments(self,condiments):

self.condiments.append(condiments)

def allmethod(self,method):

self.method.append(method)

# self.method.remove(method)

potato = Sweetpotato()

print(potato.state)

print(potato.condiments)

print(potato.cookedString)

potato.cook(45)

potato.addCondiments('****番茄酱')

potato.allmethod(' 炒 ')

print(potato.condiments)

print(potato.method)

print(potato)

'''

0

['****芝麻']

生的

['****芝麻', '番茄酱']

[' 炒 ']

7****分熟 potato 炒 :(芝麻 番茄酱)

'''

附赠 :PEP 8 代码规范

day14 继承 、类的属性,get ,set

# 继承

class Person(object):

def init(self):

self.race = 'human'

def str(self):

return 'race = %s'%self.race

# def del(self):

# print('delete successfuly')

class Student(Person): # 子类继承了 父类 Person

pass

s = Person()

print(s)

s1 = Student()

print(s1)

# 继承 默认的属性 方法

# 多继承

class Father(object):

def cook(self):

print('like cooking',end =' \n****')

class Mother(object):

def cook(self):

print('hate cooking',end = '****\n****')

def shop(self):

print('shopping gogoogo****\n****')

class Son(Father,Mother):

pass

son =Son() # like cooking

son.cook() # 默认第一个

print(Son.str) # slot wrapper 'str' of 'object' objects>

print(Son.init) # <slot wrapper 'init' of 'object' objects>

print(Son.mro) # 继承先后

'''

(<class 'main.Son'>,

<class 'main.Father'>,

** <class 'main.Mother'>,**

** <class 'object'>)**

'''

son.shop() # shopping gogoogo 其他方法不影响

# 子类 重写属性 、和同同属性的方法

class Fruit(object):

def int(self):

self.species = 'fruit '

def eat(self):

print('method you choose')

def way(self):

print('father class')

class Vegetable(object):

def __init(self):

self.species = 'vegetable '

def eat(self):

print('ripe')

def cook(self):

print('cooked')

class Both(Fruit,Vegetable):

def int(self):

self.species = 'vegtable '+ 'fruit'

def eat(self):

print('eat by both methods')

tomato = Both()

# print(tomato.self.species)

tomato.eat() # eat by both methods

tomato.cook() # cooked

print(Both.mro)

# (<class 'main.Both'>, <class 'main.Fruit'>, <class 'main.Vegetable'>, <class 'object'>)

class Third(Both): # 多层继承

pass

three = Third()

# print(three.species)

three.cook() # cooked

three.eat() # eat by both methods # 子类 有 则调用子类的方法

three.way() # father class # 子类没有 则会 去父类

# 类的属性

class People(object):

name = 'hello python' # 公有的类属性

_gender = 'man' # 私有的类属性

def init(self):

self.tel = 1234456789

self.id = '00001'

p1 = People()

p1.name = 'c++'

print(p1.name) # c++

p1.age = 30 # 实例属性

print(p1.age) # 30

print(p1._gender) # man

print(p1.tel) # 1234456789

print(p1.id) # 00001

print(People.name) # hello python

print(People._gender) # man

# print(People.tel) # AttributeError: type object 'People' has no attribute 'tel'

# print(People.id) # AttributeError: type object 'People' has no attribute 'id'

# 实例修改 只是实例的属性,不改变类的属性

del p1.age # 删除实例属性

# print(p1.age) # AttributeError: 'People' object has no attribute 'age'

del p1.name

print(p1.name) # hello python

print(People.name) # hello python 共有属性无法删除

del p1.tel # 只会删除实例中的属性 不会删除类的属性

# print(p1.tel) # AttributeError: 'People' object has no attribute 'tel'

p2 = People()

print(p2.tel) # 1234456789 # 只会删除实例中的属性 不会删除类的属性

print(People.bases) # (<class 'object'>,)

print(People.mro) # (<class 'main.People'>, <class 'object'>)

print(People.class) # <class 'type'>

print(People.mro) # (<class 'main.People'>, <class 'object'>)

# 对于类的属性进行修改

class Teacher(object):

professional = 'teacher'

@classmethod

# 类方法,用classmethod 进行标识,能够让实例对象和 类的对象进行访问

def get_add(cls):

return cls.professional

def age(self):

return 11

t1 = Teacher()

print(t1.get_add()) # teacher

print(Teacher.get_add()) #teacher

print(t1.age()) # 11

# print(Teacher.self.age())

# AttributeError: type object 'Teacher' has no attribute 'self'

# 对类属性进行修改

class Leader(object):

name = 'leader'

age = 100

sex = 'woman'

@staticmethod

def get_age(cls,age):

return age

@staticmethod

def get_sex(cls):

return 'man'

@classmethod

def get_name(cls):

return cls.name

@classmethod

def set_name(cls,name):

cls.name = name

l1 = Leader()

print(l1.get_name()) # leader

print(Leader.get_name()) # leader

l1.set_name('vice leader')

print(l1.get_name()) # vice leader

print(Leader.get_name()) # vice leader

print(l1.get_age(Leader,99)) # 99 必须要有cls 参数可以为类 、实例、对象

print(l1.get_age(l1,99)) # 99 如果没有cls 系统无法识别是哪一个

print(Leader.get_sex(l1)) # man

print(Leader.get_sex(Leader)) # man

print(Leader.sex) # woman

# new init

class A(object):

def init(self):

self.name = 'in' # 可以进行初始化

print(self.name)

print('init')

print(self)

def new(cls):

print('new')

print(object.new(cls) )

return object.new(cls) # 必须有返回值

A()

'''

new

<main.A object at 0x00000269AD234438>

in

init

<main.A object at 0x00000269AD234438>

'''

# 先执行 new ,之后 init ,self 是 new的实例 ,它是 init 的参数

day15 文件 文件操作

# 文件的操作

# 文件的打开 文件、二进制文件

# 文件的读取的方式

# r , w, a, r++ , w++ ,

# rb , wb , ab , a+ ,a+ , rb+ , wb+ , ab+

import os # 文件处理模块

file = open('day15.txt', 'r')

if file != EOFError:

print('open successfully')

else:

print('defeated')

# file.write('\n I love python ,hello c++') # 写入数据 write()

data = file.read(6) # read() 最多读取 6 个 数据

print(data)

da1 = file.read() # 从上次读取的位置继续读取

print(da1)

da2 = file.readlines()

print(type(da2))

print(da2)

file.close()

# old file copy to the new file

old_file_name = input('The name : ') + '.txt'

old_file = open(old_file_name,'rb')

name_num = old_file_name.rfind('.') # suffix_num

if name_num > 0:

name_suffix = old_file_name[name_num]

new_file_name = old_file_name[:name_num] + '[****副本] '+ name_suffix

# new file

new_file = open(new_file_name,'wb')

for line in old_file.readlines():

new_file.write(line)

old_file.close()

new_file.close()

os.mkdir('****文档day_15') # 创建文件夹

print(os.getcwd()) # D:\pycharm\file\day_01 获取当前目录

print(os.chdir('../')) # None 改变默认目录

print(os.listdir('./'))

# ['basic', 'day_01', 'pca', 'PCA_for_date', 'SVD_for_image']

# 获取目录列表

# os.rmdir('D:/pycharm/file/day_01/day_15.py/文档day_15')

os.os.remove('old.txt') # 删除 remove() new.txt == path

os.os.remove('new.txt') # 删除 remove() new.txt == path

file1 = open('new.txt','wb')

print(file1) # <_io.BufferedWriter name='new.txt'>

file1.close()

file2 = open('old.txt','wb')

print(file2) # <_io.BufferedWriter name='old.txt'>

file2.close()

os.rename('new.txt','file.txt')

print(file1) # <_io.BufferedWriter name='new.txt'>

day16 文件项目

# coding = utf-8

# 简单的图书管理系统

# 定义图书列表 : 书名 、 单价、是否借出

books = [['****追风筝的人',19,0],

['****穆斯林的葬礼',29,1],

['****盗墓笔记',8,1]]

# 菜单

def menu():

while True:

print('****\n****功能模块')

print('1.****查询书籍',end=' ')

print('2.****增加书籍',end=' ')

print('3.****借出书籍',end='****\n****')

print('4.****归还书籍',end=' ')

print('5.****保存文件',end=' ')

print('6.****退出系统',end='****\n****')

choose = int(input('****请选择: '))

if choose == 1:

allbook()

elif choose == 2:

addbook()

elif choose == 3:

brrowbook()

elif choose == 4:

returnbook()

elif choose == 5:

save_file()

elif choose == 6:

print('over****\n****')

break

else:

break

# 查询所有书籍

def allbook():

print('****所有书籍 :书名 、 单价、是否借出')

count = 1

for book in books:

print([count], end=' ')

for b in book:

print(b, end=' ')

print('')

count += 1

# 检验书籍

def checkbook(name):

for book in books:

if book[0] == name:

print(book)

return book

else:

print('None')

return None

# 增加书籍

def addbook():

name = input('Enter the name')

result = checkbook(name)

if result != None:

print('book existed')

else:

price = int(input('Enter the price'))

new_book = [name,price,1]

books.append(new_book)

print('successfully')

print(new_book)

return new_book

# 借出书籍

def brrowbook():

name = input('Enter the name of the book ')

temp = checkbook(name)

if temp != None:

if temp[2] == '0':

print('book brrowed')

else:

days = int(input('Enter brrowed days '))

temp[2] = 0

print('brrowed %d days ,money %d yuan'%(days,0.5*days))

else:

print('---------')

# 归还书籍

def returnbook():

name =input('Enter the name')

result = checkbook(name)

if result == None:

print('book is not existed')

else:

if result[2] == 1:

print('book does not existed')

else:

days = int(input('days '))

y_money = result[2]*days

print('****借出%d 天,金额 %d 元'%(days,y_money))

while True:

money= int(input('price'))

if money < y_money:

print('more ')

else:

break

if money >= y_money:

print('****找零:%d'%(money -y_money))

result[2] == 1

print('successfully')

# 保存文件

def save_file():

f = open('book_info.txt','w')

f.write(str(books))

f.close()

print('finished')

if name == 'main':

menu()

day17 异常、模块 、导入、测试

# coding = utf-8

#异常、模块

# open('ahdu.txt','r')

# FileNotFoundError: [Errno 2] No such file or directory: 'ahdu.txt'

# 以上为异常 在控制台会报错

try: # 获取异常 try

open('adhj.txt','r')

except FileNotFoundError: #异常代码 处理关键字 except

print('errors')

pass

# errors

# except 处理相应的错误 上面的是处理 FileNoFoundError 文件没有发现的错误

# 可以捕获多个错误

try:

open('abc.txt','r')

print(a) # 没有定义 ,nameerror错误

except(FileNotFoundError,NameError):

print('hello python') #hello python

pass

# 不会报错

try:

open('a.txt','r')

print(a)

except(FileNotFoundError,NameError) as e:

print(e)

# [Errno 2] No such file or directory: 'a.txt'

# 只会出现一个问题 本来只为两个问题

try:

open('b.txt','r')

print(b)

except Exception as f:

print(f)

pass

# [Errno 2] No such file or directory: 'b.txt'

# 第一个就会截止

# try...except...else...finally..

# finally 无论最后的结果,最后的都会执行finally...

# 异常的传递

import time

try:

file = open('old.txt','r')

try:

while True:

data = file.readline() # 按照每行读取数据

if(len(data)) == 0:

print('****没有数据')

break

#time.sleep(5) # 停留 5 秒

print(data) # 打印 old.txt 中的数据

except Exception as e:

print(e)

else:

print('No errors') # No errors

finally:

file.close()

print('closed successfully') # closed successfully

except:

print('****没有文件')

pass

# 函数嵌套调用中

def func1():

print(num) # NameError

def func2():

func1()

def func3():

try:

func1()

except Exception as e:

print(e) # name 'num' is not define

print('func3')

func3()

# 抛出自定义的异常

class TestException(Exception):

def init(self,length,least):

self.length = length

self.least = least

def main(self):

try:

n =input('Enter ')

if int(n) < 9:

raise TestException(int(n),9) # raise 引发错误

except TestException as e:

print('TestException : input %d ,at least %d'%(e.length,e.least))

else:

print('****没有异常')

test = TestException(1,8) # 至少 与 至多

test.main()

# 没有异常 Enter 11

# TestException : input 7 ,at least 9

# TestException : input 4 ,at least 9

# 异常处理中抛出异常

class Test(object):

def init(self,on_off):

self.on_off = on_off

def oper(self,x,y):

try:

return x/y

except Exception as e:

if self.on_off:

print('****捕获到异常')

print(e)

else:

# raise # 重新触发异常

print('-----over-----')

t1 = Test(True)

t1.oper(5,0) # division by zero

t1.on_off = False

t1.oper(55,0) # -----over-----

# 模块介绍

# 模块 自定义模块

# 导入模块

import math # *导入 math 模块 == from math import **

from math import * # 导入 math 模块

from math import sqrt # 导入 math模块中的sqrt函数

# 定位模块

# 默认路径 /user/local/lib/Python

# 自定义模块

'''

def add(x,y):

return x+y

# 调试模块

result = add(10,20)

print(result) # 30

# 选择性调试

if name == 'main':

result = add(20, 20)

print(result) # 30

'''

import add # 导入自定义的 add.py 模块 中的所有函数

result = add.add(20,30)

print(result) # 50 # 30 为测试的数据

# 没有选择测试的内容

# if name == 'main': 的部分没有 显示出来 40

day18 if、while 基础 内容

# coding = utf-8

# 简单的囚徒困境

# 两个犯人, 1、 都认罪 ,10年 ;2、一人认罪一人不认 认罪1年,抵赖 20 年;3、都抵赖 ,3 年;

count = 0

while count < 4:

a = int(input('A :****认罪 1 ,抵赖 0 : '))

b = int(input('B :****认罪 1 ,抵赖 0 : '))

if a == 1 and b ==1:

result = 10

print('A:%d y B:%d y'%(result,result))

elif a==1 and b ==0:

result1 = 1

result2 = 20

print('A:%d y B:%d y'%(result1,result2))

elif a==0 and b ==1:

result1 = 20

result2 = 1

print('A:%d y B:%d y'%(result1,result2))

else:

result = 3

print('A:%d y B:%d y'%(result,result))

count += 1

# 一般的内容为四个的情况比较多 犯罪的同伙越多越不稳定

# 猜拳游戏

# 使用 随机数

import random

punches = ['****石头','****剪刀','****布']

computer_choice =random.choice(punches)

user ={1:'****石头',2:'****剪刀',3:'****布'}

user_choice = None # 类型布确定

while user_choice not in user.keys():

user_choice = int(input('1****、石头 2、剪刀 3、布'))

print('computer_choice : %s user_choice :%s'%(computer_choice,user[user_choice]),end='****\n****')

if computer_choice == user[user_choice] :

print('****平局')

elif (computer_choice == '****石头' and user[user_choice] == '****剪刀') or (computer_choice == '****布' and user[user_choice] == '****石头') or (computer_choice == '****剪刀' and user[user_choice] == '****布'):

print('computer wins')

else:

print('user wins')

day19 简单模块生成二维码 手写模块

# 动态 二维码

# install myqr 模块

import MyQR

from MyQR import myqr

myqr.run(

words ='http://www.waysto.work/',# 扫码后显示的内容(链接或者其他内容)

version = 5,# 容错率

level = 'H',# L\M\Q\H 纠正水平 一次从左到右升高

picture = 'buhaore****惹惹.jpg', # 图片所在目录

colorized = True,# 黑白(False)或者 彩色(True)

contrast = 1.0, # 对比度 默认1.0 原始图片

brightness = 1.0,# 用来调节图片的亮度

save_name = 'python1.png', # 图片格式 .jpg .png .bmp .gif

)

print('finished') # finished

day20 类的基础

# 类的创建 调用

# 一个系统 录入信息和 打印信息

# Key Performance Indicator :KPI

#coding = utf-8

class System(object):

name = ''

salary = 0

kpi = 0

# 修改原始的员工 属性

@classmethod

def record(cls,name,salary,kpi):

cls.name = name

cls.salary = salary

cls.kpi = kpi

# 显示员工属性的方法

@classmethod

def print_cls(cls):

print(cls.name+' '+str(cls.salary)+' '+str(cls.kpi))

@staticmethod

def kpi_test(name,kpi):

if kpi >85:

print(name+'good student',end='****\n****')

elif kpi <=85 and kpi >=75:

print(name +'ok student****\n****')

else:

print(name+'hard work \n****')

@classmethod

def kpi_name(cls):

if cls.kpi > 85:

print(cls.name + 'good student', end='****\n****')

elif cls.kpi <= 85 and cls.kpi >= 75:

print(cls.name + 'ok student****\n****')

else:

print(cls.name + 'hard work \n****')

# 员工 check

@classmethod

def check(cls):

try:

file = open('stulist.txt', 'r') # 文件读取会产生乱码的问题

try:

stulist = file.readlines()

print('****文件中的内容')

# i = 0

for stu in stulist:

print(stu,end='')

# stulist[i] = stu.splitlines()

# i += 1

print(stulist) # ['bob\n', 'tom\n', 'jerry\n']

finally:

file.close()

except Exception as e:

print(e,end=' ')

if cls.name not in stulist:

print('student 不存在 学生名单之中')

return 0

else:

print('****录入成功')

return 1

''' 测试用例

System.record('****小明',8080,89)

System.print_cls() # 小明 8080 89

hr = System()

hr.record('****红红',9090,90)

hr.print_cls() # 红红 9090 90

hr.name ='lin'

hr.record(hr.name,9090,90)

hr.print_cls() # lin 9090 90

'''

'''

System.record('****小明',8080,89)

System.print_cls() # 小明 8080 89

System.kpi_test('****小明',89) #静态方法的实例对象 引用静态方法 # 小明good student

System.kpi_name() # 小明good student

'''

'''

System.record('****小明',8080,89)

System.print_cls() # 小明 8080 89

System.check()

'''

def order(System): # object 为参数

System.record(System.name,System.salary,System.kpi)

System.print_cls()

if System.check() == 1:

System.kpi_name()

else:

print('error \n****')

if name == 'main':

hr = System()

hr.record('****红红', 9090, 90)

order(hr)

hrr =System()

hrr.record('tom****\n****',10000,90) # tom\n 没办法

order(hr)

'''

红红 9090 90

文件中的内容

bob

tom

jerry

student 不存在 学生名单之中

error

tom

10000 90

文件中的内容

bob

tom

jerry

录入成功

tom

good student

'''

存在的问题:1、 字符集 2、文件读取数据过程中的细节处理

# new stulist.txt

day21 类的继承

# 类的继承的项目

# 问卷系统

class Survey(object):

count = 1

@classmethod

def init(cls,question):

cls.question = question

cls.response = {}

def show_question(self):

print(self.question,end='****\n****')

@classmethod

def store_response(cls,new_response):

cls.response[cls.count]= new_response

cls.count +=1

print(cls.response.items())

'''

food = Survey('****你最喜欢的食物')

food.show_question()

count =0

while count <2:

answer = input('answer : ')

food.store_response(answer)

count +=1

######

test

你最喜欢的食物

answer : apple

dict_items([(1, 'apple')])

answer : pear

dict_items([(1, 'apple'), (2, 'pear')])

'''

'''

class Plus(Survey):

pass

home =Plus('****你的家乡')

home.show_question()

count =0

while count <2:

answer = input('answer : ')

home.store_response(answer)

count +=1

------------

你的家乡

answer : 安徽

dict_items([(1, '****安徽')])

answer : 河北

dict_items([(1, '****安徽'), (2, '河北')])

'''

class Plus(Survey):

question_list =['1****、你的名字','2****、你的年龄','3****、你的学历']

count =0

def init(self):

self.response = {}

for item in self.question_list:

print(item,end='****\n****')

def store_response(self,new_response):

self.response[self.question_list[self.count]] = new_response

self.count +=1

return self.response

sets = Plus()

count =0

while count <len(sets.question_list):

answer = input('%d : answer : ' %(count+1))

a= sets.store_response(answer)

count +=1

print(a.items())

'''

1****、你的名字

2****、你的年龄

3****、你的学历

1 : answer :

2 : answer : 12

3 : answer : 本科

dict_items([('1****、你的名字', '林'), ('2、你的年龄', '12'), ('3、你的学历', '本科')]

'''

第二部分

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

day22

相关文章

网友评论

      本文标题:python 最基础部分代码入门

      本文链接:https://www.haomeiwen.com/subject/fcrryrtx.html