入门学习课后习题19讲的回联文程序不太懂,可以帮忙解释一下吗谢谢!!
代码如下: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-1-29 10:37 编辑
def palindrome(string):
length = len(string) # length = 字符串长度
last = length-1 # last = 字符串 string 最后一个字符的索引
length //= 2 # length = length / 2,循环次数,由于每次比较一对字符,所以,循环次数是字符串长度的一半
flag = 1 # flag = 1 先假定字符串就是回文联,然后,试图在循环检查中予以否定
for each in range(length): # 循环开始
if string != string:# 如果首尾对应字符不相等
flag = 0 # 否定前面的假设,字符串不是回文联
last -= 1 # 字符串末尾索引减 1,准备下一对字符的比较
if flag == 1: # 循环结束后,根据 flag 的值是否为 1 判断字符串是否为回文联
return 1
else:
return 0
string = input('请输入一句话:')
if palindrome(string) == 1:
print('是回文联!')
else:
print('不是回文联!') for循环长度半次数,如果string的单一循环不能跟最后一个序列匹配上的话,就继续下次循环;
...
(原理就是each递增,last递减,保证每次对比都是头尾相配元素)
如果有一次匹配不上的话,flag就为0,函数结果返回0;反之则为1,函数返回1.
下面就是调用函数返回的结果跟1比较,相等就打印是回文,不等就打印不是回文。
要善于搜索
[已解决]19讲课后题 怎么理解 0. 判断传入的字符串参数是否为“回文联”
https://fishc.com.cn/thread-185799-1-1.html
(出处: 鱼C论坛)
jackz007 发表于 2021-1-29 10:36
谢谢导师 heidern0612 发表于 2021-1-29 10:37
for循环长度半次数,如果string的单一循环不能跟最后一个序列匹配上的话,就继续下次循环;
...
好的谢谢大佬 qq1151985918 发表于 2021-1-29 10:37
要善于搜索
[已解决]19讲课后题 怎么理解 0. 判断传入的字符串参数是否为“回文联”
https://fishc.com ...
好的谢谢大佬
页:
[1]