def is_palindrome(n): return str(n) == str(n)[::-1]n = int(input())if n < 1 or n > 54: print("输入错误,请重新输入!")else: found = False for i in range(10000, 100000): if is_palindrome(i) and is_palindrome(i*11): digits_sum = sum([int(d) for d in str(i)]) if digits_sum == n: print(i) found = True for i in range(100000, 1000000): if is_palindrome(i) and is_palindrome(i//10): digits_sum = sum([int(d) for d in str(i)]) if digits_sum == n: print(i) found = True if not found: print("无满足条件的数")
时间: 2024-02-19 22:00:29 浏览: 97
challenge-python-01:完整的is_palindrome
这是一个判断各位数字之和等于n的5位和6位十进制回文数的Python程序,如果输入的数不在指定的范围内,则输出"输入错误,请重新输入!",如果没有符合条件的数,则输出"无满足条件的数"。
具体来说,这个程序先定义了一个函数is_palindrome(n),用来判断一个数n是否为回文数,然后读入一个正整数n,如果n不在1到54之间,则输出"输入错误,请重新输入!";否则,程序从10000到99999和100000到999999之间遍历所有的5位和6位回文数,判断它们的各位数字之和是否等于n,如果是,则输出这个回文数,并将found设置为True。最后,如果没有找到符合条件的数,则输出"无满足条件的数"。
需要注意的是,这个程序的实现有一个小问题,即没有考虑到输入的数为0的情况,因为0不在1到54之间,但它的各位数字之和等于0,因此应该输出一个0。可以将第3行的判断条件修改为n <= 0 or n > 54,然后在第7行添加一个特判即可。
阅读全文