象棋爱好者 发表于 2020-8-31 14:14:54

Python求助

编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)

这是小甲鱼第19讲的课后作业,谁来帮我解答一下?

sunrise085 发表于 2020-8-31 14:17:36

你自己没有练习着写程序?
直接找人找人帮你写吗?
看别人写程序,你不会有什么提高的。
先自己写吧,遇到问题,解决不了,再来提问

象棋爱好者 发表于 2020-8-31 14:18:51

sunrise085 发表于 2020-8-31 14:17
你自己没有练习着写程序?
直接找人找人帮你写吗?
看别人写程序,你不会有什么提高的。


。。。

baige 发表于 2020-8-31 14:29:56

首先得会编写函数的基本格式,先了解编写函数基本格式,其次就是思路,回文联就是正反读都一样的字符串,那么我们就会有一种思路,把给的字符串和逆序的字符串去对比,如果两个字符串相同,说明是回文串,不是的话说明不是回文串
你可以按照这样的思路去写程序

_2_ 发表于 2020-8-31 15:45:27

def func(s: str): return s[::-1] == s
其实就这一行代码,要弄明白自己先去复习切片
善用论坛的【搜索】功能找到自己想要的答案

象棋爱好者 发表于 2020-9-1 14:07:21

_2_ 发表于 2020-8-31 15:45
其实就这一行代码,要弄明白自己先去复习切片
善用论坛的【搜索】功能找到自己想要的答案

???运行不了

fall_bernana 发表于 2020-9-1 16:03:30

象棋爱好者 发表于 2020-9-1 14:07
???运行不了

def func(s: str):
    return s[::-1] == s

print(func("我试试我"))

True

_2_ 发表于 2020-9-1 20:09:04

象棋爱好者 发表于 2020-9-1 14:07
???运行不了

哦,这个函数你没有调用{:10_256:}

象棋爱好者 发表于 2020-9-4 22:16:43

_2_ 发表于 2020-9-1 20:09
哦,这个函数你没有调用

什么鬼啊?不是要run run module

象棋爱好者 发表于 2020-9-4 22:17:14

_2_ 发表于 2020-9-1 20:09
哦,这个函数你没有调用

怎么调用

_2_ 发表于 2020-9-5 08:16:46

象棋爱好者 发表于 2020-9-4 22:17
怎么调用

func("上海自来水来自海上")

怀心抱素 发表于 2020-9-5 09:24:56

{:10_257:}你需要好好学一学。

bonst 发表于 2020-9-5 11:19:44

你可以这样,把他做成一个列表,然后reverse以下赋值给另外一个列表,看他们相不相等。例如
list1 = ['上','水','居','民','居','水','上']
list2 = list(reversed(list1))
list1 == list2

象棋爱好者 发表于 2020-9-5 13:32:29

_2_ 发表于 2020-9-5 08:16


哦!谢谢你

象棋爱好者 发表于 2020-9-5 13:33:19

bonst 发表于 2020-9-5 11:19
你可以这样,把他做成一个列表,然后reverse以下赋值给另外一个列表,看他们相不相等。例如

这是要用函数

象棋爱好者 发表于 2020-9-5 13:40:52

bonst 发表于 2020-9-5 11:19
你可以这样,把他做成一个列表,然后reverse以下赋值给另外一个列表,看他们相不相等。例如

而且是字符串

象棋爱好者 发表于 2020-9-5 13:41:46

_2_ 发表于 2020-9-5 08:16


给你设置最佳答案

象棋爱好者 发表于 2020-9-5 13:45:11

_2_ 发表于 2020-8-31 15:45
其实就这一行代码,要弄明白自己先去复习切片
善用论坛的【搜索】功能找到自己想要的答案

跟小甲鱼的答案有些不一样。他是:
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('不是回文联!')
或:
def palindrome(string):
    list1 = list(string)
    list2 = reversed(list1)
    if list1 == list(list2):
      return '是回文联!'
    else:
      return '不是回文联!'
print(palindrome('上海自来水来自海上'))

_2_ 发表于 2020-9-5 19:15:55

象棋爱好者 发表于 2020-9-5 13:45
跟小甲鱼的答案有些不一样。他是:
def palindrome(string):
    length = len(string)


没事,以后你会学到,
小甲鱼的这个是最基础的思路,
先判断字符串的长度(奇数和偶数有不同的判定方法),
比较第一个和最后一个,如果一样,就继续,不一样,就返回 False

_2_ 发表于 2020-9-5 19:19:40

象棋爱好者 发表于 2020-9-5 13:33
这是要用函数

你可以封装进一个函数里,小甲鱼的答案里也有这样的思路
def func(s: str) -> bool:
    return s == list(s).reverse()
页: [1]
查看完整版本: Python求助