【日常提问】回文联判断程序
小甲鱼老师的函数部分第二课 课后题要求设计一个程序判断是否为回文联(就是字符串对称 比如 上海自来水来自海上)我写了这样的
def judge(temp):
if len(temp)%2 != 0:
list1 = list(temp)
list2=[]
for each in list1:
list2 == list1.pop()
if list1 == list2:
return(print('是回文联!'))
else:
return(print('不是回文联!'))
else:
return(print('不是回文联!'))
word = input('请输入一句话')
temp = str(word)
judge(temp)
思路就是先判断长度一定为奇数才会是回文联
然后把字符串转到列表,再把元素依次提出来形成另一个列表 如果这两个列表相等就是回文联
但好像并没有 list1 == list2 这样的判断方法??? 这里有什么技巧可以判断两个列表相等吗?
(目前还没有看标准答案想尽量尝试用自己的思路去做)
有,但是你这里是不会相等的
而且没有==这种操作
list2 == list1.pop() 1、为什么非得长度是奇数才是回文联呢?长度为偶数也是回文联啊?(比如"上海海上"就是个回文联。)
2、为啥要变成两个列表比较,一个字符串跟自己的逆向比较不就行了吗?
例如函数里刚学的reverse函数。或者字符串的切片,索引什么的都可以进行比较。
3、双等是比较,单等是赋值。弄清楚概念哟~所以你list2应该是单等 list1的pop。而不是两者相互比较。 我也是新手一枚,这是我写的代码,也不知道对不对,仅供参考。有问题请帮我指出,谢谢!
def list():
list1 = input("请输入一段话")
list2 = []
list3 = []
if len(list1) % 2 != 0 and len(list1) > 1:
for i in list1:
list2.insert(0,i)
list3.append(i)
# print(list2)
# print(list3)
if list2 == list3:
print("TRUE")
else:print("FALSE")
else:print("FALSE")
list()
lin1481989286 发表于 2018-11-23 14:42
我也是新手一枚,这是我写的代码,也不知道对不对,仅供参考。有问题请帮我指出,谢谢!
def list():
...
你这个很有创意啊!天才~
哈哈 ,第一次见这么玩的 本帖最后由 heidern0612 于 2018-11-23 18:32 编辑
我贴个我写的切片代码,抛砖引玉。
temp = input("请输入一句话:")
if temp == temp[::-1]:
print("是回文联")
else:
print("不是回文联") heidern0612 发表于 2018-11-23 18:29
我贴个我写的切片代码,抛砖引玉。
::-1是什么操作??? heidern0612 发表于 2018-11-23 12:55
1、为什么非得长度是奇数才是回文联呢?长度为偶数也是回文联啊?(比如"上海海上"就是个回文联。)
2、 ...
reverse不是对列表的方法么但是转为列表以后 我这一句话就是一个元素 所以反过来也没啥意义呀
我寻思着把每个字都拆开来 fayzzz 发表于 2018-11-24 10:04
::-1是什么操作???
步进为-1,就是倒着走 塔利班 发表于 2018-11-23 11:32
有,但是你这里是不会相等的
而且没有==这种操作
list2 == list1.pop()
刚才试验了一下pop 发现这个只能弹到剩最后两个元素?
>>> list1=
>>> for i in list1:
list2=list1.pop()
print(list1)
所以用这种方法是不是不行。。 lin1481989286 发表于 2018-11-23 14:42
我也是新手一枚,这是我写的代码,也不知道对不对,仅供参考。有问题请帮我指出,谢谢!
def list():
...
噢!这个我看懂了挺厉害的 heidern0612 发表于 2018-11-24 10:11
步进为-1,就是倒着走
[:] 代表列表里所有元素, 然后[::] 这里面两个引号又代表什么呢
还是说就是[::-1]就是一个独立的指令 要他倒序 一个冒号代表复制列表,第二个冒号后面跟的是步进数,代表步进。老师视频里都有讲。 本帖最后由 heidern0612 于 2018-11-24 18:41 编辑
fayzzz 发表于 2018-11-24 10:22
[:] 代表列表里所有元素, 然后[::] 这里面两个引号又代表什么呢
还是说就是[::-1]就是一个独立的指令...
比如,代表的输出就是1、3、5、7、9
页:
[1]