我被困在一个问题测试中。 提示是:
回文是一个单词、数字、短语或其他字符序列 向后读和向前读一样,比如 madam、racecar 或 number 10801.
所有小于10,000的回文数之和是多少?
到目前为止我的代码是:
def is_numeric_palindrome(number):
"""
:param number: an integer
:return: true if number is a numeric palindrome
"""
number_as_string = str(number)
number_digit_length = len(number_as_string)
for i in range(0, int(number_digit_length / 2)):
# print(i)
# print(f"number_as_string[i]={number_as_string[i]},"
# f" number_as_string[:i]={number_as_string[number_digit_length - i - 1]}")
if not number_as_string[i] is number_as_string[number_digit_length - i - 1]:
return False
return True
def sum_numeric_palindromes(upper_limit):
"""
:param upper_limit: maximum number
:return: the sum of all numeric palindrome between 0 and upper_limit (upper_limit not included)
"""
palindrome_sum = 0
# upper limit not included
for i in range(0, upper_limit - 1):
if is_numeric_palindrome(i):
palindrome_sum += i
return palindrome_sum
我已经尝试过,无论是否将单个数字计算为回文。
我得到 535041 或 534996,但两个选项都被拒绝了。
我做错了什么??
试试这个,你的循环从 0 开始。
def is_numeric_palindrome(number):
"""
:param number: an integer
:return: true if number is a numeric palindrome
"""
number_as_string = str(number)
number_digit_length = len(number_as_string)
for i in range(0, int(number_digit_length / 2)):
# print(i)
# print(f"number_as_string[i]={number_as_string[i]},"
# f" number_as_string[:i]={number_as_string[number_digit_length - i - 1]}")
if not number_as_string[i] is number_as_string[number_digit_length - i - 1]:
return False
return True
def sum_numeric_palindromes(upper_limit):
"""
:param upper_limit: maximum number
:return: the sum of all numeric palindrome between 0 and upper_limit (upper_limit not included)
"""
palindrome_sum = 0
# upper limit not included
for i in range(1, upper_limit):
if is_numeric_palindrome(i):
palindrome_sum += i
return palindrome_sum
print(sum_numeric_palindromes(10000))
试试这个:
def is_palindrom(number):
return str(number) == str(number)[::-1]
def sum_palindroms():
sum = 0
for i in range(10000):
if is_palindrom(i):
sum += i
return sum
print(sum_palindroms())