学习目标
- 学习如何创建字符串
- len、min和max函数获取一个字符串的长度、串中的最大和最小字符
- 使用下标运算符 [ ] 访问字符串中的元素
- 使用截断运算符 str[start:end] 从较长的字符串中得到一个字串
- 使用 + 运算符连接两个字符串,使用 * 运算符复制一个字符串
- 使用in 和 not in 运算符判断一个字符串是否包含在另一个字符串内
- 使用比较运算符(==,!=,)等对字符串进行比较
- 使用for循环迭代字符串中的字符
- 使用方法 isalnum,isalpha,isdigit,isdentifier,islower,isupper,isspace来测试字符串
- 使用endswith,startswith,find,rfind,count搜索子串
- 使用capitalize,lower,upper,title,swapcase和replace转换字符串
- 使用lstrip,rstrip,和strip从一个字符串的左侧或者右侧删除空格
- 使用方法 center,ljust,rjust和format格式化字符串
str类
-
字符串和数值都是不可变对象,一旦创建了字符串和数值,它的内容就是不可变的
所以对于不可变对象中,相同值得id是相同得,例如int类
-
处理字符串得函数
s = "helloworld"
len(s)
max(s)
min(s)
- 下标运算符s[i]
s="welcome"
for i in range(0,len(s),2):
print(s[i])
# s[-1] = s[len(s)-1]
由于字符串是不可变得内容,所以不能改变他们的内容。
s[2]=“A” 是非法的
- 截断运算符 [start:end]
s="welcome"
s[1:4] # elc , end is not inclusive
s[:6] #same as s[0:6]
s[4:] #same as s[4:7]
- 连接运算符+ 和赋值运算符 *
+
*
- in 和 not in
s = "welcome"
for i in range(0, len(s), 2):
print(s[i], end="")
print("")
print("come" not in s) # output ---->false
- 迭代字符串
s = str("welcome")
for ch in s:
print(ch)
- 测试字符串
- 搜索字串
- 转换字符串
- 删除字符串的空格
实例:将十六进制的数转化为十进制的数
# -*- coding:utf-8 -*-
"""
作者:Administrator
日期:2021年04月03日11:07
"""
import math
def hexToDecimal(hex):
decimalNum = 0
for i in range(0,len(hex)):
ch = hex[i]
if ch <= 'F' and ch >='A':
num = ord(ch) - ord('A')+10
decimalNum += num * math.pow(16, len(hex)-i-1 )
elif ch <= '9' and ch >= '0':
num = ord(ch) - ord('0')
decimalNum += num * math.pow(16, len(hex)-i-1 )
else :
return None
return decimalNum
def main():
hex = input("enter a hex number :").strip() #use s.strip() to exclude space in front or end of hex
decimal = hexToDecimal(hex.upper())
if decimal == None:
print("incorrect hex number")
else:
print(format(decimal, '.0f'))
while not 0:
main()
运算符的重载和特殊方法
实例研究:Rational类
# -*- coding:utf-8 -*-
"""
作者:Administrator
日期:2021年04月03日20:00
"""
import math
def gcd(num1,num2):
gcdNum=1
if num1 > num2:
num1, num2 = num2, num1
for i in range(1,num1+1):
if not (num1 % i ) and not (num2 % i):
gcdNum = i
return gcdNum
class Rational:
def __init__(self, numerator=0, denominator=1):
divisor = gcd(numerator, denominator)
self.__numerator = (1 if denominator > 0 else -1 ) * int(numerator/divisor)
self.__denominator = int(abs(denominator) / divisor)
def getNumerator(self):
return self.__numerator
def getDenominator(self):
return self.__denominator
# add a rational number to this number
def __getitem__(self, item):
if item is 0 :
return self.__numerator
else:
return self.__denominator
def __str__(self):
if self.__denominator is 1:
return str(self.__numerator)
else:
return str(self.__numerator) + "/" + str(self.__denominator)
def __add__(self, secondRational):
# 通分相加
n = self.__numerator * secondRational[1] + self.__denominator * secondRational[0]
d = self.__denominator * secondRational[1]
return Rational(n, d)
def __sub__(self,secondRational):
n = self.__numerator * secondRational[1] - self.__denominator * secondRational[0]
d = self.__denominator * secondRational[1]
return Rational(n, d)
def __mul__(self, other):
n = self.__numerator * other[0]
d = self.__denominator * other[1]
return Rational(n, d)
def __truediv__(self, other):
n = self.__numerator * other[1]
d = self.__denominator * other[0]
return Rational(n, d)
def __float__(self):
return self.__numerator / self.__denominator
def __int__(self):
return int(self.__float__())
# -*- coding:utf-8 -*-
"""
作者:Administrator
日期:2021年04月03日20:00
"""
from rational import Rational
r1 = Rational(4,2)
r2 = Rational(2,3)
#display result
print(r1.getDenominator(), r1.getNumerator())
print(r1, "+", r2, "=", r1 + r2)
print(r1, "-", r2, "=", r1 - r2)
print(r1, "*", r2, "=", r1 * r2)
print(r1, "/", r2, "=", r1 / r2)
# print(r1, ">", r2, "is", r1 > r2)
# print(r1, ">=", r2, "is", r1 >= r2)
# print(r1, "<", r2, "is", r1 < r2)
# print(r1, "<=", r2, "is", r1 <= r2)
# print(r1, "==", r2, "is", r1 == r2)
# print(r1, "!=", r2, "is", r1 != r2)
print("int(r2) is", int(r2))
print("float(r2) is ", float(r2))
print("r2[0] is", r2[0])
print("r2[1] is", r2[1])