判断一个五位数是不是一个回文数的九种方法
目前之总结出九种判断一个五位数是否是回文数的方法,还在继续研究新方法,后面会继续持续更新,欢迎留言讨论
# 方法一:直接通过索引取个位和万位,十位和千位判断
def two_question01():
print("第二题运行结果:")
while True:
num=input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num)
if pattern1 and len(num)==5:
if num[0] == num[-1] and num[1] == num[-2] and num[0] != '0':
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
two_question01()
# 方法二:通过反向切片的方法直接判断输入内容与反切结果是否相等来判断
def two_question02():
print("第二题运行结果:")
while True:
num=input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num)
if pattern1 and len(num) == 5:
if num == num[::-1] and num[0] != '0':
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
# two_question02()
# 方法三:通过数学运算取个位和万位,十位和千位进行判断
def two_question03():
print("第二题运行结果:")
while True:
num1 = input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num1)
if pattern1 and len(num1) == 5:
num = int(num1)
if (num//10000 == num % 10
and (num//1000) % 10 == (num % 100)//10
and num1[0] != '0'):
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
# two_question03()
# 方法四:利用列表的反序方法,将输入的内容转换为列表,在进行反序,比较前后是否相等
def two_question04():
print("第二题运行结果:")
while True:
num=input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num)
if pattern1 and len(num) == 5:
li=list(num)
if li == list(reversed(num)) and num[0] != '0':
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
# two_question04()
# 方法五:利用列表的正向切片和反向切片,对对称位进行比较判断
def two_question05():
print("第二题运行结果:")
while True:
num = input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num)
if pattern1 and len(num) == 5:
li=list(num)
if li[0:2] == li[-1:-3:-1] and num[0] != '0':
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
# two_question05()
# 方法六:利用切片方法配合集合进行判断,将输入的内容对称位切出来,
# 在转换成集合,利用集合特性进行判断
def two_question06():
print("第二题运行结果:")
while True:
num = input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num)
if pattern1 and len(num) == 5:
if (len(set(num[::4])) < 2
and len(set(num[1:4:2])) < 2
and num[0] != '0'):
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
# two_question06()
# 方法七:利用for循环配合集合去重进行判断,将输入的内容转换成集合,
# 在转换成集合,利用集合特性进行判断
def two_question07():
print("第二题运行结果:")
while True:
num = input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num)
if pattern1 and len(num) == 5:
s = set()
s1 = set()
for id in range(1,6):
if id == 3:
continue
elif id == 1 or id == 5:
s.add(num[id - 1])
elif id == 2 or id == 4:
s1.add(num[id-1])
if (len(s) <2
and len(s1) <2
and num[0] != '0'):
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
# two_question07()
# 方法八:利用切片方法配合字典进行判断,将输入的内容对称位切出来,
# 在转换成存进字典,利用字典key值唯一的特性进行判断
def two_question08():
print("第二题运行结果:")
while True:
num = input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num)
if pattern1 and len(num) == 5:
d = {}
d.update({num[0]:num[0],num[-1]:num[-1]})
d1 = {}
d1.update({num[1]:num[1],num[-2]:num[-2]})
if len(d) < 2 and len(d1) < 2 and num[0] != '0':
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
# two_question08()
# 方法九:利用切片方法配合字典进行判断,将输入的内容对称位切出来,
# 在转换成存进字典,利用字典key值唯一的特性进行判断,
# 本方法利用了字典的fromkeys()方法
def two_question09():
print("第二题运行结果:")
while True:
num = input('请输入一个五位数:')
pattern1 = re.search("([0-9]{5})", num)
if pattern1 and len(num) == 5:
li = [num[0], num[-1]]
li1 = [num[1], num[-2]]
d = {}
d1 = {}
d = d.fromkeys(li)
d1 = d1.fromkeys(li1)
if len(d) < 2 and len(d1)<2 and num[0] != '0':
print('这是一个回文数!')
else:
print('这不是一个回文数。')
break
else:
pass
# two_question09()