字符串是python中重要的数据类型。
字符串在计算机中的存储:
计算机只能识别0,1。要想计算机识别字符串,就必须把字符串转为二进制01编码。
Unicode编码:
ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A用ASCII编码是十进制的65,二进制的01000001
字母A用Unicode编码,只需要在前面补0就可以,A的Unicode编码是00000000 01000001。
unicode编码可以解决乱码问题,但是占用空间资源太多,所以出现了“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
字符串的操作
字符串的创建:
通过引号对变量赋值:
str1=‘hello python’
str2=“hello python”
str3=""“hello python”""
转义字符
在需要在字符中使用特殊字符时,python用反斜杠()转义字符。
字符串连接
索引和切片
熟练掌握索引和切片,可以节省很多代码量
切片的用法比较灵活
str[start:end] 截取字符串中start开始end-1结束的部分
str[1:] 截取除去第一个元素的所有元素
str[:-1] 截取除去最后一个元素的所有元素
除此之外,还可以求字符串的倒序
str[::-1]
字符串的内建函数
方法 | 描述 |
---|---|
string.capitalize() | 把字符串的第一个字符大写 |
string.count(str, beg=0, end=len(string)) | 返回 str 在 string 里面出现的次 |
string.startswith(obj) | 检查字符串是否以obj开始 |
string.endswith(obj) | 检查字符串是否以obj结束 |
string.find(str, beg=0, end=len(string)) | 检查str是否在字符串中,如果在,返回str开始的索引值 |
string.format() | 格式化字符串 |
string.index(str, beg=0, end=len(string)) | 与find相同,如是否果不存在会报错 |
string.isalnum() | 是否为字母或数字,返回True或False |
string.isalpha() | 是否为字母 |
string.isdigit() | 是否为数字 |
string.islower() | 是否为小写字母 |
string.isspace() | 是否为空格 |
string.isupper() | 是否为大写字母 |
string.istittle() | 是否为标题 |
string.join() | 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
string.lower() | 转换 string 中所有大写字符为小写 |
string.upper() | 转换 string 中所有小写字符为小大写 |
string.swapcase() | 大小写反转 |
string.strip() | 清除字符串开头和末尾的空格(在input中经常用到) |
string.replace(str1, str2, num=string.count(str1)) | j把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次 |
max(str) | 返回最大值 |
min(str) | 返回最小值 |
string.split(str="", num=string.count(str)) | 以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+ 个子字符串 |
string.splitlines([keepends]) | 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
练习:
import string
str=input("please input str:")
countL=0
countR=0
countU=0
countD=0
for i in str:
if i=='L':
countL+=1
elif i=='U':
countU+=1
elif i=='R':
countR+=1
elif i=='D':
countD+=1
else:
break
if countL==countR and countU==countD:
print("True")
else:
print("False")
import random
min = int(input("最小值:"))
max = int(input("最大值:"))
num = int(input("请输入题目数量:"))
count=0
s=0
while s==num :
s -= 1
a = random.randint(min, max)
b = random.choice('+-*')
c = random.randint(min, max)
trueresult = int(input('%d %s %d=' % (a, b, c)))
if b == '+' and trueresult == a + c:
count += 1
elif b == '-' and trueresult == a - c:
count += 1
elif b == '*' and trueresult == a * c:
count += 1
else:
print('%.2f%%' % ((count/num)*100))
(环境问题无截图,回头补上)