python 课后答案求助
def palindrome(string):length = len(string)
last = length-1
length //= 2
flag = 1
for each in range(length):
if string != string:
flag = 0
last -= 1
if flag == 1:
return 1
else:
return 0
string = input('请输入一句话:')
if palindrome(string) == 1:
print('是回文联!')
else:
print('不是回文联!')
这块代码的中间核心部分能不能帮忙注释下,分享一下解题思路 本帖最后由 jackz007 于 2021-2-15 22:44 编辑
def palindrome(string):
length = len(string) # length = 字符串 string 的长度
last = length-1 # last 被初始化为指向 string 的最后一个字符
length //= 2 # 循环次数 = string 长度的一半,因为每次比较 string 中的 2 个字符
flag = 1 # 检查前,先假定 string 就是回文联,然后,在后面的循环中尽量予以否定
for each in range(length): # 开始循环,下标 each 的变化范围为: 0 ~ len(string)// 2 - 1
if string != string: # 字符串首尾对应字符进行比较,如果不相等
flag = 0 # 置 flag = 0,前面一开始的假设在这里被推翻
last -= 1 # 字符串尾部指针向字符串开头的方向步进一个字符,准备进行下一对字符的比较
if flag == 1: # 如果循环结束 flag 还是 1,那就是说,字符串所有的首尾字符对确实相等
return 1 # string 真的就是回文联
else: # 否则,flag = 0
return 0 # 既然鸡蛋中被挑出了骨头,那么,string 自然就不是回文联 我换了一个思路,利用reverse()来做回文判断,大佬看看怎么样。
def huiwen(string):
string1=list(string)#将输入字符串转化为列表
string2=string1[:]#复制一个列表2,用于比较
string1.reverse() #将列表1翻转
if string1==string2: #判断列表1和列表2是否相同
return 1 #如果相同,则返回1
else:
return 0 #如果不同则返回0
string=input("请输入一句话:")
if huiwen(string)==1:
print("是回文联")
else:
print("不是回文联")
页:
[1]