[每日一题]17、用Python将字符串进行特殊的转换

点击上方Python3X”,选择“置顶或者星标

第一时间收到精彩推送!


Python Every Day, 第 17 天




问题:


任意给定一个字符串,要求:

  • 将小写的字母转换成大写

  • 将大写的字母转换成小写

  • 将数字转换成9减去这个数的值




解决这个问题,需要介绍几个函数


isdigit()

用于检测字符串是否由纯数字组成,如果只要包含一个非数字就返回False
 
 
a = '12315'print(a.isdigit()) # True# 包含字符ab = '12345a'print(b.isdigit()) # False# 包含符号%c = '123%15'print(c.isdigit()) # False
print(a.isdigit()) # True
# 包含字符a
b = '12345a'
print(b.isdigit()) # False
# 包含符号%
c = '123%15'
print(c.isdigit()) # False



isalpha()

检测字符串是否只有字母组成

 
 
a = 'abcd'print(a.isalpha()) # Trueb = 'abcd123'print(b.isalpha()) # Falsec = 'abc$d'print(c.isalpha()) # False
print(a.isalpha()) # True
b = 'abcd123'
print(b.isalpha()) # False
c = 'abc$d'
print(c.isalpha()) # False


swapcase()

用于对字符串大小写字母的转换
 
 
a = 'aBcD%Fe'print(a.swapcase()) # AbCd%fE
print(a.swapcase()) # AbCd%fE

其他补充
 
 
# 将字母全都转换成大写print(a.upper()) # ABCDEFG# 将字母全都转换成小写print(a.lower()) # abcdefg# 判断是否是大写 Falseprint('aaa'.isupper())# 判断是否是小写 # Trueprint('bbb'.islower())
print(a.upper()) # ABCDEFG
# 将字母全都转换成小写
print(a.lower()) # abcdefg

# 判断是否是大写 False
print('aaa'.isupper())
# 判断是否是小写 # True
print('bbb'.islower())


知道了上面几个函数,这个题就比较容易解了


 
 
# 方法一def transform(string):    new_str = ''    for i in string:        if i.isdigit():            new_str += str(9 - int(i))        else:            new_str += i.swapcase()    return new_str# 方法二def transform2(string):    new_str = ''    for i in string:        if i.isdigit():            new_str += str(9 - int(i))        elif i.isupper():            new_str += i.lower()        elif i.islower():            new_str += i.upper()        else:            new_str += i    return new_strif __name__ == '__main__':    string = 'ava1241@o3#1-1231;.,,^$d'    print(transform(string)) # AVA8758@O6#8-8768;.,,^$D    print(transform2(string)) # AVA8758@O6#8-8768;.,,^$D
def transform(string):
    new_str = ''
    for i in string:
        if i.isdigit():
            new_str += str(9 - int(i))
        else:
            new_str += i.swapcase()
    return new_str


# 方法二
def transform2(string):
    new_str = ''
    for i in string:
        if i.isdigit():
            new_str += str(9 - int(i))
        elif i.isupper():
            new_str += i.lower()
        elif i.islower():
            new_str += i.upper()
        else:
            new_str += i
    return new_str

if __name__ == '__main__':
    string = 'ava1241@o3#1-1231;.,,^$d'
    print(transform(string)) # AVA8758@O6#8-8768;.,,^$D
    print(transform2(string)) # AVA8758@O6#8-8768;.,,^$D



补充: 方法一可以写的更pythonic一点,如下:


 
 
string = 'ava1241@o3#1-1231;.,,^$d'result = ''.join([str(9 - int(i)) if i.isdigit() else i.swapcase() for i in string])print(result)  # AVA8758@O6#8-8768;.,,^$D
result = ''.join([str(9 - int(i)) if i.isdigit() else i.swapcase() for i in string])
print(result)  # AVA8758@O6#8-8768;.,,^$D



往期Python Every Day

[每日一题]16、用Python算出100万内的雷劈数

[每日一题]15、用Python输出杨辉三角

[每日一题]14、Python中is和== 的区别

[每日一题]13、任意数组,实现一个特定的排序

[每日一题]12、Python中的多线程

[每日一题]11、用Python打印乘法口诀表

[每日一题]10、一道关于九宫格的面试题

[每日一题]9、Python中文件的读取

[每日一题]8、Python中的深拷贝和浅拷贝

[每日一题]7、Python中的super()函数

 [每日一题]6、Python中的可变参数

[每日一题]5、Python中的lambda表达式

[每日一题]4、Python中的迭代器

[每日一题]3、Python实现删除list中重复元素的几种方式

[每日一题]2、Python中的类的定义和装饰器@classmethod与@staticmethod

[每日一题] 1、Python中的可变对象与不可变对象


640?



感谢您的阅读


640?wx_fmt=gif


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值