我的Python足迹

print("hello word!")
#1.整数与浮点
print(123)
print(123-321)
print(0.1+0.2)
#变量
长=10
宽=5
高=2
底面积=长*宽
体积=底面积*高
print(底面积)
print(体积)
#2.字符串,列表,元组
#a字符串
string_1='我是一个字符串'
string_2=''#空字符串
#b列表(list)是python的容器之一,由方括号和方括号括起来的数据构成
list_1=[1,2,3,4,5]
list_2=['a','b','','kk']
list_3=[123,'abc',45,[1,2,'xx']]#也可由多种元素组合起来的列表
#c元组(tuple)是python的容器之一,由小括号和小括号括起来的数据构成
tuple_1=[1,2,3,4,5]
tuple_2=['a','b','','kk']
tuple_3=[123,'abc',45,[1,2,'xx']]#也可由多种元素组合起来的元组
#元组与列表的区别:列表生成以后还可以往里面继续添加数据,也可以删除数据;但是tuple一旦生成就不能修改。
#3.数据的读取
# a指定下下标从0开始
example_string ='我是字符串'
example_list=['我','是','列表']
example_tuple=('我','是','元组')
print(example_string[0])#我
print(example_list[1])#是
print(example_tuple[2])#元组
print(example_tuple[-1])#元组   -1表示最后一个元素以此类推
#b切片操作切了以后还是它自己 格式  变量名[开始位置下标:结束位置下标:步长]
print(example_string[1:3])#读取下标为1和为2的字符
print(example_string[1])#是
print(example_string[2])#字
print(example_string[1:])#读取下标为1的元素和它后面的元素
print(example_string[:3])#读取下标为0,1,2和3的元素
print(example_string[:-1])#取-1表示倒序读取
#c拼接与修改
#c_1字符串与字符串拼接
string_1='你好'
string_2='世界'
string_3=string_1+string_2
print(string_3)
#c_2元组与元组
tuple_1=('abc','exo')
tuple_2=('哇哇哇哇','哈哈哈')
tuple_3=tuple_1+tuple_2
print(tuple_3)#('abc', 'exo', '哇哇哇哇', '哈哈哈')
#c_3列表与列表
list_1=['abc','exo']
list_2=['哇哇哇哇','哈哈哈']#['abc', 'exo', '哇哇哇哇', '哈哈哈']
list_3=list_1+list_2
print(list_3)
#可通过列表的下表修改值  变量名[下标]=新的值
existd_list=[1,2,34,45]
existd_list[1]='new'
print(existd_list)
#列表还可以单独在末尾添加元素
list_4=['python','爬虫']
print(list_4)#['python', '爬虫']
list_4.append('----')
print(list_4)#['python', '爬虫', '----']
list_4.append('酷')
print(list_4)#['python', '爬虫', '----', '酷']
#元组和字符串不能添加新的内容
#4.字典与集合
#a字典就是使用大括号括起来的键(key)值(value)对(key-value对)
dict_1={'superman':'超人内裤外穿','天才':'99%的努力加汗水','xx':0,118:'118是正确答案'}
#可以通过key来读取value a:变量名[key] b:变量名.get(key) c:变量名.get(key,'再找不到key的情况下使用这个值')
example_dict={'superman':'超人内裤外穿','天才':'99%的努力加汗水','xx':0,118:'118是正确答案'}
print(example_dict['天才'])#99%的努力加汗水
print(example_dict.get(118))#118是正确答案
print(example_dict.get('不存在的key'))#None
print(example_dict.get('不存在的key','没有'))#没有
#使用get来读取,如果get只有一个参数,那么在找不到Key的情况下会得到“None”;如果get有两个参数,那么在找不到Key的情况下,会返回第2个参数。
#修改key  变量名[key]='新的值'
existed_dict={'a':123,'b':'爽歪歪'}
print(existed_dict)#{'a': 123, 'b': '爽歪歪'}
existed_dict['b']='我修改了b'
print(existed_dict)#{'a': 123, 'b': '我修改了b'}
existed_dict['c']='我是新来的'
print(existed_dict)#{'a': 123, 'b': '我修改了b', 'c': '我是新来的'}
#b.集合  集合最大的应用之一就是去重。例如,把一个带有重复元素的列表先转换为集合,再转换回列表,那么重复元素就只会保留一个
example_set={1,2,3,'a','b','c'}
duplicated_list={2,2,34,5,54,11,11,'a','a','s'}
unique_list=list(set(duplicated_list)) #使用set()函数把列表转为集合
print(unique_list)#[2, 34, 'a', 5, 54, 's', 11]  注:由于集合与字典一样,里面的值没有顺序,因此使用集合来去重是有代价的,代价就是原来列表的顺序也会被改变。
#5.条件语句
#a.if语句
a=1
b=2
if a+b==3:print('答案正确') #答案正确
print('以后的代码与以上if无关')#以后的代码与以上if无关
#and or 连接表达式
if 1+1==2 and 2+2==4:print('答案正确')
if  1+1==3 or 3+3==6:print('答案正确')
#b.短路效应
# (1)在使用and连接的多个表达式中,只要有一个表达式不为真,那么后面的表达式就不会执行。
# name_list=[]
# if nmae_list and name_list=='张三':
#     print('ok')
# (2)在使用or连接的多个表达式中,只要有一个表达式为真,那么后面的表达式就不会执行。
# if 1+1==2 or 2+'a'==3 or 1+1==3:
#     print('ok')#c.多重条件判断
# 对于多重条件的判断,需要使用“if...elif...else...”。其中,“elif”可以有0个,也可以有多个,但是else只能有0个或者1个。
answer=2
if answer==2:print('true')
else:print('false')
name='酱鸭饭'
if name=='酱鸭饭':print('12元')
elif name =='回锅肉':print('15元')
elif name=='米饭':print('1元')
elif name=='鸡汤':print('免费')
else: print('换个店试试')# if state=='start':
#     code=1
# elif state=='running':
#     code=2
# elif state=='offline':
#     code=3
# elif state=='unknow':
#     code=4
# else: code=5#
# state_dict={'start':1,'running':2,'offlin':3,'unknow':4}
# code=state_dict.get(state,5)
'''----day02'''
#1.函数与类
#a.def定义函数 def函数名(参数1,参数2)……return返回值
def func_example_1():a=1+1return ab=2+2 #同一个函数中return后的代码不会被执行print(b)
#b.调用函数
def get_input(): #得到用户输入的数据input_string =input('请输入由的逗号分隔的两个非零整数:')a_string,b_string=input_string.split(',')return int (a_string),int(b_string)
def calc(a,b):  #计算两个数的和差积商sum_a_b=a+bdifference_a_b=a-bproduct_a_b=a*bquotient=a/breturn {'sum':sum_a_b,'diff':difference_a_b,'pro':product_a_b,'quo':quotient}
def output(result):   #将结果打印出来print ('两数的和:{}'.format(result['sum']))print('两数的差:{}'.format(result['diff']))print('两数的商:{}'.format(result['quo']))print('两数的积:{}'.format(result['pro']))
# a_int,b_int=get_input()
# result_dict=calc(a_int,b_int)
# output(result_dict)
# def run():
#     a,b=get_input()
#     result=calc(a,b)
#     output(result)
# run()
# def get_input(split_char): #得到用户输入的数据
#     input_string =input('请输入由的{}分隔的两个非零整数:'.format(split_char))
#     a_string,b_string=input_string.split(split_char)
#     return int (a_string),int(b_string)
# a,b=get_input('#')
# print ('第一个数:{},第二个数:{}'.format(a,b))

正则表达式&文件操作


#3.1正则表达式 正则表达式是提取信息的方法之一。
#正则表达式的基本符号
#1.点号“.” 一个点号可以代替除了换行符以外的任何一个字符
#2.星号“*” 一个星号可以表示它前面的一个子表达式(普通字符、另一个或几个正则表达式符号)0次到无限次
#3.问号"?" 问号表示它前面的子表达式0次或者1次
#4.反斜杠“\” 反斜杠在正则表达式里面不能单独使用,甚至在整个Python里都不能单独使用。反斜杠需要和其他的字符配合使用来把特殊符号变成普通符号,把普通符号变成特殊符号
#5.数字"\d" 正则表达式里面使用“\d”来表示一位数字。为什么要用字母d呢?因为d是英文“digital(数字)”的首字母
#6.小括号"()" 小括号可以把括号里面的内容提取出来。
#3.2使用正则表达式
# 1.findall Python的正则表达式模块名字为“re”,也就是“regular expression”的首字母缩写。在Python中需要首先导入这个模块再进行使用
import  re #Python的正则表达式模块包含一个findall方法,它能够以列表的形式返回所有满足要求的字符串
content='我的微信密码是:123456,QQ密码是:34643768abc,支付宝密码是:88888888,帮我记住密码'
password_list=re.findall(':(.*?),',content)
print('找到密码{}'.format(password_list))
#re.findall(pattern,string ,flags=0) #pattern表示正则表达式,string表示原来的字符串,flags表示一些特殊功能的标志
#2.search search()的用法和findall()的用法一样
#3.“.*”和“.*? ”的区别
# ①“.*”:贪婪模式,获取最长的满足条件的字符串。
# ②“.*? ”:非贪婪模式,获取最短的能满足条件的字符串。
#3.3正则表达式提取
#1.不需要compile
#2.先抓大再抓小
big_small_text='''
有效用户:
姓名:张三
姓名:李四
姓名:王五
无效用户:
姓名:小爱同学
姓名:小i的爹
'''
# user=re.findall('姓名:(.*?)\n',big_small_text)
# print(user)
user_big=re.findall('有效用户(.*?)无效用户',big_small_text,re.S)
print('user_big:{}'.format(user_big))
user_userful=re.findall('姓名:(.*?)\n',user_big[0])
print('有效用户:{}'.format(user_userful))
#3.括号内和括号外 括号限制提取的内容部分
#3.2Python文件操作
#1.使用Python读取文本文件
# with open ('text.txt',encoding='utf—8') as f:
#       content_list=f.readlines()
#       #readlines读取所有行,
#       # 并以列表的形式返回结果
#       # #read 直接把文件里面的全部内容用一个字符串返回
#       print(content_list)
#2.使用Python写文本文件
with open('new.txt','w',encoding='utf-8') as f:#w是英文write的首字母,意思是以写的方式打开文件。这个参数除了为“w”外,还可以为“a”。# 它们的区别在于,如果原来已经有一个new.txt文件了,使用“w”会覆盖原来的文件,# 导致原来的内容丢失;而使用“a”,则会把新的内容写到原来的文件末尾f.write('你好')f.write('\n==================\n')f.write('嘿嘿,跟我学爬虫')a = 21
b = 10
c = 0
c = a + b
print (ord('乘'))
print(chr(20056))
name='乐呵呵'
print(name)
a=1.1
b=2.2print(a+b)
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))
f1=False
f2=True
print(f1,type(f1))name='张三'
age=20
print('我叫'+name+'今年'+str(age))
#------将其他类型转为int型-------
# a_1=123
# print(int(a_1),type(a_1))
# a_2='1234.4'
# # print(int(a_2),type(a_2))
# a_2_1='1234'
# print(int(a_2_1),type(a_2_1))
# a_3='hello'
# # print(int(a_3),type(a_3))
# a_4=True
# print(int(a_4),type(a_4))
# a_5=123.345
# print(int(a_5),type(a_5))
# # print(a_1,type(a_1),a_2,type(a_2),a_3,type(a_3),a_4,type(a_4),a_5,type(a_5))
# print('第一个数:')
# num_1=input()
# print('第二个数:')
# num_2=input()
# print(int(num_1)+int(num_2))#解包赋值
n,b,l=2,1,5
print(n,b,l)
#交换
n,b=b,n
print(n,b,l)#-------------------
'''双分支结构'''
# print("输入一个数")
# a=int(input())
# if a%2==0:
#     print(a,'偶数')
# else:
#     print(a,'奇数')
'''多分支结构
90-100 A
80-89  B
70-79  C
60-69  D
0-59   E
小于0或大于100为非法数据
'''
# score=float(input('请输入成绩'))
# if score<=100 and score>=90:
#     print('A')
# elif 80<=score<=89:
#     print('B')
# elif 70<=score<=79:
#     print('C')
# elif 60<=score<=69:
#     print('D')
# elif 0<=score<=59:
#     print('E')
# else:
#     print('非法数据')
# '''从键盘输入两个数比较大小'''
# num_1=int(input('第一个数:'))
# num_2=int(input('第二个数:'))
# if num_1 >= num_2:
#     print(num_1,'大于等于',num_2)
# else:
#     print(str(num_1)+'小于'+str(num_2))
#-----使用条件表达式比较
# print((str(num_1)+'大于等于'+str(num_2)) if num_1>=num_2 else str(num_1)+'小于'+str(num_2) )
#-----pass占位符
age=int(input('请输入年龄:'))
if age:print('年龄',age)
else:print('不能为零')

Python中的循环结构

#          ----range的三种创建方式'''第一种创建方式,只有一个参数'''
r=range(10)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],默认从0开始,默认相差1称为步长
print(r)#range(0, 10)
print(list(r))#用于查看range中的整数序列'''第二种创建方式,给了两个参数'''
r=range(1,10)
print(list(r))#[1, 2, 3, 4, 5, 6, 7, 8, 9]'''第三种创建方式,给了三个参数'''
r=range(1,10,2) #range(start,stop,step)
print(list(r))#[1, 3, 5, 7, 9]
print(10 in r)
print(10 not in r)'''循环结构'''
'''while循环的执行流程
初始化变量
条件判断
条件执行体
改变变量'''
#计算1-5的和
sum=0 #用于存储累加和
''' 初始化变量'''
a=0
'''条件判断 '''
while a<=5:'''循环体'''sum+=a'''改变变量'''a+=1
print('和',sum)'''计算1-100之间的偶数和'''
'''while循环'''
sum=0
a=0
while a<=100 :if not bool (a%2):sum+=aa+=1
print('和',sum)'''for循环'''
sum=0
for i in range(0,101,2):# if  not bool(i%2):# print(i)sum+=i
print(sum)'''100-999之间的水仙花数'''
for i  in range(100,1000):ge=i%10shi=i//10%10bai=i//100if  ge**3+bai**3+shi**3==i:print("水仙花数",i)'''打印矩形'''
for item in range(3):#行数for j in range(4):print('*',end='\t') #不换行print() #打行
'''打九九乘法表'''
for i in range(1,10):for j in range(1,i+1):print(str(j)+'*'+str(i)+'='+str(i*j),end='\t')print()

列表

a=10
lst=['hello','world',100]
print(id(lst))
print(type(lst))
print(lst)
'''创建列表的第一种方式,使用[]'''
lst=['hello','world',100]
'''创建列表的第二种方式,使用内置函数list()'''
lst2=list(['hello','world',98])
print('添加元素前',id(lst2),lst2)
'''向列表里添加元素'''
lst2.append(886) #向列表的末尾添加一个元素
print('添加元素后',id(lst2),lst2) #添加前后标识列不变
#lst2.append(lst) #将lst作为一个元素添加到列表的末尾
lst2.extend(lst) #向列表的末尾添加多个元素
print(lst2)
lst2.insert(1,666)#任意位置添加一个元素
print(lst2)
lst2[1:]=lst #切片 在列表的任意位置添加至少一个元素
print(lst2)
'''向列表删除元素'''
lst=[10,20,30,40,50,60,100]
lst.remove(20)#从列表中移除一个元素,如果不存在会报错
print(lst)
lst.pop(1) #pop()根据索引移除元素
lst.pop() #如果不指定参数移除最后一个元素
print(lst)print('-----切片操作——删除至少一个元素,将产生一个新的列表对象------')
new_list=lst[1:3]
print('原列表',lst)
print('新列表',new_list)
'''直接删除'''
lst[1:3]=[]
print(lst)
'''清除列表中的所有元素'''
lst.clear()
print(lst)
'''del将列表直接删除'''
del lst
#print(lst) #lst' is not defined(defined 定义)'''列表元素的排序操作'''
lst_1=[100,23,67,89,66,889,907]
print('对排序',lst_1)
lst_1.sort()#默认升序
print(lst_1)
lst_1.sort(reverse=True) #降序
print(lst_1)print('------使用内置函数sorted()对列表进行排序--------')lst_1=[100,23,67,89,66,889,907]
print('原列表',lst_1)
#开始排序
new_list_1=sorted(lst_1)
print(lst_1)
print(new_list_1)
#降序
new_list_1=sorted(lst_1,reverse=True)
print(lst_1)
print(new_list_1)

字典的创建方式

'''使用{}创建字典'''
score={'张三':100,'李四':98,'王五':66}
print(score)
'''第二种创建dict()'''
student=dict(name='张三',score=99)
print(student)
'''空字典'''
d={}
print(d)
'''获取字典的元素'''
print(score['张三'])
print(score.get('成六',99))
#判断存在
print('张三' in score) #True
print('张三'  not in score) #False
#删除
del score['张三']
print(score)
#新增
score['老八']=99
print(score)
#修改
score['老八']=123
print(score)
#打包
items=['Fruits','Books','Others']
prices=[96,87,66,200]
d={item.upper():price   for item ,price in zip(items,prices) }
print(d)

集合


s1={1,2,3,4,5,6,7}
s2={7,6,5,4,3,2,1}
s2=set({7,6,5,4,3,2,1})
print(s1!=s2) #两个集合是否相等
s3={1,2,3,4,5}
s4={1,2,3,4}
print(s4.issubset(s3)) #s4是s3的子集
print(s3.issuperset(s4)) #s3是s4的超集
print(s3.isdisjoint(s1)) #是否存不在交集
'''集合的数学操作'''
s_1={1,2,3,4,5}
s_2={2,3,4,5,6,7}
print(s_1.intersection(s_2))
print(s_1 & s_2) #交集操作print(s_1.union(s_2))
print(s_1 | s_2) #并集操作print(s_2.difference(s_1))
print(s_2-s_1) #差集print(s_1.symmetric_difference(s_2))
print(s_1^s_2) #对称差集

字符串的常用操作集合

'''字符串的查询操作'''
s='hello,hello'
print(s.index('lo')) #3
print(s.find('lo'))#3
print(s.rindex('lo'))#9
print(s.rfind('lo'))#9#print(s.index('k')) #ValueError: substring not found
print(s.find('k')) #-1
#print(s.rindex('k')) #ValueError: substring not found
print(s.rfind('k')) #-1'''字符串的大小写转化操作'''
s='Hello Python'
print(s.upper())#HELLO PYTHON
print(s.lower())#hello python
print(s.swapcase())#hELLO pYTHON 反转字符串中的大小写
print(s.capitalize())#Hello python 首字母大写
print(s.title())#Hello Python'''字符串内容对齐操作'''
s='hello,python'
'''居中对齐'''
print(s.center(20,'#'))####hello,python####
'''左对齐'''
print(s.ljust(20,'*'))#hello,python********
print(s.ljust(20))
'''右对齐'''
print(s.rjust(20,'#'))
print(s.rjust(20)) #        hello,python'''右对齐,使用0进行填充'''
print(s.zfill(20))
print(s.zfill(10))
print('-8910'.zfill(8))'''字符串的分割'''
s='hello world python'
lst=s.split()
print(lst) #['hello', 'world', 'python']
s_1='hello|world|python'
print(s_1.split(sep='|')) #['hello', 'world', 'python']
print(s_1.split(sep='|',maxsplit=1)) #['hello', 'world|python']print('''rsplit()从右侧开始辟分''')
print(s.rsplit())
print(s_1.rsplit('|'))
print(s_1.rsplit(sep='|',maxsplit=1)) #['hello|world', 'python']'''判断字符串操作'''
s='hello,python'
'''isidentifier()判断字符串是否合法'''
print('1.',s.isidentifier()) # False
print('2.','hello'.isidentifier()) # False
print('3.','张三_123'.isidentifier()) #True
'''isspace()判断字符串是否全部由空白字符组成'''
print('5.','\t'.isspace()) #True
'''isalpha()判断字符串是否全部由字母组成'''
print('6.','abc'.isalpha())#True
'''isdecimal()判断字符串是否全部由十进制的数字组成'''
print('7.','145'.isdecimal())#True
'''isnumeric()判断字符串是否全部由数字组成'''
print('8.','12345六'.isnumeric())#True
'''isalnum()判断字符串是否全部由字母和数字组成'''
print('9.','12345六张三'.isalnum())#True'''字符串操作的其他方法'''
'''字符串替换replace()'''
s='hello,python'
print(s.replace('python','c#')) #hello c#
s_1='hello,python,python,python'
print(s_1.replace('python','c#',2)) #hello,c#,c#,python
'''字符串的合并join()'''
lst=['hello','java','c']
print('|'.join(lst)) #hello|java|c
print(''.join(lst)) #hellojavac
t=('hello','java','c')
print(''.join(t))#hellojavac
print('*'.join('hello'))#h*e*l*l*o

字符串的比较操作 &字符串的切片

print('apple'>'app') #True
print('apple'>'banana') #False
print(ord('a'),ord('c')) #97 99print(chr(97),chr(98)) #a b'''==与is的区别
==比较的是 value
is比较的是id'''
a=b='python'
c='python'
print(a is c) #True
print(a==c) #True'''字符串的切片'''
s='hello,python'
s_1=s[:5]
s_2=s[6:]
print(s_1)
print(s_2)
s_3='!'
print(s_1+s_3+s_2)

格式化字符串

#1.%占位符
name='张三'
age=20
print('我叫%s,今年%d'%(name,age)) #%s字符串 %i或%d整数 %f浮点数
#2.{}占位符
print('我叫{0},今年{1}岁'.format(name,age))
#3.f-string
print(f'我叫{name},今年{age}')print('%10d' % 99) #        99 10表示宽度
print('%.3f' %3.1415926) #3.142 3表示小数点后三位
print('%10.3f' %3.1415926) #     3.142 一共总宽度为10 ,小数点后3位
print('hellohello')print('{0:.3}'.format(3.1415926)) #3.14   .3表示的是一共是3位小数
print('{:.3f}'.format(3.1415926)) #3.142   .3f表示是3位小数
print('{:10.3f}'.format(3.1415926)) #     3.142  同时设置宽度和精度,一共是10位,3位小数

字符串的编码


s='天涯共此时'
print(s.encode(encoding='GBK'))#在GBK这种编码格式中一个中文占两个字节
print(s.encode(encoding='UTF-8'))#在UTF-8中一个中文占三个字节
#解码
#byte代表就是一个二进制数据
byte=s.encode(encoding='GBK') #编码
print(byte.decode(encoding='GBK')) #解码byte=s.encode(encoding='UTF-8')
print(byte.decode(encoding='UTF-8'))

函数

'''函数的创建和调用'''
def calc(a,b):c=a+breturn c
result=calc(10,29)
print(result)'''函数参数传递的内存分析'''
def fun(arg1,arg2):print('arg1',arg1) #11print('arg2',arg2) #[22, 33, 44]arg1=100arg2.append(10)print('arg1',arg1) #100print('arg2',arg2) #[22, 33, 44, 10]
n1=11
n2=[22,33,44]
fun(n1,n2)
print(n1,n2) #11 [22, 33, 44, 10]
'''在函数调用过程中,进行参数的传递
如果是不可变对象,在函数体的修改不会影响实参的值 arg1的值修改为100,不会影响n1的值
如果是可变对象,在函数体的修改会影响到实参的值 arg2的修改,append(10)会影响n2的值''''''函数的返回'''
def fun(num):odd=[]even=[]for i in num:if i%2:odd.append(i)else:even.append(i)return odd,even'''函数的调用'''
lst=[1,2,3,4,5,6,7,8]
print(fun(lst)) #([1, 3, 5, 7], [2, 4, 6, 8])'''函数的返回值
(1)如果函数没有返回值 return 可以不写
(2)函数的返回值,如果是一个,直接返回类型
(3)函数的返回值,如果是多个,返回的结果为元组
'''
print('-----')
'''函数参数定义'''
def fun(a,b=10): #b为默认值参数print(a,b)
#函数的调用
fun(100) #100 10
fun(10,200) #10 200print('hello',end='\t')
print('python')'''个数可变的位置参数'''
def fun(*args): #函数定义时的  可变的位置参数print(args)
fun(10)#(10,)
fun(10,30)#(10, 30)def fun1(**args):print(args)
fun1(a=10)#{'a': 10}
fun1(a=20,c=30)#{'a': 20, 'c': 30}
def num(a,b,c):print('a',a)print('b',b)print('c',c)num(1,2,3)lis=[11,22,33]
num(*lis)#在调用时,将列表中的每一个元素都转化为位置实参传入
dic={'a':100,'b':200,'c':300}
num(**dic)#在调用时,将字典中的键值对都转化为关键字实参#变量的作用域
def fun(a,b):c=a+b #c,就称为局部变量print(c)
name='张三' #name,全局变量
print(name)
def fun():print(name)
fun()

递归函数


def fac(n):if n==1:return 1else:return n*fac(n-1)
print(fac(6)) #720
'''斐波那契'''
def fib(n):if n==1 or  n==2 :return 1else:return fib(n-1)+fib(n-2)
print(fib(6)) #8'''输出前6项'''
for i in range(1,7):print('第',i,'项:',fib(i))'''第 1 项: 1
第 2 项: 1
第 3 项: 2
第 4 项: 3
第 5 项: 5
第 6 项: 8'''
'''类的创建'''
class Student:native_pace='吉林' #类属性def __init__(self,name,age):self.name=name #self.name 称为实体属性, 进行一个赋值的操作,将局部变量的name的值赋给实体属性self.age=age#实例方法def eat(self):print(self.name,'吃饭')#静态方法@staticmethoddef method():print('我是静态方法,用@staticmethod修饰')#类方法@classmethoddef cm(cls):print('我是类方法,用@classmethod修饰')
#在类之外定义的称为函数,在类内称为方法
def drink():print('喝水')'''创建Student类的对象'''
stu_1=Student('张三',20)
stu_2=Student('李四',30)
stu_1.eat() #对象名.方法名
print(stu_1.name)print('-----------')
Student.eat(stu_1) #调用Student中的eat方法#类名.方法名(对象名)
#动态绑定数据
stu_1.gender='女'
print(stu_1.name,stu_1.age,stu_1.gender)stu_1.eat()def show():print('定义在类之外的,称函数')
stu_1.show=show
stu_1.show()stu_2.show=show()
#封装
class Student:def __init__(self, name, age,gender):self.name = name  # self.name 称为实体属性, 进行一个赋值的操作,将局部变量的name的值赋给实体属性self.age = ageself.__gender=gender #性别不希望在类的外部被使用,所以加__def show(self):print(self.name,self.age,self.__gender)
stu=Student('张三',20,'男')
stu.show() #张三 20 男print(dir(stu)) #['_Student__gender', '__class__', '__delattr_
print(stu._Student__gender) #男#继承
class Person(object):def __init__(self,name,age):self.name=nameself.age=agedef info(self):print(self.name,self.age)class Student(Person):def __init__(self,name,age,stu_no):super().__init__(name,age)self.stu_no=stu_nodef info(self): #重写super().info()print(self.stu_no)class Teacher(Person):def __init__(self,name,age,teacher_no):super().__init__(name,age)self.teacher_no=teacher_nodef info(self):super().info()print(self.teacher_no)
stu=Student('张三',20,'1026')
teach=Teacher('李四',34,'001')print('----')
stu.info()
print('-----')
teach.info()
class Student:def __init__(self,name,age):self.name=nameself.age=agedef __str__(self):return '我的名字是{0},今年{1}岁'.format(self.name,self.age)stu=Student('张三',20)
print(dir(stu))
print(stu) #我的名字是张三,今年20岁   默认调用__str__
print(type(stu)) #<class '__main__.Student'>class Animal(object):def eat(self):print('动物会吃')
class Dog(Animal):def eat(self):print('狗吃肉')
class Cat(Animal):def eat(self):print('猫吃鱼')class Person:def eat(self):print('人吃五谷杂粮')#定义一个函数
def fun(obj):obj.eat()#开始调用函数
fun(Cat())
fun(Dog())
fun(Animal())print('---')
fun(Person())

花了2万多买的Python教程全套,现在分享给大家……Python入门到精通(Python全栈开发教程)未完待续相关推荐

  1. 收藏!最详细的Python全栈开发指南 看完这篇你还不会Python全栈开发 你来打我!!!

    Python Web全栈开发入门实战教程教程    大家好,我叫亓官劼(qí guān jié ),这个<Python Web全栈开发入门实战教程教程>是一个零基础的实战教程,手把手带你开 ...

  2. Python全栈开发教程笔记

    本文档基于B站Python教程 一.print()函数 1. 可以输出数字 print(520) print(98.5) 2. 可以输出字符串 print('hello world') print(& ...

  3. Python全栈开发教程——002

    集成开发环境Pycharm的安装及设置模板 使用交互开发环境和自带的IDLE开发环境编写代码并不是一项长期的解决方案.通常,我们会使用第三方开发环境Python.您可以打开Pitam安装教程网址,选择 ...

  4. python爬虫requests源码链家_python爬虫——爬取链家房价信息(未完待续)

    爬取链家房价信息(未完待续) items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # ...

  5. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的 ...

  6. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 1)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第一讲 博主博客文章内容导航(实时更新) 更多优质文章推荐: 收藏!最详细的P ...

  7. termux pythonlxml安装_将安卓手机打造成你的python全栈开发利器

    原标题:将安卓手机打造成你的python全栈开发利器 超神利器 相信多数安卓用户都使用过Qpython这款移动端的Python编辑器吧?之前我也研究过一阵子这个工具,但因为一次简单的爬虫让我对它失望之 ...

  8. python 全栈开发,Day106(结算中心(详细),立即支付)

    python 全栈开发,Day106(结算中心(详细),立即支付) 昨日内容回顾 1. 为什么要开发路飞学城?提供在线教育的学成率:特色:学,看视频,单独录制增加趣味性.练,练习题改,改学生代码管,管 ...

  9. python 全栈开发之路 day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

最新文章

  1. php远程开机ubuntu,Ubuntu系统远程开机操作实例
  2. linux -- supervitord怎么杀出主进程派生出来的子进程。
  3. Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程
  4. 【Vue2.0】—解决页面闪烁的问题(八)
  5. 商业认知,市场总是不按常理出牌
  6. Java SE 正则表达式 API Pattern 与 Matcher.
  7. AE 2021最新最全插件滤镜大全一键安装版下载 After Effects 2021插件合集WIN一键安装版 支持AE 2021
  8. kb931125—rootsupd_kb931125-rootsupd补丁下载
  9. 基于matlab和proe的曲面建模,两个基础曲面建模实例教你Proe曲面建模技巧和思路...
  10. mysql 启动 配置文件,mysql启动服务配置文件编写
  11. c语言十全十美游戏规则,十全十美游戏
  12. conda虚拟环境下使用pip安装包报错Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)
  13. 物联网的发展需要五个阶段,具体是这样划分的
  14. Create Associations
  15. Watershed segmentation 分水岭分割
  16. 第五讲 二维费用的背包问题 HD FATE(二维完全背包)
  17. BFS团战可以输、提莫必须死(转载)
  18. 【简书读书社】每个周末,一起来读简书电子书
  19. html5语音框架,使用Html5多媒体实现微信语音功能
  20. win10 exe打不开,被设置成浏览器打开

热门文章

  1. 每天坚持多一点,美丽就能多一点
  2. Simple Wallpaper Changer
  3. MBA案例分析: 美国西南航空的十年发展战略规划
  4. 韩信点兵(C语言实现)
  5. 大数据是什么?发展前景怎么样
  6. poj3104 Drying(二分最大化最小值 好题)
  7. 在 System.Threading.ThreadAbortException 中出现的“mscorlib.dll”类型的异常
  8. 关于VM系列振弦传感器读数模块如何连接电脑并进行配置说明
  9. OPPO Pad 评测怎么样
  10. 入手级仿真软件和编辑器安装(VIVADO)