鱼C论坛

 找回密码
 立即注册
查看: 2292|回复: 7

[已解决]第19讲课后题,求指点动动手代码问题

[复制链接]
发表于 2020-3-10 15:21:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 miusa 于 2020-3-10 15:39 编辑

一共是2个问题哈~

1、编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)
我写的代码如下,可以运行,但是无论输入什么都不是回文联,是哪里出了问题呢……
def huiwen(x):
    a = len(x)
    i = 0
    for each in x:
        for every in reversed(x):
            if each == every:
                i += 1

    if i == a:
        print('是回文联')
    else:
        print('不是回文联')


2、编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数
我写的代码如下,可以运行,第一个字符串计算正确,可如果函数中有两个字符串,第二个字符串的数据会叠加第一个字符串的数据,求指点问题
def count(*x):
    n,a,b,c,d = 0,0,0,0,0
    for each in x:
        for y in each:
            y = str(y)
            if y.isalpha():
                a += 1
            elif y.isdigit(): 
                b += 1
            elif y.isspace():
                c += 1
            else:
                d += 1
        n += 1
        print('第%d个字符串共有:英文字母%d个,数字%d个,空格%d个,其他字符%d个'  %  (n,a,b,c,d))

print(count('12345','12345'))
最佳答案
2020-3-10 15:49:20
miusa 发表于 2020-3-10 15:47
新写法已get。可是我那个问题在哪里呢……

reverse返回的是reverse对象:
>>> x = "qiuyouzhi"
>>> reversed(x)
<reversed object at 0x00000226D1B56970>
>>> x
'qiuyouzhi'
>>> list(reversed(x))
['i', 'h', 'z', 'u', 'o', 'y', 'u', 'i', 'q']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-10 15:25:03 | 显示全部楼层
%d呢?
def count(*x):
    n,a,b,c,d = 0,0,0,0,0
    for each in x:
        for y in each:
            y = str(y)
            if y.isalpha():
                a += 1
            elif y.isdigit():     #记得用elif!!!!!而不是多个if!!!!
                b += 1
            elif y.isspace():
                c += 1
            else:
                d += 1
        n += 1
        print('第%d个字符串共有:英文字母%d个,数字%d个,空格%d个,其他字符%d个'  %  (n,a,b,c,d)) # 倒数两个%d没有加d

print(count('12345','12345'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-10 15:32:28 | 显示全部楼层

emmmmmmm……………………粗心贴错,之前是用的(‘第’,n,'个字符串共有……)这种写法写的,在做笔记时有两个d没打上去。
不过这俩d不影响结果,还是一样的问题
顺便想问帖子能修改么这种粗心的错误,影响大神的思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-10 15:35:10 | 显示全部楼层
miusa 发表于 2020-3-10 15:32
emmmmmmm……………………粗心贴错,之前是用的(‘第’,n,'个字符串共有……)这种写法写的,在做笔记时 ...

能的,帖子右下有一个编辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-10 15:38:44 | 显示全部楼层
先回答一个:
def huiwen(x):
    if x[::-1] == x:
        print("是回文联")
        return
    print('不是回文联')

huiwen("上海自来水来自海上")
直接列表切片就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-10 15:41:31 | 显示全部楼层
第二个:
def count(*x):
    n,a,b,c,d = 0,0,0,0,0
    for each in x:
        for y in each:
            y = str(y)
            if y.isalpha():
                a += 1
            elif y.isdigit():     #记得用elif!!!!!而不是多个if!!!!
                b += 1
            elif y.isspace():
                c += 1
            else:
                d += 1
        n += 1
        print('第%d个字符串共有:英文字母%d个,数字%d个,空格%d个,其他字符%d个'  %  (n,a,b,c,d)) # 倒数两个%d没有加d
        n,a,b,c,d = 0,0,0,0,0

print(count('12345','12345'))
第一次计算完后将所有变量重置为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-10 15:47:21 | 显示全部楼层
qiuyouzhi 发表于 2020-3-10 15:38
先回答一个:

直接列表切片就好了

新写法已get。可是我那个问题在哪里呢……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-10 15:49:20 | 显示全部楼层    本楼为最佳答案   
miusa 发表于 2020-3-10 15:47
新写法已get。可是我那个问题在哪里呢……

reverse返回的是reverse对象:
>>> x = "qiuyouzhi"
>>> reversed(x)
<reversed object at 0x00000226D1B56970>
>>> x
'qiuyouzhi'
>>> list(reversed(x))
['i', 'h', 'z', 'u', 'o', 'y', 'u', 'i', 'q']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-3-14 21:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表