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 灵活的四分之一椭圆

如何顺时针交换二次矩阵的四分之一(从左上角开始)?

R语言如何入门?

掌握python语言可以做什么?十大应用领域介绍

mdx查询以计算最近的四分之一日期的度量与今天的度量之间的差异

关于学习python的一点小建议