python 练习2020/7/19

#10. 实现字符串的upper、lower以及swapcase方法
#upper:
def upper(s):
    result=''
    for i in s:
        if i>='a' and i<='z':
            result+=chr(ord(i)-32)
        else:
            result+=i
    return result

print(upper('df134sdA'))


#lower:
def lower(s):
    result=''
    for i in s:
        if i>='A' and i<='Z':
            result+=chr(ord(i)+32)
        else:
            result+=i
    return result

print(lower('safWQERWE12334'))


#swapcase:
def swapcase(s):
    result=''
    for i in s:
        if i>='a' and i<='z':
            result+=chr(ord(i)-32)
        elif i>='A' and i<='Z':
            result+=chr(ord(i)+32)
        else:
            result+=i
    return result

print(swapcase('affDFE12343***'))

#11. 实现字符串的find方法
#查找一个字符
def find(s,target_str):
    if not isinstance(s,str) and not isinstance(target_str,str):
        return False
    result=[]
    for i in range(len(s)):
        if s[i]==target_str:
            result.append(i)

    return result

print(find('afdfddfd','d'))

#查找多个字符
def find(s,target_str):
    if not isinstance(s,str) and not isinstance(target_str,str):
        return False
    result=[]
    start=0
    length=len(target_str)
    for i in range(len(s)):
        if s[i:i+length]==target_str:
            result.append(i)
            start+=length
        else:
            start+=1

    return result

print(find('abababdadfdfab','ab'))

#12. 实现字符串的isalpha方法
import string
def isalpha(s):
    if not isinstance(s,str):
        return False
    for i in s:
        if i not in string.ascii_letters:
            return False
    else:
        return True


print(isalpha('dfdsf'))
print(isalpha('dfd3243'))

13. 实现字符串的isdigit方法
import string
def isdigit(s):
    if not isinstance(s,str):
        return False
    for i in s:
        if i not in string.digits:
            return False
        
    return True

print(isdigit('221q232'))
print(isdigit('355466'))

#14. 实现字符串的isalnum方法
import string
def isalnum(s):
    if not isinstance(s,str):
        return False
    for i in s:
        if i not in string.ascii_letters and i not in string.digits:
            return False
    else:
        return True

print(isalnum('ssdfd3243'))
print(isalnum('dfsad'))
print(isalnum('34234'))
print(isalnum('*er313'))

#15. 实现字符串的join方法
def join(s,join_str=None):
    if join_str==None:
        join_str=''
    result=''
    for i in s:
        result+=i+join_str
    if join_str=='':
        return result
    else:
        return result[:-1] #开区间,最后一位不用加上join_str

print(join(['a','b','c']))
print(join(['a','b','c'],'*'))


#16. 实现字符串的replace方法
def replace(s,sub,dest,times=None):
    if times == None:
        times = s.count(sub)
    sub_index = []#sub的索引位置
    sub_length = len(sub)
    dest_length = len(dest)
    s = list(s)
    for i in range(len(s)):
        if s[i:i + sub_length] == list(sub):
            sub_index.append(i)
    
    n = 0#记录替换次数
    print(n)
    
    for index in sub_index:
        if times > 0:
            #每次替换后子串往后移动的位数
            offset = n*(dest_length - sub_length )
            #更新需要替换的index位置
            index = index + offset
            s[index : index + sub_length] = list(dest)
            n += 1
            times -= 1
    return "".join(s)
        

print(replace("abca1a","a","xy"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值