鱼C论坛

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

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

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

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

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

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

一共是2个问题哈~

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

  8.     if i == a:
  9.         print('是回文联')
  10.     else:
  11.         print('不是回文联')
复制代码



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

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

reverse返回的是reverse对象:
  1. >>> x = "qiuyouzhi"
  2. >>> reversed(x)
  3. <reversed object at 0x00000226D1B56970>
  4. >>> x
  5. 'qiuyouzhi'
  6. >>> list(reversed(x))
  7. ['i', 'h', 'z', 'u', 'o', 'y', 'u', 'i', 'q']
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  16. print(count('12345','12345'))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

能的,帖子右下有一个编辑
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  6. huiwen("上海自来水来自海上")
复制代码

直接列表切片就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  17. print(count('12345','12345'))
复制代码

第一次计算完后将所有变量重置为0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

直接列表切片就好了

新写法已get。可是我那个问题在哪里呢……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

reverse返回的是reverse对象:
  1. >>> x = "qiuyouzhi"
  2. >>> reversed(x)
  3. <reversed object at 0x00000226D1B56970>
  4. >>> x
  5. 'qiuyouzhi'
  6. >>> list(reversed(x))
  7. ['i', 'h', 'z', 'u', 'o', 'y', 'u', 'i', 'q']
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-1 06:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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