4-3第八章 更多字符串和特殊方法

学习目标

  • 学习如何创建字符串
  • 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类

  1. 字符串和数值都是不可变对象,一旦创建了字符串和数值,它的内容就是不可变的
    在这里插入图片描述
    所以对于不可变对象中,相同值得id是相同得,例如int类
    在这里插入图片描述

  2. 处理字符串得函数

	s = "helloworld"
	len(s)
	max(s)
	min(s)
  1. 下标运算符s[i]
	s="welcome"
	for i in range(0,len(s),2):
		print(s[i])
	# s[-1] = s[len(s)-1] 

由于字符串是不可变得内容,所以不能改变他们的内容。
s[2]=“A” 是非法的

  1. 截断运算符 [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]
  1. 连接运算符+ 和赋值运算符 *
	+ 
	* 
  1. 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
  1. 迭代字符串
s = str("welcome")
for ch in s:
	print(ch)
  1. 测试字符串
    在这里插入图片描述
  2. 搜索字串
    在这里插入图片描述
    在这里插入图片描述
  3. 转换字符串
    在这里插入图片描述
    在这里插入图片描述
  4. 删除字符串的空格
    在这里插入图片描述

实例:将十六进制的数转化为十进制的数

# -*- 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])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值