Python第十一次课堂作业(递归篇):递归逆序 大小写转换

题目在这里插入图片描述

递归逆序

用了三种方法实现,都差不多,只是遍历顺序不一样,可以拿其中一个出来用即可。

# 1. 用递归的方法,求用户输入的字符串的内容的逆序,例如我输入:abcde,输出:edcba
userInput = input("请输入字符串:")


# 方法一:递归之 从后往前把最后一个元素依次放到开头
def reverseString_one(userInput):
    if len(userInput) == 1:
        return userInput
    else:
        return userInput[-1] + reverseString_one(userInput[:-1])


print(reverseString_one(userInput))


# 方法二:递归之 从前往后把第一个元素依次放到最后
def reverseString_two(userInput):
    if len(userInput) == 1:
        return userInput
    else:
        return reverseString_two(userInput[1:]) + userInput[0]


print(reverseString_two(userInput))


# 方法三:递归之 前后元素交换
def reverseString_three(userInput):
    if len(userInput) == 1:
        return userInput
    else:
        return userInput[-1] + reverseString_three(userInput[1:-1]) + userInput[0]


print(reverseString_three(userInput))

大小写互换

最基础的一个实现方法,没什么高端用法,就体现递归思想即可。
修改了下,老师上节课下课前说要用ASCII码转换实现,题目却不注明,还是老样子要猜老师的意思才算完成。
使用方法一即可。

# 编写一个函数,对参数进行大小写转换
# 如果是大写转换成小写,如果是小写转换成大写,非英文字符不转换

# 方法一:递归转换 - ASCII码转换
def convert_ascii(chs):
    source = ord(chs[0])
    if 65 <= source <= 90:
        target = chr(source + 32)
    elif 97 <= source <= 122:
        target = chr(source - 32)
    else:
        target = chr(source)

    if len(chs) == 1:
        return target
    else:
        return target + convert_ascii(chs[1:])


#  方法二:递归转换 - 内置方法转换
def convert_api(s):
    if s == '':
        return ''
    elif s[0].isupper():
        return s[0].lower() + convert_api(s[1:])
    elif s[0].islower():
        return s[0].upper() + convert_api(s[1:])
    else:
        return s[0] + convert_api(s[1:])


if __name__ == '__main__':
    userInput = input("请输入字符串:")
    if userInput.strip() == "":
        print("你输入的内容为空!")
    else:
        print("方法一(递归转换 - ASCII码转换):" + convert_ascii(userInput))
        print("方法二(递归转换 - 内置方法转换):" + convert_api(userInput))

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值