全民一起玩Python基础篇第五课:复杂结构初步(列表、对象、模块等)(中)

>>> s='jindaohei'
>>> s[ : : -1]
'iehoadnij'

可以通过上述代码把字符串倒着写,但是并不会改变s本身
用reverse的话则改变本身
字符串和列表都属于 序列 sequence
字符串中叶可以用列表的len()这种函数
前者的元素只能是字符,后者可以包括任意类型
字符串不可直接修改,不像列表那样修改比较方便

如果要替换可以用下面的replace函数

>>> s.replace('j','J')
'Jindaohei'

find

s.find(a,起点,终点)
s.rfind(a,起点,终点) 倒着找,从后往前

s='11234332111334112'

c=s.find('1')
#用来定位
while c !=-1  :
    
    print(c)
    
    c=s.find('1',c+1)
    #加1后继续查找

strip()

去掉两端的空格,不改变中间的空格

>>> s='a  a  s  '
>>> b=s.strip()
>>> print(b)
a  a  s

lstrip,rstrip去掉左右端空格
upper,lower转换大小写
swapcase(),大小写变换
tilte(),首字母大写
capitalize,句首大写

拼列表和拆列表

split拆

>>> s=' 锦 到 黑'
>>> a=s.split(' ')
>>> print(a)
['', '锦', '到', '黑']

join拼


>>> '+'.join(a)
'+锦+到+黑'
>>> ''.join(a)
'锦到黑'

题目一

请在控制台中完成以下操作:
创建一个列表并赋值给一个变量 x ,列表内容可随意安排。
使用切片方式,将该列表的倒序排列赋值给另一个变量 y 。
分别查看 x 和 y 的内容,理解二者的区别和原因。
执行 x.reverse() ,再观察x和y的内容,理解其变化和原因。
想办法在只使用切片操作的情况下,让 y 等于其自身的倒序排列,相当于 y.reverse() 的效果。

>>> x=['1','2','3']
>>> y=x[ : : -1]
>>> y
['3', '2', '1']
>>> x
['1', '2', '3']
>>> x.reverse()
>>> x
['3', '2', '1']
>>> y
['3', '2', '1']
>>> y=y[ : :-1]
>>> y
['1', '2', '3']

题目二

在生物学中,DNA可以表示为一个由 A、C、G 和 T 四种字母构成的长字符串,例如“ACGAATTCCGACCGAATTCG” 。生物学家经常需要在这些字符串中查找指定字母的个数和出现位置,从而了解DNA的结构以便进一步分析遗传特征。
请编写程序,允许用户输入一个DNA字符串,然后使用 find 或 rfind 方法实现下面要求的各种DNA分析功能(下面每种功能可以分别单独编写一个程序实现):
告知该输入字符串中出现过多少个“GA”。
依次告知所有“GA”的出现位置。
从后向前,依次告知所有“GA”的出现位置。即先输出最后一个“GA”的位置,再输出倒数第二个“GA”的位置,如此类推。

c = 'GA'

s = input('请输入待分析的DNA字符串:')
#转换一下大小写
s = s.upper()

print('共有',s.count( c ),'个“GA”')
#判断s中c的个数
i = s.find(c)
print('第一个“GA”的下标为', i )

i = s.find(c)
while i != -1 :
    print( i )
    i = s.find( c , i+1 )

i = s.rfind(c)
while i != -1 :
    print( i )
    i = s.rfind( c , 0, i )
#逆序求解,起点为0,终点为i,逆向查找

题目三

我国通行的邮政地址格式为 “从大到小” ,比如“中国 上海市 黄浦区”;而其他一些国家则使用“从小到大”的地址格式,比如 “黄浦区,上海市,中国”。
请使用本节讲解的字符串类split方法和join方法,实现一个针对上述情境的 “地址倒转” 程序,要求如下:
用户按照“从大到小”模式输入一个地址,以空格为各级地址的分隔符,比如 “中国 上海市 黄浦区”。
程序对用户输入进行处理,最终输出“从小到大”格式的地址,并以逗号为分隔符,比如 “黄浦区,上海市,中国”。

s=input('请输入一个地址,用空格隔开:')
a=s.split(' ')
a.reverse()
a=''.join(a)
print(a)

元组tuple

和列表几乎一模一样
元组只是在定义内容时使用圆括号,而在使用下标、切片等操作时,仍然使用方括号。

>>> a=(2,3,'abc',3,4)
>>> a[2]
'abc'
>>> a[2:3]
('abc',)

括号不是关键,逗号才是

>>> t=(1)
type(t)
<class 'int'>
t=1,2
type(t)
<class 'tuple'>

temp=('你好','我好')+('大家好',)
#逗号不能少
temp
('你好', '我好', '大家好')

集合set

不允许出现重复元素,且无序,不存在下标

>>> x={2,3,2,33,3,2}
>>> x
{33, 2, 3}
>>> y=[2,3,4,3,4,3,4,2]
>>> x=set(y)
>>> x
{2, 3, 4}
>>> x=list(x)
>>> x
#再变回一个列表
[2, 3, 4]

如果不想改变set,可以用frozenset

d=set([1,2,3,4,5,1,1,1,1,1])
d.add(32)
print(d)
d2=frozenset([1,2,3])
d2.add(32)
print(d2)#frozenset再用add就会报错

统计斗罗大陆

读写文本文件一般包括三个步骤:
用open函数打开文件,并使用参数 ‘r’ 、‘w’、‘a’ 等指定读写模式。该函数返回一个文件对象。
调用文件对象的 readlines 或 write 等方法操作文件。readlines 返回一个列表,可用for in 循环扫描每一个元素,即文件中每一个段落。
文件操作后必须使用close方法关闭,否则写入文件的内容可能会丢失

monsters={'戴沐白':0,'沐白':0,'戴老大':0,'奥斯卡':0,'小奥':0,'唐三':0,'三哥':0,'小三':0,'小舞':0,'朱竹清':0,'竹清':0,'马红俊':0,'胖子':0,'宁荣荣':0,'荣荣':0}
#创建 字典对象
f=open('D:/全民一起玩Python/斗罗大陆.txt','r',encoding='utf-8')
# 用r只读
for s in f.readlines():
# 逐行读取
    for name in monsters:
        monsters[name]=monsters[name]+s.count(name)

for k in monsters:
    print(k,'出现了',monsters[k],'次')

f.close()
#关闭了才算保存
戴沐白 出现了 2671 次
沐白 出现了 2788 次
戴老大 出现了 126 次
奥斯卡 出现了 2185 次
小奥 出现了 225 次
唐三 出现了 23693 次
三哥 出现了 284 次
小三 出现了 780 次
小舞 出现了 5409 次
朱竹清 出现了 1025 次
竹清 出现了 1157 次
马红俊 出现了 1632 次
胖子 出现了 981 次
宁荣荣 出现了 1877 次
荣荣 出现了 2287

题目一

请编写程序,将该文件中的每一行内容都显示输出到屏幕上(使用print语句)

f=open('D:/全民一起玩Python/Python安装/python01_14_01.txt','r')
for s in f.readlines():
    print(s)
f.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值