python实现顺序列表中 字符串替换满足条件的数

题目:

请实现一个函数,接收一个自然数n,输出一个从0到n的列表,列表中任意数符合以下条件,则以以下条件输出的字符串替换该位置的数,满足多个条件时,则多个条件输出的字符串拼接到一起.

  • 含有3或者能整除3的数字,输出 “Three”;
  • 含有5或者能整除5的数字,输出 “Five”;
  • 含有7或者能整除7的数字,输出 “Seven”.

思路及代码

方案一
def IntAppendStr(n): 
    """方案一"""""
    res_list = []
    for i in range(n):
        if i%3==0 and i %5==0 and i%7==0:
            res_list.append("ThreeFiveSeven")
        elif i%3==0 and i %5==0:
            res_list.append("ThreeFive")
        elif i %5==0 and i%7==0:
            res_list.append("FiveSeven")
        elif i %3==0 and i%7==0:
            res_list.append("ThreeSeven")
        elif i%3==0 or "3" in str(i):
            res_list.append("Three")
        elif i%5==0 or "5" in str(i):
            res_list.append("Five")
        elif i%7==0 or "7" in str(i):
            res_list.append("Seven")
        else:
            res_list.append(i)
    print(res_list)


if __name__ == '__main__':
    IntAppendStr(50)
方案二

def IntAppendStr(n):
    """方案二"""""
    res_list = []
    for i in range(n):
        if i % 3== 0 or "3" in str(i):
            if i % 5 ==0 or "5" in str(i):
                if i % 7 ==0 or "7" in str(i):
                    # 满足357
                    res_list.append("ThreeFiveSeven")
                else:
                    # 满足35
                    res_list.append("ThreeFive")
            elif i % 7 ==0 or "7" in str(i):
                #满足37
                res_list.append("ThreeSeven")
            else:
                # 满足3
                res_list.append("Three")
        elif i % 5 ==0 or "5" in str(i):
            if i % 7 ==0 or "7" in str(i):
                # 满足57
                res_list.append("FiveSeven")
            else:
                # 满足5
                res_list.append("Five")
        elif i % 7 == 0 or "7" in str(i):
            # 满足7
            res_list.append("Seven")
        else:
            # 不满足357
            res_list.append(i)
    print(res_list)
if __name__ == '__main__':
    IntAppendStr(50)
方案三
def IntAppendStr(n):
    res_list = []
    for i in range(n):
        res = ""
        if i % 3 == 0 or "3" in str(i):
            res+= "Three"
        if i % 5 == 0 or "5" in str(i):
            res += "Five"
        if i % 7 == 0 or "7" in str(i):
            res += "seven"

        if  res:
            res_list.append(res)
        else:
            res_list.append(i)
    print(res_list)
if __name__ == '__main__':
    IntAppendStr(50)

结果

['ThreeFiveSeven', 1, 2, 'Three', 4, 'Five', 'Three', 'Seven', 8, 'Three', 
'Five', 11, 'Three', 'Three', 'Seven', 'ThreeFive', 16, 'Seven', 'Three', 19, 
'Five','ThreeSeven', 22, 'Three', 'Three', 'Five', 26, 'Three', 'Seven', 29,
 'ThreeFive', 'Three', 'Three', 'Three', 'Three', 'FiveSeven', 'Three', 'Three', 'Three', 'Three', 
'Five', 41, 'ThreeSeven', 'Three', 44, 'ThreeFive', 46, 'Seven', 'Three', 'Seven']

以上三种方案层层递进,方案三深刻的理解for循环机制和if判断条件,而方案一和方案二主要着眼于if嵌套判断.

以上内容仅是代表个人总结 若有错误之处,还请批评指正,欢迎大家一起学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值