少儿Python每日一题(18):字符的统计和处理

原题解答

本次的题目如下所示(原题出处:蓝桥杯):

【编程实现】
输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数并输出。
输入描述:输入一行字符
输出描述:按英文字母、空格、数字和其它字符的顺序输出其对应的个数
【样例输入】
a1 b2 c d4 !!! 5
【样例输出】
4
5
4
3

本题的要求非常明确,要求统计不同类型的字符的数量,包括字母、空格、数字和其他字符。很明显,我们需要对字符串的内容进行遍历,并对每一个字符做判断。

这一题如果熟悉Python字符串中的is开头的几个方法,这些方法的返回值类型都是布尔值,那本题就非常容易了,我们看看这几个方法的含义:

方法名称含义
string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
string.isdecimal()如果 string 只包含十进制数字则返回 True 否则返回 False.
string.isdigit()如果 string 只包含数字则返回 True 否则返回 False.
string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
string.isnumeric()如果 string 中只包含数字字符,则返回 True,否则返回 False
string.isspace()如果 string 中只包含空格,则返回 True,否则返回 False.
string.istitle()如果 string 是标题化的(即单词首字母大写)则返回 True,否则返回 False
string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

知道了这几个方法的含义,我们很明显就能看出,在遍历每个字符的时候,分别使用isalpha()、isspace()、isdigit()三个方法可以判断字符是否为字母、空格、数字,如果都不是则为其他。代码如下所示:

s = input()
alpha, space, num, other = 0, 0, 0, 0
for i in s:
    if i.isalpha():
        alpha += 1
    elif i.isspace():
        space += 1
    elif i.isdigit():
        num += 1
    else:
        other += 1
print(alpha, space, num, other, sep='\n')

有人可能会想,如果我不记得这几个方法,那这道题怎么做呢?数字一共10个、字母大小写加起来52个、空格只有1个。我们可以将它们全部列举出来,使用in运算符进行判断,这道题一样可以做出来。我们看代码:

s = input()
alpha, space, num, other = 0, 0, 0, 0
alphas = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
nums = '0123456789'
for i in s:
    if i in alphas:
        alpha += 1
    elif i == ' ':
        space += 1
    elif i in nums:
        num += 1
    else:
        other += 1
print(alpha, space, num, other, sep='\n')

本题拓展

本题考查的是字符串的相关方法,题目难度★★

字符串的方法的题型可以从很多方面去考,主要离不开字符串的索引、字符串的切片、字符串的方法等等。题型是多变的,关键是熟悉字符串的相关操作。我们看下面这道题目:

某 E 写了一篇文章,标题为字符串 S,由小写英文字符和空格组成。
某 E 恪守规范,因此,字符串 S 是由若干个单词组成的,单词之间由一个空格隔开。
编辑人员要求将单词中的字母的大小写做调整。具体的,对每个单词,编辑人员要求将每个单词中的第奇数个字母改成大写,第偶数个字母改成小写。
关于单词下标的定义:这里我们以 1 为起始下标。也就是说,对一个长度为 n 的单词,我们将字母从头到尾记作第一个、第二个、⋯、第 n 个。
举例:对单词 apple
第一个字母为 a
第二个字母为 p
第三个字母为 p
第四个字母为 l
第五个字母为 e
某 E 要赶 ddl,请你帮她完成这个任务。

输入格式
输入一行一个字符串 S。

输出格式
输出一行一个字符串,代表修改后的标题。

输入样例
i like eat apple
输出样例

I LiKe eAt aPpLe

这道题目的要求是:奇数位的字母大写、偶数位的字母小写。题目本身不难,只需要对奇数位上的字母使用upper()方法改成大写即可。但是这道题我们要注意:第一个字母序号为1,但是索引为0。因此,在代码中奇偶正好相反。否则我们得到的结果也是相反的。本道题的代码如下:

s = input()
r = ''
for i, v in enumerate(s):
    if i % 2 == 0:
        r += v.upper()
    else:
        r += v
print(r)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤城老人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值