我也是初学者 不知道你能不能看懂:def palindrome(string):
length = len(string)
print('打印length: %s' % length)
last = length - 1 # 计算机是二进制计算的,从0 开始 所以要减去1,即 索引值最后一位
print('打印 last: %s' % last)
length //= 2
print('打印 length %s' % length)
flag = 1 # 定义变量 flag 为1 真 为0 假,留着下面用
for each in range(length):
if string[each] != string[last]: # 如果不想等 flag 值为0 不执行下面 if flag == 1 的判断.
# 其实这里完全可以,比较第一个索引值和最后一个索引值,如果不想等就打印不是回文联,不用挨个判断.
# 这个的用法是,下面判断完第一个相等再判断第二个是否相等直到判断最后一个.
print('迭代中打印 每次获取 each: %s' % each)
print('打印string[each]的结果: %s ' % string[each])
print('迭代中打印 last 的值: %s' % last)
print('打印string[last]的结果 %s ' % string[last])
flag = 0 # 如果 string[each] 和 string[last] 不相等,flag 为假 即 0
last -= 1 # 第一次循环 last 值为索引值最后一位,减一下次循环就变成索引值倒数第二位
if flag == 1: # 第一次执行到这里的时候,
number = 0
print('加个输出,看下这里是不是每次都执行: %d' % number)
number += 1
return 1
else: # 从打印结果看 这里只是 for 循环结束后才执行一次这里的代码
num = 10
print('加个输出,看下这里是不是每次都执行: %d' % num)
num += 1
return 0
string = input('请输入一句话:')
if palindrome(string) == 1:
print('是回文联')
else:
print('不是回文联')
不是回文联的 打印结果如下:
D:\Pycharm代码\venv\Scripts\python.exe "D:/Pycharm代码/7-12-1 判断是否为回文联.py"
请输入一句话:一二三四五六七八九
打印length: 9
打印 last: 8
打印 length 4
迭代中打印 每次获取 each: 0
打印string[each]的结果: 一
迭代中打印 last 的值: 8
打印string[last]的结果 九
迭代中打印 每次获取 each: 1
打印string[each]的结果: 二
迭代中打印 last 的值: 7
打印string[last]的结果 八
迭代中打印 每次获取 each: 2
打印string[each]的结果: 三
迭代中打印 last 的值: 6
打印string[last]的结果 七
迭代中打印 每次获取 each: 3
打印string[each]的结果: 四
迭代中打印 last 的值: 5
打印string[last]的结果 六
加个输出,看下这里是不是每次都执行: 10
不是回文联
是回文联的打印结果如下:
D:\Pycharm代码\venv\Scripts\python.exe "D:/Pycharm代码/7-12-1 判断是否为回文联.py"
请输入一句话:上海自来水来自海上
打印length: 9
打印 last: 8
打印 length 4
加个输出,看下这里是不是每次都执行: 0
是回文联
|