Python 程序设计习题(2) —— 字符串的处理

目录

1. Python 习题部分

2. Python 习题讲解

切片


1. Python 习题部分

要想学习一门语言,便少不了练习。

故附上部分 Python 习题,供大家学习参考。

如有错误之处,还望指正!

   1. 输入字符串"http://sports.sina.com.cn/",输出以下结果:
    1) 字符串中字母t出现的次数。
    2) 字符中"com"子串出现的位置。
    3) 将字符串中所有的"."替换为"-"。
    4) 提取"sports"和"sina"两个子串(分别使用正向和反向截取方式)。
    5) 将字符串中的字母全变为大写。
    6) 输出字符串的总字符个数。
    7) 在字符串后拼接子串"index"

s = 'http://sports.sina.com.cn/'
print(s.count('t'))
print(s.find('com'))
print(s.replace('.','-'))
print(s[7:13],s[-12:-8])
print(s.upper())
print(len(s))
print(s+'index')

    2. 编写程序,从键盘输入一串字符,统计这串字符的长度,并统计这串字符中字母的个数、数字的个数以及其它字符的个数。

s = input('请输入一串字符:')
count = len(s)
a = 0
b = 0
c = 0
for i in range(count):
    if (s[i] <= 'z' and s[i] >= 'a') or (s[i] <= 'Z' and s[i] >= 'A'):
        a += 1
    elif s[i] <= '9' and s[i] >= '0':
        b += 1
    else:
        c += 1
print('''字符串长度为:{}\n字母个数为:{}
数字个数为:{}\n其他字符个数为:{}'''.format(count,a,b,c))

   3. 编写程序,实现货币的转换。从键盘输入人民币的币值,转换为美元的币值输出,结果保留2位小数。假设人民币兑换美元的汇率是0.1456。

cny = input('请输入要兑换的人民币值,以¥结束:')
if cny[-1] == '¥':
    x = float(cny[:-1])
    usd = x*0.1456
    print('{}元人民币可以兑换{:.2f}美元'.format(x,usd))
else:
    print('输入错误!')

   4.编写程序,实现两种货币的自由转换。从键盘输入货币及对应的货币符号。根据输入的货币符号,自动将输入的货币币值转换为另外一种货币的币值,并保留2为小数输出。

money = input('请输入要转换的币值及符号,以¥或$结束:')
if money[-1] == '¥':
    x = float(money[:-1])
    usd = x*0.1456
    print('{}元人民币可以兑换{:.2f}美元'.format(x,usd))
elif money[-1] == '$':
    y = float(money[:-1])
    cny = y*6.868
    print('{}美元可以兑换{:.2f}元人民币'.format(y,cny))
else:
    print('输入错误,请以¥或$结束!')

   5.编写程序,实现月份到英文缩写的转换。输入一个1到12间的整数,输出其对应的月份缩写,如1对应1月(Jan),2对应2月(Feb)等。

months = 'JanFebMarAprMayJunJulAugSepOctNovDec'
m = int(input('请输入月份:'))
pos = (m - 1) * 3
print(months[pos:pos+3])

   6.用户输入一身份证号,首先判断是否足够18位长,如果是,则从身份证号中提取出生日期,按照xxxx年xx月xx日的格式输出。

id = input('请输入您的身份证号码:')
if len(id) == 18:
    year = id[6:10]
    month = id[10:12]
    day = id[12:14]
    print('您的出生日期为:{}年{}月{}日'.format(year,month,day))
else:
    print('输入错误!')

本此的习题主要运用字符串的索引与切片来完成。

以上图为例,按照箭头的指示方向,我们可以看到上面的数字为正向递增,下方数字为反向递减

这些数字便是这些字符的序号(索引号),如 “我” 的索引号就是 0 。

这些索引号有什么用呢?如果我们想要从字符串里提取出某一部分,那么就得用到它们。

光说不练怎么能行,对吧?下面,就让我们一起来玩一玩吧。

2. Python 习题讲解

切片

假设 1 :我要从上图的字符串中提取出字母 p ,那么我们该怎么做呢?

请见以下代码:

s = '我要学python'
print(s[3])
print(s[-6])

结果为:

这里我们选用的索引号为 3 和 -6 ,前者为正向,后者为反向,均输出了字母 p 。

 假设 2 :我要从上图的字符串中提取出 python ,那么我们该怎么做呢?

请见以下代码:

s = '我要学python'
print(s[3:8])
print(s[3:9])
print(s[-6:-1])
print(s[-7:-1])
print(s[-1:-6])
print(s[3:-1])

结果为:

这种将 python 提取出来的方法叫做切片。看起来是不是很简单,就是在原来的基础上加一个 :和数字罢了。但是上面用这么多种切片,却只有一个成功,为什么呢?

切片是 python 语言中字符串的区间访问方式。具体语法格式为:[头下标:尾下标] ,若有字符串 s[头下标:尾下标],则表示在 s 中取索引值从头下标至尾下标(不含尾下标)的子字符串,也就是说 s[头下标:尾下标] 其实是一个 左闭右开 的区间。

现在,是不是好像理解上面那些错误情况了?

其实,在切片中,还可以出现缺少头下标或者尾下标,亦或者二者均缺失的情况。

如果缺少头下标,那么将会从字符串开始的地方取

如果缺少尾下标,那么将会从头下标取至字符串末尾最后一个字符;

若二者均缺失,则取整个字符串

其实,字符串的切片还可以设置顺序。只需要再原来的基础上增加一个参数即可。

原来是这样—>s[头下标:尾下标]

而现在是这样——>s[头下标:尾下标:步长]

请见以下代码:

s = '我要学python'
print(s[3:9:-1])
print(s[3:9:1])
print(s[3:9:2])
print(s[3:0:-1])
print(s[::-1])
print(s[::-2])

结果为:

步长值 > 0,则从左到右取;

步长值 < 0,则从右至左取;

|步长值| - 1 ,则表示每次取字符的间隔为多少。


写有关 python 的博客原因有二,一是加深对于 python 的理解,二是分享自己的看法。

但事实上,主要原因是容易忘,担心平时缺乏练习,导致最后考试的时候过不了。

因为最近也有在学习其他的东西,所以下一篇博客也不知道什么时候才能发。

如果你有什么好的建议,或者说这篇博客对你有帮助的话,都可以在下方评论区留言,我有时间一定会看。

那么,本此的博客就到此为止了,下次再见!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Krelinn Bios

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

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

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

打赏作者

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

抵扣说明:

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

余额充值