题目:
请实现一个函数,接收一个自然数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嵌套判断.