day6-string

一.recode

1.变量

#变量名 = 值
#变量名  -  标识符,不能是关键字
#                见名知义,所有字母小写多个单词隔开,不能使用系统内置函数名
a = b = 100
a1, b1, c1 = 100, 200, 300
a2 = 10; b2 = 20

2.运算符
数学运算符,比较运算符,逻辑运算符,赋值运算符
10 <= a <= 20
逻辑运算符对象和结果都是布尔值
赋值运算符,左边必须是变量,复合的赋值运算右边不能有其他的赋值运算符

3.分之结构
if,if-else,if-elif-else

4.循环结构
for:

for 变量 in 序列:
     循环体
else:
     语句块

while

while 条件语句:
       循环体
else:
       语句块

5.continue,break

二.string01

1.什么是字符串(str)

字符串是python内置的一种容器型数据类型,不可变,有序;
将单引号或者双引号作为容器,里面可以根据情况放多个字符
不可变:指的是内容的值和顺序不可变
有序:一旦字符串确定,字符串中字符的位置就固定(每个字符是第几个字符是确定的)

2.字符串中的内容 - 字符

python中只有字符的概念,没有字符对应的数据类型
字符串的基本单元就是字符,又叫字符串的元素
a. 基本字符 - 数字,字母,常用符号,中文,日语,韩语等

'12'
'国际大旮旯噶噶啥'
'*&%**&^*'

b. 转义字符 - 通过转义符号\后面跟不同的符号来表示特殊功能或者特殊意义的字符
\n - 换行
' - 一个单引号
" - 一个双引号
\ - 一个反斜杠
\t - 制表符

str1 = "a\'bc\n1\"23\\n000"
print(str1

c .编码字符 - \u后面跟4位的十六进制数,来表示一个字符.这个4位的16进制数对应的值是字符的编码值

str3 = 'abc+\u4e00'
print(str3)

3.字符编码

python中的字符采用的是Unicode编码
计算机存储数据的时候只能存数字,而且存的是数字的补码(是以二进制的格式进行存储)

100        #十进制数
print(bin(100))       #bin(数字)  -  获取指定数字对应的二进制
print(oct(100), 0o144)   #oct(数字)  -  获取指定数字对应的八进制
print(hex(100), 0x64)    #hex(数字)  -  获取指定数字对应的十六进制
print(chr(0x2c80))

编码: 每个字符在计算机中存储的时候都会对应一个固定且唯一的数字,这个数字就是字符的编码.每个字符和数字的一一对应的关系就是编码表,常见的编码表有:ASCII码表和Unicode编码表.
ASCII码表只对数字字符,字母字符,英文符号进行编码
Unicode编码表是对ASCII表的扩充,能够对世界上所有的符号进行编码
chr(编码值) - 获取编码值对应的字符
ord(字符) - 获取字符对应的编码值,注意:字符值就是长度为1的字符串

num = 0
for code in range(0x4e00, 0x9fa5):
    print(chr(code), end='')
    num += 1
    if num % 20 == 0:
        print()
print(num)
print(ord('高'), ord('旭'))
str3 = '\u4fff\u5faa'
print(str3)

print('高' > '旭')  # True

三.string02

1. 获取字符 - 取字符串的内容

1.1 获取单个字符

a.语法:字符串[下标]   -   根据下标获取字符串中对应的字符
b.说明:字符串 - 可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
       []    -  固定写法
       下标   -  又叫索引,一旦字符串确定,那么字符串中的每个字符都会对应一个下标,
                 表示这个字符在字符串中的位置.下标的范围是0~字符串的长度减1,
                 0表示第一个字符,1表示第二个,以此类推.(通用的)
                 下标范围还可以是-1~-字符串长度减1,-1表示倒数第一个
c.注意:获取单个字符的时候下标不能越界
str1 = 'python'   # 'p' : 0/-6
result = 'python'[3]
print(result)

print(str1[0],str1[-6],str1[-1],str1[-2])
# print(str1[100])  #IndexError: string index out of range

1.2获取部分字符(字符串切片)

a.语法:字符串[开始下标:结束下标:步长]  -  从开始下标开始,获取到结束下标前为止每次下标值增加步长;结果是字符串
b.说明:字符串                 - 可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
       [],:                            -  固定写法
       开始下标,结束下标  -  下标值,开始下标可以取到,结束下标对应的字符一定取不到
       步长                         -   整数,可以是正的也可以是负的
c.注意:下标可以越界
       如果步长为正(从前往后获取),开始下标对应的字符要在结束下标对应的字符前才能获取到值
       如果步长为负(从后往前获取),开始下标对应的字符要在结束下标对应的字符的后面才能获取到值
str2 = 'abcdef123456'
print(str2[0:4:1])
print(str2[-2:-10:-2])  #531e
print(str2[0:100:1])    # 下标可以越界
切片的语法中可以对步长,开始下标和结束下标进行省略:
1.省略步长(步长默认为1)
字符串[开始下标:结束下标]   ==  字符串[开始下标:结束下标:1]

2.省略开始下标
字符串[:结束下标:步长]  -  如果步长是正,从字符串开头往后取;如果步长为负,从字符串最后一个字符往前取
字符串[开始下标::步长]  -  如果步长为正,取到最后一个字符为止;如果步长为负,取到第一个字符为止
str2 = 'abcdef123456'
print(str2[2:5])    # 'cde'
print(str2[-4:-1])  # '345'
print(str2[:3:1])
print(str2[:3:-1])

print(str2[2:])  #'cdef123456'
print(str2[2::-1])  #'cba'

print(str2[::-1])   #'654321fedcba'
#练习: 1234  ->  4321
num = 1234
print(str(num)[::-1])

1.3遍历字符串 - 一个一个的取出所有的字符

方法一:直接遍历
for 变量 in 字符串:
    循环体
    
方法二:通过遍历下标,来遍历字符串
for 变量 in range(字符串长度):
    字符串[变量]
for char in 'hello':
    print(char)

str3 = 'when i was young'
#len(字符串)  -  获取字符长度,返回一个数字,字符长度指的是字符串中字符的个数
for in index range(len(str3)):
    print(index, str3[index])

index = 0
while index 

四.string03

1.字符串相关运算

a.数学运算:字符串支持加法运算和乘法运算
语法: 字符串1 + 字符串2 - 将两个字符串拼接在一起产生一个新的字符串

new_str1 = 'abc' + '123'
print(new_str1)

new_str1 += '你好!'
print(new_str1)
#注意:加号两边,必须都是数字,或者都是字符串,数字和字符串不能混合相加
# new_str1 = 'abc' + 123     # TypeError: must be str, not int

乘法 语法: 字符串 * 正整数 / 正整数 * 字符串 - 指定的字符串重复指定次数,产生一个新的字符串

print('abc' * 3)   # abcabcabc

b.比较运算:字符串支持所有的比较运算符
字符串1==字符串2, 字符串1 != 字符串2 - 判断两个字符串是否相等

print('abc' == 'abc')
print('abc' == 'acb')
print('abc' != 'acb')

字符串比较大小:让两个字符串中相同位置的字符一一比较(从前往后),找到第一个不相等的字符,判断编码值的大小

print('abcdef' > 'abz')   #False
print('abc1' > 'abc')     #True
print('abc-1' > 'abc')    #True

应用:

判断一个字符是否是字母: 'a' <= char <= 'z' or 'A' <= char <= 'Z'
判断一个字符是否是数字: '0' <= char <= '9'
判断一个字符是否是中文(4e00~9fa5): '\u4e00'<=char <='\u9fa5'  / 0x4e00 <= ord(char) <= 0x9fa5
#练习:输入一个任意的字符串,统计输入的内容中字母的个数
value = input('请输入任意内容:')
count = 0
for char in value:
    if 'a' <= char <= 'z' or 'A' <= char <= 'Z':
        count += 1
print('字母的个数', count)

3. in 和 not in 操作

字符串1 in 字符串2 - 判断字符串1是否在字符串2中(判断字符串2中是否包含字符串1)
字符串1 not in 字符串2 - 判断字符串1是否不在字符串2中(判断字符串2中是否不包含字符串1)

print('abc' in '123abc89503k')    # True
print('abc' in 'a123bcsdghakl')   # False
print('abc' not in 'a123bcsdghakl')   #True

4.常用内置函数

len(字符串) - 求字符串长度
str(数据) - 将其他数据转换成字符,所有的数据都能转换成字符串,转换的时候直接在数据的外面加引号

print(int('23'))   # 只有去掉引号后,本身就是一个整数的字符串才能转换成整型
print(float('12.4'))  # 去掉引号后,本身就是一个数字的字符串才能转换成浮点型
print(bool(''))     #除了空串会转换成False,其他的都会转换成True
str2 = ' '
if str2:
    print('不是空串')

五.string04

1.字符串的对象方法

字符串.方法()

#字符串.capitalize()  -  将字符串中首字母大写
str4 = 'hello'
new_str = str4.capitalize()
print(new_str)
# 字符串.center(width,fillchar)
#  -  产生一个长度为width的新的字符串,新字符串中原字符串居中,剩余分部分用fillchar填充
new_str = str4.center(11, '0')
print(new_str)

new_str = str4.center(11, '*')
print(new_str)

new_str = str4.center(11, ' ')
print(new_str)

# 字符串.ljust(width,fillchar)
new_str = str4.ljust(11, '=')
print(new_str)

# 字符串.rjust(width,fillchar)
num = 1
study_id = str(num).rjust(3, '0')
print(study_id)

# 字符串.zfill(width)  -  产生一个宽度是width的字符串,原字符串在右边,前用0填充

for char in 'hello':
    print(char)

你可能感兴趣的:(day6-string)