回文联确认:flag&last是什么作用
def palindrome(string):length = len(string) 字符的长度?
last = length-1 这个作用是什么?-1的意思是?
length //= 2 回文联应该不会被2整除啊?
flag = 1 flag完全没懂什么作用
for each in range(length):
if string != string: 这个公式是每次确认1~7跟最后last-=1(6~0)配合?
flag = 0 flag为什么又变成0了
last -= 1 这个循环里,如果if成立,last最后等0就退出?
if flag == 1: 这个去掉会怎么样
return 1
else:
return 0
string = input('请输入一句话:')
if palindrome(string) == 1:
print('是回文联!')
else:
print('不是回文联!')
本帖最后由 Twilight6 于 2020-5-20 23:13 编辑
length = len(string) 字符的长度?
是的,就是字符串长度
last = length-1 这个作用是什么?-1的意思是?
是用于这:
if string != string:
你想下,last表示字符串全部长度减1后是几呢?实际上就是代表字符串最后一个参数的位置参数值
length //= 2 回文联应该不会被2整除啊?
这边用的是地板除法 , 向下取整的效果,因为你字符串只需要判断
第一个和最后一个是否相等
第二个和倒二个是否相等
第三个和倒三个是否相等.......
所以只需要for 循环字符串长度的一半即可达到目的
flag = 1 flag完全没懂什么作用
flag 在这个函数里就是用于判断for循环内是否成功判断为回文联
if string != string: 这个公式是每次确认1~7跟最后last-=1(6~0)配合?
这个参考第2个问题
flag = 0 flag为什么又变成0了
因为判断成功头尾对应位置的字符不同不是回文联
last -= 1 这个循环里,如果if成立,last最后等0就退出?
每次循环都会减少 1 而each每次都会增加1 直到循环结束退出循环
if flag == 1: 这个去掉会怎么样
这个去掉的话这里就无法判断了:
if palindrome(string) == 1:
print('是回文联!')
else:
print('不是回文联!')
因为这里判断条件是根据你返回的值是不是1进行判断是不是回文联
最后
如果对你有帮助就给我个最佳吧~~~{:10_288:} 记得养成注释加#的习惯:
def palindrome(string):
length = len(string) #字符的长度? 是的
last = length-1 #这个作用是什么?-1的意思是?最后一个字符的编号,减一是因为python计数从0开始
length //= 2 #回文联应该不会被2整除啊? 这个地板除是求长度的一半,长度偶数正好一半,长度奇数是减1后的一半
flag = 1 #就是个标记,等于1时是回文联
for each in range(length): #这个循环只检查一半长度,length已经地板除2了
if string != string: #这是把前半的字符和后半的作比对,比如6个字符,就是0-5,1-4,2-3
flag = 0 # 有一个不相等,就不是回文联,把标记改成0
last -= 1 #每循环一次,last减1位,each加1位,互相对应
if flag == 1: #flag等于1说明是回文联
return 1
else:
return 0
string = input('请输入一句话:')
if palindrome(string) == 1:
print('是回文联!')
else:
print('不是回文联!') 鱼币 育碧 育碧
页:
[1]