我想吐出一个回文列表,直到我给的某个字母。
关于这部分:
def pyramid_palindrome(last_letter):
for letter in range(97,last_letter):
last_letter = last_letter - (last_letter-1)
print call_first_part_palindrome(last_letter)
print call_second_part_palindrome(last_letter)
我想要的是,这样做:
a
aba
abcba
abcdcba
abcdedcba
abcdefedbca
abcdefgfedcba
abcdefghgfedcba
....
我是这样想的:
"I will give the last letter as an input, and it will keep iterating the palindrome until the last letter is being checked."
问题是我没办法一个一个吐出回文,像金字塔一样往上爬。有人能指出我正确的方向吗?
Am I right when I say I need to use a
for loop
in the first function?
这是我的完整代码:
def pyramid_palindrome(last_letter):
for letter in range(97,last_letter):
last_letter = last_letter - (last_letter-1)
print call_first_part_palindrome(last_letter)
print call_second_part_palindrome(last_letter)
def call_first_part_palindrome(last_letter):
letters_a_to_y = ""
for letter in range(97,last_letter):
letters_a_to_y += chr(letter)
return(letters_a_to_y)
def call_second_part_palindrome(last_letter):
letters_y_to_a = ""
for letter in range(last_letter,96,-1):
letters_y_to_a += chr(letter)
return(letters_y_to_a)
pyramid_palindrome(112)
我觉得我已经很接近了,但还不能画龙点睛。
最佳答案
您可以使用字符串切片 和string.ascii_lower
来简化您的整个逻辑。作为:
import string
alphs = string.ascii_lowercase # returns string of lower case characters
last_letter = 'f'
for i in range(len(alphs)):
print alphs[:i]+alphs[i::-1]
if alphs[i] == last_letter: # break the loop when `last_letter` is found
break
这将生成如下输出:
a
aba
abcba
abcdcba
abcdedcba
abcdefedcba
编辑如果你不想导入string
,你可以通过使用得到小写字符的字符串:
alphs = ''.join(chr(i) for i in range(97,123))
关于python - 如何使这个 for 循环在 Python 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40674736/