python学习日记79-89

1.前言

隔离日记DAY6

2.学习内容

1.字符串的劈分

 s='hello world python'
 lst=s.split()#从字符串的左侧开始劈分,默认劈分符是空格字符串,返回值都是列表
 print(lst)#['hello', 'world', 'python']
 s1='hello|world|python'
 print(s1.split(sep='|'))#sep用来指定劈分符 ['hello', 'world', 'python']
 print(s1.split(sep='|',maxsplit=1))#通过参数maxsplit指定最大劈分次数,经过最大劈分次数后,剩余的字符串会单独作为一部分
 print('------------------------------')
 '''rsplit()从右侧开始劈分'''
 print(s.rsplit())
 print(s1.split('|'))
 print(s1.rsplit(sep='|',maxsplit=1))#二者区别在这里['hello|world', 'python']

这一部分没什么可赘述的,看程序一目了然

2.字符串判断的相关方法

 s='hello,python'#字母 数字 下划线才是合法的标识符
 print('1.',s.isidentifier())#False s中含有逗号,所以不是.    isidentifier()判断指定字符串是不是合法标识符
 print('2.','hello'.isidentifier())#2. True
 print('3.','张三_'.isidentifier())#3. True,为啥汉字也合法,因为汉字也由字母组成
 ​
 print('5.','\t'.isspace())#5. True  isspace判断字符串是不是全部由空白字符组成(回车,换行,水平制表符)
 ​
 print('6.','adc'.isalpha())#6. True  isalpha判断字符串是否全由字母组成
 print('7.','张三'.isalpha())#7. True
 print('8.','张三1'.isalpha())#8. False
 ​
 print('9.','123'.isdecimal())#9. True  isdecimal判断是否全由十进制数组成,(罗马数字不是十进制数)
 print('10.','123四'.isdecimal())#false
 ​
 ​
 print('11','123'.isnumeric())#True    isnumeric判断是否全由数字组成 (罗马数字也行)
 print('12','123四'.isnumeric())#True
 ​
 print('13','abc1'.isalnum())#True    isalnum判断是否全由字母和数字组成
 print('14','张三123'.isalnum())#True    张三也是字母
 print('15','abc!'.isalnum())#15 False  !不行

注意汉字也是合法标识符,因为其由字母组成

3.字符串的替换与合并

 s='hello,python'
 print(s.replace('python','java'))#替换
 s1='hello,python,python,python'
 print(s1.replace('python','java',2))#hello,java,java,python第三个参数为替换次数
 ​
 ​
 lst=['hello','java','python']
 print('|'.join(lst))  #hello|java|python 连接
 print(''.join(lst))   #hellojavapython
 ​
 t=('hello','java','python')
 print(''.join(t))#hellojavapython
 ​
 print('*'.join('python'))#p*y*t*h*o*n

print(s.replace('python','java'))#替换 就是把字符串中的python换成java,这一部分也比较好理解。

4.字符串的比较操作

 print('apple'>'app')#True
 print('apple'>'banana')#False  a与b原始值(ASCII码)比较  相当于97 >98 False
 print(ord('a'),ord('b'))
 ​
 print(chr(97),chr(98))#a b     chr与ord互为对应
 ​
 '''==与is的区别
    == 比较的是值value
    is 比较的是id是否相等'''
 a=b='python'
 c='python'
 print(a==b)#True
 print(b==c)#True
 ​
 print(a is b)#true
 print(a is c)#true
 print(id(a))#a b c内存地址全相同 字符串驻留机制:当发现有相同字符串时,不会再创建新的字符串,而指向相同字符串的空间
 print(id(b))#同
 print(id(c))#同
  • 比较字符串时是比较其ASCII码的大小,且逐次从左到右比较

  • chr与ord互为对应

  • ==与is的区别 == 比较的是值value is 比较的是id是否相等

  • a b c内存地址全相同 字符串驻留机制:当发现有相同字符串时,不会再创建新的字符串,而指向相同字符串的空间

4.字符串的切片操作

 s='hello,python'
 s1=s[:5]#hello 由于没有指定起始位置,所以从0开始切
 s2=s[6:]#python由于没有指定结束位置,所以切到字符串的最后一个元素
 s3='!'
 newstr=s1+s3+s2#hello!python
 print(s1)
 print(s2)
 print(newstr)
 print(id(s1))
 print(id(s2))
 print(id(s3))
 print(id(newstr))#切片id各不相同
 ​
 print('-------切片[start:stop:step]  ------')
 print(s[1:5:1])#从1开始截到5,不包含5,步长为1
 print(s[::2])#默认从0开始,没有写结束,默认到字符串的最后一个元素,步长为2,两个元素之间的索引间隔为2
 print(s[::-1])#默认从字符串的最后一个元素开始,到字符串的第一个元素结束,因为步长为负数
 print(s[-6::1])#从索引为-6开始,到字符串的最后一个元素结束,步长为1,python

切片id各不相同

5.格式化字符串

 #格式化字符串
 #1. %占位符
 name='张三'
 age=20
 print('我叫%s,今年%d岁' %(name,age))#我叫张三,今年20岁
 ​
 #2. {}
 print('我叫{0},今年{1}岁'.format(name,age))#我叫张三,今年20岁  
 ​
 #3.f-string
 print(f'我叫{name},今年{age}岁')#我叫张三,今年20岁
 print('%10d' %99)#10表示宽度#        99(前面8个空格)
 print('%.3f'%3.1415926)#   .3表示保留三位小数
 #同时表示宽度和精度'
 print('%10.3f'%3.14595555)#总宽度为10,小数点后三位
 ​
 ​
 print('hellohello')
 print('{0}'.format(3.1415926))#花括号是占位符,占的3.1415926的位置                  3.1415926
 print('{0:.3}'.format(3.1415926))#.3表示一共三位数                                3.14
 print('{0:.3f}'.format(3.1415926))#.3d表示是3位小数                               3.142
 print('{:10.3f}'.format(3.1415926))#10表示宽度为10 #同时设置宽度和精度,一共是10位,其中三位是小数                             3.142
 #0表示占位符的顺序,也可以不写

6.字符串的编码与解码

s='天涯共此时'
#编码
print(s.encode(encoding='GBK'))#在GBK这种编码格式中,一个中文占两个字节
#b'\xcc\xec\xd1\xc4\xb9\xb2\xb4\xcb\xca\xb1' b表示二进制byte 后面刚好十个(五个字 一个字两字节)
print(s.encode(encoding='UTF-8'))#在 UTF-8这种编辑格式中,一个中文占三个字节
#b'\xe5\xa4\xa9\xe6\xb6\xaf\xe5\x85\xb1\xe6\xad\xa4\xe6\x97\xb6'  多了五个

#解码
#byte代表一个二进制数据(字节类型的数据)
byte=s.encode(encoding='GBK')# 编码
print(byte.decode(encoding='GBK'))#解码 天涯共此时
#print(byte.decode(encoding='UTF-8'))#ERROR 因为编码格式要和解码格式相同

7.函数的定义与调用

def calc(a,b):#a b成为形式参数 简称形参,形参的位置是在函数的定义处
    c=a+b
    return c

result=calc(10,20)#10 20 称为实际参数的值,简称实参,实参的位置实在函数的调用处
print(result)

res=calc(b=10,a=20)#等号左侧变量名称成为 关键字参数
print(res)

8.位置实参,关键字实参

9.函数参数传递的内存分析

def fun(arg1,arg2):
    print('arg1',arg1)
    print('arg2',arg2)
    arg1=100
    arg2.append(10)
    print('arg1', arg1)
    print('arg2', arg2)

n1=11
n2=[22,33,44]
print('n1',n1)
print('n2',n2)
fun(n1,n2)#将位置传参,arg1 arg2,是函数定义出的形式参数,n1 n2是函数调用处的实参,总结:实参名称与形参名称可以不一致

print('n1',n1)
print('n2',n2)
'''在函数调用过程中,进行参数的传递
如果是不可变对象,在函数体的修改不会影响实参的值 arg1的修改不会影响n1的值
如果是可变对象,在函数体的修改会影响实参的值     arg2的修改会影响到n2的值'''

10.函数的返回值

def fun(num):
    odd=[]#存奇数
    even=[]#存偶数
    for i in num:#遍历列表
        if i%2:
            odd.append(i)
        else:
            even.append(i)
    return odd,even

#函数的调用
lst=[10,29,34,23,44,53,55]
print(fun(lst))

'''
函数的返回值
1.如果函数没有返回值(函数执行完后,不需要给调用处提供数据) return可以不写
2.函数的返回值如果是一个,直接返回原值
3.函数的返回值如果是多个,返回的结果为元组
'''

def fun1():#直接输出就行了,没返回值
    print('hello')
    #renturn

fun1()


def fun2():
    return'hello'

res=fun2()
print(res)

def fun3():
    return'hello','world'
print(fun3())

'''函数在定义时,是否需要返回值,视情况而定'''

3.结束语

倦了.....晚安

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值