While 循环还是 If 代码?坚持这个功能
While loop or If code? Stuck with this function
我被要求编写一个函数 generate_palindrome() 接受给定的正整数 n 并应用以下过程:
(i) 检查数字是否为回文。如果是,则 return 否则继续下一步。
(ii) 将数取反,计算原数与取反数之和
(iii) 从 (i) 开始重复(直到找到回文。)
我写了这个函数:
def generate_palindrome(n):
numbers = list(str(n))
for i in range(len(numbers)):
if numbers[i] == numbers[-i-1]:
return n
else:
while numbers[i] != numbers[-i-1]:
rev = list(reversed(numbers))
rev_num = int(''.join(rev))
n = n + rev_num
return n
我不知道为什么当我尝试一个不是回文的随机数时,代码没有响应,它仍然是 运行 直到不确定的时间。我尝试用 if
代码更改它,但它没有迭代我的函数,所以我认为我唯一的机会是使用 while
代码,但也许我错了。你怎么看?
我认为您应该在 while
循环中添加一个损坏的功能,以便在达到特定条件时它会中断。而且我认为最后一个 return 语句的缩进是错误的。 :)
给你:
#!/usr/bin/env python3
def generate_palindrome(num: int):
if str(num) == str(num)[::-1]:
return num
else:
while str(num) != str(num)[::-1]:
rev = int(str(num)[::-1])
num += rev
return num
if __name__ == '__main__':
print(generate_palindrome(212)) # prints 212
print(generate_palindrome(12)) # prints 33
print(generate_palindrome(43)) # prints 77
这是最佳解决方案:
def generate_palindrome(n):
while True:
number = list(str(n))
num = ''
if number[::-1] == number:
for i in number:
num = num + i
print(num)
break
print(a)
else:
for i in number:
num = num + i
n = int(num) + int(num[::-1])
generate_palindrome()
我被要求编写一个函数 generate_palindrome() 接受给定的正整数 n 并应用以下过程:
(i) 检查数字是否为回文。如果是,则 return 否则继续下一步。
(ii) 将数取反,计算原数与取反数之和
(iii) 从 (i) 开始重复(直到找到回文。)
我写了这个函数:
def generate_palindrome(n):
numbers = list(str(n))
for i in range(len(numbers)):
if numbers[i] == numbers[-i-1]:
return n
else:
while numbers[i] != numbers[-i-1]:
rev = list(reversed(numbers))
rev_num = int(''.join(rev))
n = n + rev_num
return n
我不知道为什么当我尝试一个不是回文的随机数时,代码没有响应,它仍然是 运行 直到不确定的时间。我尝试用 if
代码更改它,但它没有迭代我的函数,所以我认为我唯一的机会是使用 while
代码,但也许我错了。你怎么看?
我认为您应该在 while
循环中添加一个损坏的功能,以便在达到特定条件时它会中断。而且我认为最后一个 return 语句的缩进是错误的。 :)
给你:
#!/usr/bin/env python3
def generate_palindrome(num: int):
if str(num) == str(num)[::-1]:
return num
else:
while str(num) != str(num)[::-1]:
rev = int(str(num)[::-1])
num += rev
return num
if __name__ == '__main__':
print(generate_palindrome(212)) # prints 212
print(generate_palindrome(12)) # prints 33
print(generate_palindrome(43)) # prints 77
这是最佳解决方案:
def generate_palindrome(n):
while True:
number = list(str(n))
num = ''
if number[::-1] == number:
for i in number:
num = num + i
print(num)
break
print(a)
else:
for i in number:
num = num + i
n = int(num) + int(num[::-1])
generate_palindrome()