第19讲课后题,求指点动动手代码问题
本帖最后由 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')) %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')) qiuyouzhi 发表于 2020-3-10 15:25
%d呢?
emmmmmmm……………………粗心贴错,之前是用的(‘第’,n,'个字符串共有……)这种写法写的,在做笔记时有两个d没打上去。
不过这俩d不影响结果,还是一样的问题
顺便想问帖子能修改么{:10_266:}这种粗心的错误,影响大神的思路{:10_277:} miusa 发表于 2020-3-10 15:32
emmmmmmm……………………粗心贴错,之前是用的(‘第’,n,'个字符串共有……)这种写法写的,在做笔记时 ...
能的,帖子右下有一个编辑 先回答一个:
def huiwen(x):
if x[::-1] == x:
print("是回文联")
return
print('不是回文联')
huiwen("上海自来水来自海上")
直接列表切片就好了 第二个:
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 qiuyouzhi 发表于 2020-3-10 15:38
先回答一个:
直接列表切片就好了
新写法已get。可是我那个问题在哪里呢…… 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']
页:
[1]