如果前进的最后4个元素等于后退的4个元素,则打印该数字。我输入了一个数字,其中最后4个元素显然是回文。为什么不打印这个号码?
def checkNum(i):
num = str(i)
if num[len(num)-5:len(num)-1:1] == num[len(num)-5:len(num)-1:-1]:
print(num)
checkNum(777777)
答案 0 :(得分:6)
你的切片错了。字符串的左侧部分应按照以下方式切片:num[:4]
,右侧部分应按照以下方式切片:num[:-5:-1]
修改评论:
您始终可以打印您尝试在该功能中使用的切片。要解决此问题,请使用比777777更可视化的内容。例如:123456789。然后,如果在函数中打印切片,您将看到要比较的字符串:
def checkNum(i):
num = str(i)
print(num[-4:])
print(num[-4::-1])
print(num[-5:-1])
checkNum(123456789)
您将获得的输出是:
6789
654321
9876
这显示了切片的工作方式。当您使用负数索引时,您将从最后开始执行肯定步骤,因此num[-4:]
将返回原始顺序中的最后4个字符。否定步骤将返回第一个字符。考虑一些手动测试,它确实节省了大量时间。
答案 1 :(得分:1)
在平等的后半部分,你将从len(num)-1
向后退到len(num)-5
!
这是正确的版本:
def checkNum(i):
num = str(i)
if num[len(num)-5:len(num)-1:1] == num[len(num)-1:len(num)-5:-1]:
print(num)
checkNum(777777)
答案 2 :(得分:1)
>>> num = str(777777)
>>> print num[len(num)-5:len(num)-1:1]
7777
>>> print num[len(num)-5:len(num)-1:-1]
***None***
要从最后一个位置访问最后四个,您需要
>>> print num[len(num)-1:len(num)-5:-1]
7777
def checkNum(i):
num = str(i)
if num[len(num)-5:len(num)-1:1] == num[len(num)-1:len(num)-5:-1]:
print(num)
>>> checkNum(777777)
777777
答案 3 :(得分:1)
你可以前4个字符前进([:4]
),反转字符串([::-1]
)并再次取4个字符(现在最后4个字符反转):
def checkNum(i):
num = str(i)
if num[:4] == num[::-1][:4]:
print(num)
>>> checkNum("11118354367451111")
11118354367451111
>>> checkNum("1111835436745111")
>>>
>>> checkNum("otto")
otto
>>>