|
发表于 2022-5-16 21:40:46
|
显示全部楼层
你 Bai 位的数算错了,应该是 num // 100,另外题目中写的是 "子串" 不是指单个字符
应该要获取子串进行计算 ASCII 值之和,而不是你代码中循环单个字符进行计算 ASCII 后直接判断水仙花数
这里用两个 for 循环嵌套 滑动窗口法 遍历子串,参考代码:
- def Str_sli(str):
- def Nar_Num(num):
- Ge = num % 10
- Shi = num // 10 % 10
- Bai = num // 100
- if num == Ge ** 3 + Shi ** 3 + Bai ** 3:
- return True
- else:
- return False
- length = len(str)
- for l in range(0, length):
- for r in range(l + 1, length + 1):
- str_ascii = 0
- for i in str[l:r]:
- str_ascii += ord(i)
- if Nar_Num(str_ascii):
- print(str[l:r])
- if __name__ == '__main__':
- Str_sli('!(((')
复制代码 |
|