美文网首页
2018-08-22 Day3

2018-08-22 Day3

作者: Ftr_ | 来源:发表于2018-08-22 20:05 被阅读0次

    01.原码、反码、补码

    计算机在存储数据的时候,都是以二进制的形式存储在计算机中(存一个数的补码),并且计算机只有加法运算。

    1.原码:数据的二进制形式

    正数的原码:符号位的值是0,后面是数值大小
    负数的原码:符号位的值是1,后面是去掉符号的数值大小
    10----> 1010 原码:00001010
    -10----> 原码:10001010

    2.反码:

    正数的反码:反码和原码一样
    负数的反码:符号不变,后面的每一位的值取反(0变1,1变0)
    10 ----->反码:00001010
    -10 ---->反码:11110101

    3.补码:

    正数的补码:补码和原码一样
    负数的补码:反码+1
    10 ---->补码:00001010
    -10 ---->补码:11110110

    02.认识字符串:

    1.字符串定义:

    a.在Python中,用单引号或双引号括起的字符集就是字符串。
    例如:'hfsig5325~!%^$手动阀',"ss a56"
    b.字符串中的每个独立的单元我们叫字符。
    例如:字符串'abc123'中的'a','b','c','1','2','3'就是字符

    name='海贼王'
    poem='one'
    

    说明:python中没有字符类型,如果要表示字符,就是用一个长度是1的字符串表示。例如:'a','1',
    长度:指的就是字符串中字符的个数,例如:'abc'-长度是3,'ABC123, 你好'-长度是:10

    2.转义字符

    a.通过\将一些特殊的字符转换成一个具有特殊功能或者特殊意义的字符,就是转义字符。
    b.常见的准义字符:
    \n ---换行
    \t ---制表符(相当于tab键)
    \\ ---\
    \' ---'
    在计算字符串长度的时候,转义字符的长度是1

    poem='海阔凭鱼跃,\n天高任鸟飞'
    #海阔凭鱼跃
    #天高任鸟飞
    print(poem)
    str1='abc\\bcd' 
    print(str1)  #abc\bcd
    str2='abc\'123' 
    print(str2) #abc'123
    str3="abc\"123" 
    print(str3) #abc"123
    str4='abc"123'
    print(str4) #abc"123
    

    3.Unicode编码

    将字符转换成指定的数值,这个过程就是编码。(编码的目的是方便计算机存储)
    将数值转换成对应的符号的过程就是反编码。(解码)

    a.python中字符的编码采用的是Unicode编码
    b.Unicode是采用两个字节对他一个字符进行编码(2^15)可将世界上所有的符号进行编码
    c.Unicode包含ASCII码

    1).将Unicode码转换成字符chr(编码)

    print(chr(0xAC00)) #가
    print(chr(0x4E60)) #习
    

    2).将字符转换成Unicode编码:ord(字符)

    print(ord('廖'),ord('鸿'),ord('业')) #24278 40511 19994
    code1=ord('廖')
    code2=ord('鸿')
    code3=ord('业')
    print(hex(code1),hex(code2),hex(code3)) #0x5ed6 0x9e3f 0x4e1a
    

    03.获取字符:

    字符串实质是一个不可变的序列,序列内容是字符。一旦字符串确定,里面的字符和字符位置就不了变。例如:'abc'

    1.怎么获取单个字符:

    python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串[索引]

    说明:
    a.字符串:可以是字符串值,也可以是字符串变量
    b.[]:中括号使用固定语法
    c.索引:从0开始到字符串长度减1;-1~-长度(-1对应的是最后一个字符)
    注意:索引不能越界,否则会报错(产生异常)

    str1='acbd'#a->0 ,c->1 ,b->2, d->3
    print(str1[0]) #a
    # print(str1[4])  #IndexError:string index out of range
    
    name='海贼王'
    print(name[2]) #王
    print(name[-3],name[-2],name[-1]) #海 贼 王
    # print(name[-4])  #IndexError:string index out of range
    

    2.获取部分字符(获取子串) --切片

    字符串[下标1:下标2]:从下标1开始,获取到下标2前的所有字符。(从下标1开始,每次下标值加1,一直加到下标2前)

    str2='hello world'
    print(str2[0:6]) #hell
    print(str2[2:7]) #llo w
    #print(str2[-2:1])注意:下标1对应的位置,一定要在下标2对应的位置前
    print(str2[2:-1]) #llo worl
    print(str2[3:12])#切片是下标可以越界,越界的时候就取临界值
    

    3. 字符串[下标1:下标2:步进]

    从下标1开始获取,每次下标值增加步进值,每增加一次取一个字符,直到取到下标2为止。

    注意:
    a.步进如果是正数,那么下标1对应的字符的位置一定要在下标2对应的位置的前面; 步进如果是负数,那么下标1对应的字符的位置一定要在下标2对应的位置的后面。
    b.下标2对应的字符是取不到的。

    str3='helloPython'
    print(str3[0:5:2]) #hlo 步进:3 hl
    print(str3[-1:5:-1]) #nohty
    

    4.下标的省略

    切片时,下标1和下标2是可以省略的。

    下标1省略:默认从开头获取(开头可能是字符串的第一个字符,也可能是字符串最后一个字符)

    str4='good good study,day day up'
    print(str4[:4]) #good
    

    下标2省略:从下标1位置开始获取,获取到结束(结束可能是字符串的最后,也可能是字符串)

    print(str4[3::-1]) #doog
    print(str4[:])#good good study,day day up
    print(str4[::-1]) #pu yad yad,yduts doog doog
    

    练习:要求将一个字符串中的所有奇数位上的字符或取出来(位数从0开始算)

    str5='clchcyc'
    print(str5[1::2]) #lhy
    

    04.字符串的相关运算

    1. + 运算符

    python支持两个字符串相加,其结果为两字符串拼接一起,成新的字符串。
    注意:如果+的一边是字符串,那么另外一个也必须是字符串,左右类型需对应。

    print('lhy'+'8899') #lhy8899
    str1 = 'world'
    newstr = 'hello'+' '+str1
    print(newstr) #hello world
     #print(10+'abc') #IndentationError: unexpected indent
    

    2. * 运算符

    字符串*整数:字符串重复多次

    print('abc'*3)  #abcabcabc
    

    3.所有的比较运算符

    str1='abc'
    print('abc'==str1) #True
    print(str1 !='ab') #True
    

    4.比较大小

    str1>str2; st1<str2
    让str1中的每一位的字符,分别和str2中每一位的字符依次比较。
    直到不同为止,再看不同字符中谁的编码值大或小

    print('abcd'>'ac')# 一一对应 比较大小False
    print('廖'>'鸿'>'业') #False
    print(ord('廖'),ord('鸿'),ord('业'))  #24278 40511 19994
    

    5.in和not in

    str1 in str2:判断str1是否在str2中(str2是否包含str1,str1是否为str2的子串)
    结果是布尔值

    print('abc' in 'abcdefg') #True
    print('f' not in 'python') #True
    

    6.获取字符串长度

    字符串的长度指的是字符串中字符的个数
    len()内置函数---->计算字符串中字符的个数

    str3='CCTVcctv'
    print(len(str3),len('abc 123\n')) #8 8
    

    7.空串

    str4 = ''
    str5 = ""
    print(len(str4),len(str5)) #0 0
    print(str3[-1],str3[len(str3)-1]) #v v
    

    8.阻止转义

    在字符串最前面添加r/R可以阻止转义

    print('a\nb','a\nb\\') #a b  a b\
    print(len('a\nb\\')) #4
    print(r'a\nb',R'a\nb\\')#a\nb a\nb\\
    print(len(R'a\nb\\')) #6
    

    练习

    str1= r'\nabc123' 求str1[3]
    str2= 'abc123\123' 求:str2[-5]

    str1= r'\nabc123'
    print(str1[3]) #b
    str2= 'abc123\\123'
    print(str2[-5]) #3
    

    05.字符串相关的方法:

    python为字符串提供了很多的内建函数
    使用方法:字符串.函数()
    注意:这些所有函数的功能都不会影响原来的字符串,而是产生新的字符串

    1.capitalize()

    把字符串的第一个字符大写,并且其余字母小写展示。

    str1= 'cctv'
    # 1.capitalize()将字符串的第一个字母大写
    newstr=str1.capitalize()
    print(newstr) #Cctv
    print('abc'.capitalize()) #Abc
    

    2.center(width,fillchar)

    字符串在指定的宽度width内居中,剩余的部分用字符fillchar的值来填充
    width-整数;fillchar-任意字符

    print('abc'.center(10,'¥')) #¥¥¥abc¥¥¥¥
    

    3.rjust(width,fillchar)

    字符串在指定的宽度width内居右,剩余的部分用字符fillchar的值来填充
    1 2 3 4 5 55 77 ---->001 002 003 004 005 055 077
    1--->001 11--->011

    number='1'
    new_id=number.rjust(3,'0')
    print(new_id)  #001
    

    4.count(str)

    判断str值在原字符串中出现的次数
    str->字符串

    print('abcaaa'.count('a'))  #4
    

    5.str1.join(str2)

    在str2中的每个字符串之间插入一个str1

    print('+-'.join('abc')) #a+-b+-c
    

    6.str1.replace(old,new)

    将str1中的old全部替换成new

    new_str='abcdahulapuyeahj'.replace('a','+')
    print(new_str) #+bcd+hul+puye+hj
    

    7.

    a.lower(str) : 转换 str 中所有大写字符为小写.。
    b.upper(str) : 转换 str 中的小写字母为大写。

    name1='FTrl'
    print(name1.lower(),name1.upper()) #ftrl FTRL
    

    8.

    Python中有三个去除头尾字符、空白符的函数,它们依次为:
    strip:用来去除头尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
    lstrip:用来去除开头字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
    rstrip:用来去除结尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)

    注意:这些函数都只会删除头和尾的字符,中间的不会删除。

    Day3 作业

    2-3 个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello Eric, would you like to learn some Python today?”。

    name = 'ftr'
    str='are you ok?'
    print('hello'+' '+name+'~'+' '+str) #hello ftr~ are you ok?
    
    a='hello '
    name = 'ftr '
    str='are you ok?'
    print('%s%s%s'%(a,name,str)) #hello ftr are you ok?
    

    2-4 调整名字的大小写: 将一个人名存储到一个变量中,再以小写、大写和首字母大写的方式显示这个人名。

    name1='FTrl'
    print(name1.lower(),name1.upper(),name1.capitalize()) #ftrl FTRL Ftrl
    

    2-5 名言: 找一句你钦佩的名人说的名言,将这个名人的姓名和他的名言打印出来。输出应类似于下面这样(包括引号):Albert Einstein once said, “A person who never made a mistake never tried anything new.”

    print('Tagore once said, “We read the world wrong and say that it deceives us.”')
    

    2-6 名言2: 重复练习2-5,但将名人的姓名存储在变量famous_person 中,再创建要显示的消息,并将其存储在变量message 中,然后打印这条消息。

    famous_person='Tagore'
    message='“We read the world wrong and say that it deceives us.”'
    print(famous_person+' once said, '+message)
    

    2-7 剔除人名中的空白: 存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合"\t" 和"\n" 各一次。 打印这个人名,以显示其开头和末尾的空白。然后,分别使用剔除函数lstrip() 、rstrip() 和strip() 对人名进行处理,并将结果打印出来。

    name2='  \n  FTrl  \t  '
    print(name2)
    print(name2.lstrip()) #用来去除开头字符、空白符
    print(name2.rstrip()) #用来去除结尾字符、空白符
    print(name2.strip())  #用来去除头尾字符、空白符
    

    结果为:(https://img.haomeiwen.com/i13693238/3d0464c5efa42ec3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    总结:

    课堂知识已掌握,但还需多巩固。

    相关文章

      网友评论

          本文标题:2018-08-22 Day3

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