2018-08-22 Day3

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://upload-images.jianshu.io/upload_images/13693238-3d0464c5efa42ec3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

总结:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352