python入门笔记(掌握一门语言的四分之一)
Posted 拖孩_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门笔记(掌握一门语言的四分之一)相关的知识,希望对你有一定的参考价值。
基础
字符串
import keyword
from operator import index
print(123) # 输出整型数值
print(12.3) # 输出浮点型数值
print(0x1011) # 输出16进制转化为十进制
print(0b1011) # 输出2进制转化为十进制
print(3 + 4) # 输出含有运算符的十进制
print("string") # 输出字符串
print('helloworld') # 输出字符串
print('hello\\rworld(over)')#回车覆盖
print(ord('家')) #返回字符码
字符串的驻留机制
'''字符串为不可变字符序列,不同的字符串存放在字符串的驻留池中
相同的字符串只保留一份拷贝,后续创建相同的字符串不会开辟新空间,而是直接引用同一个地址'''
a='python'
b="python"
c='''python'''
print(id(a))
print(id(b))
print(id(c))
'''交互模式下(cmd_python),的驻留情况
1、字符串长度为0或1
2、符合标识符(下划线,字母,数字的组合)的字符串
3、只在编译时驻留,而非运行时
4、-5到256之间的整数'''
第三种情况:
a='abc'
b='ab'+'c'
c=''.join(['ab','c'])
print(a is b)
print(a is c) #False 因为c的值是在运行时候赋值的,而非编译
a=-6
b=-6
print(a is b) #在交互式环境下显示False
强制指向同一个空间
import sys
a='abc%'
b='abc%'
print(a is b)
字符串的查询操作
a='Hello,Hello'
print(a.index('lo')) #3,第一次出现的位置,不存在抛出ValueError
print(a.find('lo')) #3,第一次出现的位置,不存在返回-1
print(a.rfind('lo')) #9,最后一次出现的位置,不存在返回-1
print(a.rindex('lo')) #9,最后一次出现的位置,不存在抛出ValueError
大小写转换方法
'''s.upper() 所有变大写
s.lower() 所有变小写
s.swapcase() 大写变小写,小写变大写
s.capitalise()首字符字母大写,其他小写
s.title() 每个单词第一个字母大写'''
print(a.upper()) #HELLO,HELLO
print(a.lower()) #hello,hello
print(a.swapcase()) #hELLO,hELLO
print(a.capitalize()) #Hello,hello
print(a.title()) #Hello,Hello
字符串内容对齐操作
'''s.center() 居中对齐,参数1:宽度,参数2:填充符(默认空格),设置宽度小于实际宽度,返回原字符串
s.ljust() 左对齐,参数1:宽度,参数2:填充符(默认空格),设置宽度小于实际宽度,返回原字符串
s.rjust() 右对齐,参数1:宽度,参数2:填充符(默认空格),设置宽度小于实际宽度,返回原字符串
s.zfill() 右对齐,左边用0填充,参数:字符串宽度,小于等于字符串宽度,返回字符串本身'''
s='hello*world*python'
print(s.center(20,'*'))
print(s.ljust(20,'*'))
print(s.rjust(20,'*'))
print(s.zfill(20))
print(s.zfill(8))
劈分操作
'''s.split() 从字符串左边开始劈分,默认劈分字符为空格,经过最大次劈分后,剩下的子式单独作为一部分。返回列表,参数:劈分符,最大劈分次数
s.rsplit() 从字符串右边开始劈分,默认劈分字符为空格,经过最大次劈分后,剩下的子式单独作为一部分。返回列表,参数:劈分符,最大劈分次数'''
print(s.split('*',1 )) #分割不同的单词
判断字符串操作
'''s.isidentifier() 判断字符串是不是合法标识符
s.isspace() 判断字符串是不是全部由空白字符(空格换行水平制表符)组成
s.isalpha() 判断字符串是不是全部由字母组成
s.isdecimal() 判断字符串是不是全部由十进制数字组成
s.isnumeric() 判断字符串是不是全部由数字组成
s.isalnum() 判断字符串是不是全部由字母和数字组成'''
print('张三_123'.isidentifier()) #True
print('张三'.isalpha()) #True
'''除了阿拉伯数字以外,其他isdicimal()方法都是False
isnumeric()方法中,1二Ⅲ④都是数字'''
print('④'.isnumeric())
字符串的替换和合并
'''s.replase() 参数:被替换的子串,替换成的字符,最大替换次数。
s.join() 列表或元组的字符串合并成一个字符串'''
s=['hello','python','world']
print('*'.join(s))
print('*'.join('python'))
s='小白兔白又白两只耳朵竖起来'
print('了'.join(s))
字符串的比较
'''运算符:> < >= <= == !=
比较规则:先比较第一个字符,如果相等,继续比较。。。
比较原理:比较的是字符的原始值,调用内置函数ord()可以得到指定字符的原始值
chr()是ord()的互相对应函数,chr()函数可以用原始值得到字符'''
a='apple'
b='app'
print(a > b)
print(ord('a'),chr(ord('l')))
比较:is 和 ==
#==:值相等, is:id相等
字符串的切片操作:将产生新的字符串
print(id(a))
a=a[:2]
print(a,'\\t',id(a)) #a重新分配地址
格式化字符串 % 占位符
name='ming'
age=20
print('我叫%s,今年%d岁' % (name,age))
#占位符
print('我叫0,今年1岁'.format(name,age))
#f-string
print(f'我叫name,今年age岁')
精度和宽度
'''% num.int f: num表述宽度(宽度不够左边补空格),int表示精度(保留几位小数)'''
print('0:.3'.format(3.141592654)) #0表示索引(可省略),3表示保留3位数
print('0:10.3f'.format(3.141592654)) #3f表示保留三位小数,10表示宽度
字符串的编码转换
'''编码:将字符串转化成二进制数字'''
a='唧唧复唧唧'
print(a.encode(encoding='GBK')) #GBK:国标扩展,编码格式,一个中文占两个字节
print(a.encode(encoding='UTF-8')) #一个字节占三个字节
byte=a.encode(encoding='GBK')
print(byte.decode(encoding='GBK')) #解码
数据输出到文件中
- 关键字列表
fp=open('D:/text.txt', 'a+') # 函数open(‘路径’,‘打开方式(读写)’)
#print(keyword.kwlist,file=fp) #输出
fp.close()
变量
- 变量不需要定义类型
name='张三' \\
'李四'
print(name)
print(name[0]) #字符串自动带入为数组
number=0x123 #十进制:291
print(number)
#print(number[0]) #报错,因为这里自动定义为int型号
number_string='123'
print(number_string[0],number_string[1])
number='一二三'
print(number) #变量迭代过程:删除原内存,重新分配空间并且重新更改新的数据类型
number=True #布尔类型区分大小True/False
print(number,'\\n',type(number))
进制
#二进制:0b, 8进制:0o 十六进制:0x
#浮点数偏差
n1=1.1
n2=2.2
print(n1+n2) #输出结果3.3000000000000003
from decimal import Decimal
print(Decimal(n1)+Decimal(n2)) #输出3.300000000000000266453525910
print(Decimal('1.1')+Decimal('2.2')) #输出3.3
利用三引号进行连续输出
print('''小时候总想长大
长大后总想变小
时间赋予我们意义''')
数据类型转换
print(len(number_string))
age=21
# print('我叫'+name+‘今年’+age) 不能同类型输出流
print('我叫',name[0], name[1],'今年',age,'岁') #这样可以
print('我叫' + name[0] +name[1] + '今年' + str(age) + '岁')
'''嘿嘿嘿我是多行注释
嘿嘿嘿'''
#规则:文字类和小数string不能转换为int,文字类不能转换为float
输入函数
dinner = input('晚饭吃了啥?')
print(dinner)
a=input('请输入第一个数')
b=input('请输入第二个数')
print('a+b=' ,a + b) #输出12 13,并没有进行运算
print(type(a),type(b)) #输入类型自动定为string类
'''a=int(a)
b=int(b)'''
#或者在输入行中转换:a=int(input(''))
print('a+b=', a + b)
运算符
- 普通运算符
print(11/2) #直接输出浮点数
print(11//2) #整除运算符
print(11%2) #取余数
print(2**4) #次方运算
- 赋值运算符:从右往左,所有编译器默认
a=b=c=3 #链式赋值
print(id(a),id(b),id(c)) #地址相同,相当于引用同一个参数
'''语言特性:免除参数类型定义的过程,底层将自动为变量取类型'''
a+=20
print(a,type(a))
a-=3
print(a,type(a))
a*=2
print(a,type(a))
a/=3
print(a,type(a))
a//=2
print(a,type(a))
'''以上运算,输出结果为
23 <class 'int'>
20 <class 'int'>
40 <class 'int'>
13.333333333333334 <class 'float'>
6.0 <class 'float'>'''
解包赋值
a,b,c=20,10,50
print(a,b,c) #左右相对应数量
- 利用此语言特性进行数值交换
a,b=b,a
print(a,b)
#对象id对比
print('a 和 b是同一个对象吗',a is b) #False
print(id(a),id(b))
print(a is not b) #True
逻辑运算符
'''与或非分别对应:and or not'''
a=True
print(not a)
'''目标是否在某个对象内部:in , not in'''
print('================================')
s='windows'
print('w' in s)
print('s' not in s)
print('============位运算===============')
'''位的与或和位移: &| >>and<<
位移: 左移:高位溢出,低位补零
右移,高位补零,低位截至
优先级:方,乘除,位移,位逻辑,比较,逻辑(布尔),赋值
python 每一个对象都有一个布尔值
以下对象布尔值为False:
False\\数值0\\ None\\空字符串\\空列表\\空元组\\空字典\\空集合 取布尔值函数:bool()'''
#print(bool(False)) #False
print(bool(0),bool(0.0)) #数值0
print(bool(None)) #None
print(bool('')) #空串
print(bool("")) #空串
print(bool([])) #空串
print(bool(list())) #空列表
print(bool(())) #空列表
print(bool(tuple())) #空元组
print((bool())) #空元组
print(bool(dict())) #空字典
print(bool(set())) #空集合
静态语言和动态语言多态的区别:
'''继承
方法重写
父类指向字类对象
python是动态语言
'''
分支循环
if else
'''语法结构:if 语句:
else:'''
num=int(input('请输入一个整数'))
if num%2==0:
print('偶数')
else:
print('奇数')
print('========多分支if elif=========')
if num>=90 and num<=100:
print('A')
elif num>=80 and num<=90:
print('B')
elif num>=70 and num<=80:
print(('C'))
else:
print('成绩有误')
'''语言特性:连续判断'''
if 90<=num<=100:
print('A')
elif 80<=num<=90:
print('B')
elif 70<=num<=60:
print('C')
elif 60<=num<=50:
print('D')
elif num<=60:
print('E')
else:
print('成绩有误')
'''判断表达语法优化'''
a=int(input('请输入第一个数值'))
b=int(input('请输入第二个数值'))
print( (a,'大于等于',b) if a>=b else (a,'小于等于',b))
range序列
r=range(10) #生成10个元素的序列,起头默认为0,步长默认为1
print(list(r))
r=range(0,10) #range(start,stop)前闭后开区间,步长1
print(list(r))
r=range(0,20,2) #range(start,stop,step):前闭后开
print(list(r))
print(10 in r)
print('============循环============')
'''while 条件:
循环体'''
a=1
while a<10:
print(a)
a+=1 #python中没有a++
- python中的求和函数
a=range(0,101,2)
print(sum(a))
print('=========================')
summ=0
a=1
while a<=100: #嵌套分支
if not a%2:
summ+=a
a+=1
print(summ) #输出同样结果
for in 遍历对象
'''for 对象 in 遍历元素'''
for item in "Python": #”“和’‘都代表同一个数据(对象)类型
print(item)
print(item) #此处的对象创建为只有一个元素的字符数组
'''
a=0
for item1[a] in 'Python':
a+=1
print(a)
'''
#不允许以上运行,在当前库中for in仅允许创建的对象为一个元素
for i in range(11):
print(i)
print(i)
- 如循环中,不需要用到自定义变量,可用下划线_代替自定义变量
for _ in range(5): #输出5次hello
print('hello')
break 跳出循环
for _ in range(1): #注意缩进格式
psw=input('请输入密码:')
if psw=='8888':
print('密码正确')
break
else:
print('密码不正确')
continue 语句实现循环控制
'''continue和pass区别,
continue:跳过本次循环,不论下面有多少语句
break: 跳出循环
pass: 只起到占位作用,后面的语句回继续执行'''
for _ in range(1):
pwd=input('请输入密码:')
if pwd!='8888':
printcss 灵活的四分之一椭圆