编写一个程序来检查一个数字是否是双基回文数。
回文是指从前往后读和从后往前读都一样的字母、数字的序列。
双基回文数是指在十进制和二进制表示中都是回文的数字。
例如:
585 = 1001001001
是一个双基回文,其二进制是回文形式,十进制也是回文形式。
- 定义函数
check_double_base_palindrome()
,参数为整数。 - 在函数内,检查数字的十进制和二进制形式是否都是回文。
- 如果是双基回文,返回
True
,否则返回False
。
示例输入
313
示例输出
True
本题涉及python切片和进制转换函数的灵活应用。
首先将数字转换文字符串,然后对字符串进行切片,注意切片只能用于字符串、列表等序列,不能用于数字,因此要多一个类型转换操作。
切片格式:sequence[start:stop:step],其中start表示开始的位置,stop表示切片结束的位置,但不包括该位置的元素,step表示步长。
本题中的[::-1]中的第一个:表示取整个字符串,第二个:对应格式中stop和step之间的:,-1表示步长为-1,说明是从最后一个元素往前面一个元素排列,即翻转。
本题中还用到了进制转换函数bin(),注意其参数是一个十进制数,不能是字符串,而且其结果是以0b开头的二进制表示字符串,需要对其进行切片处理。
def check_double_base_palindrome(number):
# 此处编写代码
if number!=int(str(number)[::-1]):
return False
if str(bin(number)[2:])!=str(bin(number)[2:])[::-1]:
return False
return True
# 获取用户输入
number = int(input())
# 调用函数
print(check_double_base_palindrome(number))
标签:python,number,切片,字符串,双基,十进制,回文
From: https://blog.csdn.net/JYXCCC/article/details/139878871