Crossin的编程教室
标题: 【Python 第30课】 字符串的索引和切片 [打印本页]
作者: crossin先生 时间: 2014-4-24 18:35
标题: 【Python 第30课】 字符串的索引和切片
前两天承蒙MacTalk池建强老师的推荐,让我们的学习队伍进一步壮大了。很多同学用的是Mac系统,而我是Linux党,很多Mac上的问题我没法帮忙解决。建议关注池老师的微信号,他经常会介绍一些Mac的使用技巧,让你更好地发挥Mac的强大功能。不用Mac的同学也建议去看看,他的文章有关技术和人文,相信你会得到不少启发。
微信号:Sagacity-Mac,直接搜索mactalk也可以看到。
#==== 关于字符串的事 ====#
之前说了,字符串和list有很多不得不说的事。今天就来说说字符串的一些与list相似的操作。
1. 遍历
通过for...in可以遍历字符串中的每一个字符。
word = 'helloworld'
for c in word:
print c
2. 索引访问
通过[]加索引的方式,访问字符串中的某个字符。
print word[0]
print word[-2]
与list不同的是,字符串不能通过索引访问去更改其中的字符。
word[1] = 'a'
这样的赋值是错误的。
3. 切片
通过两个参数,截取一段子串,具体规则和list相同。
print word[5:7]
print word[:-5]
print word[:]
4. 连接字符
join方法也可以对字符串使用,作用就是用连接符把字符串中的每个字符重新连接成一个新字符串。
newword = ','.join(word)
作者: cross 时间: 2015-4-23 10:56
作者: lovia 时间: 2015-5-28 00:01
- #coding:utf-8
- #遍历
- word='helloword'
- for c in word:
- print c
- print
- #索引
- print word[0]
- print word[-1]
- print
- #切片
- print word[0:3]
复制代码
作者: catherinemic 时间: 2016-1-2 14:51
- word = 'helloworld'
- for c in word:
- print c,
- print word[0],word[-2]
- print word[1:-2]
- newword=','.join(word)
- print newword
复制代码
-
Python15.png
(6.07 KB, 下载次数: 601)
作者: catherinemic 时间: 2016-1-2 14:55
crossin老师那个点球的小游戏最后一点收尾在哪里呢?
作者: crossin先生 时间: 2016-1-2 23:50
catherinemic 发表于 2016-1-2 14:55
crossin老师那个点球的小游戏最后一点收尾在哪里呢?
http://mp.weixin.qq.com/mp/appms ... b44#wechat_redirect
这个吗?
作者: catherinemic 时间: 2016-1-3 10:53
crossin先生 发表于 2016-1-2 23:50
http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5MDEyMDk4Mw==&appmsgid=10000133&itemidx=1&sign=93c ...
是哒,谢谢crossin先生!
作者: catherinemic 时间: 2016-1-3 11:11
catherinemic 发表于 2016-1-3 10:53
是哒,谢谢crossin先生!
crossin先生,关于点球小游戏的设置提前结束那部分,在定义kick函数的时候,最后有一个return False,请问当提前结束的条件被触发时,按照if条件会返回True,之后又有一个return False,这样不会冲突吗?
作者: crossin先生 时间: 2016-1-3 12:04
catherinemic 发表于 2016-1-3 11:11
crossin先生,关于点球小游戏的设置提前结束那部分,在定义kick函数的时候,最后有一个return False,请 ...
执行到return,函数就返回结束了。不会再向下执行
作者: catherinemic 时间: 2016-1-3 15:26
crossin先生 发表于 2016-1-3 12:04
执行到return,函数就返回结束了。不会再向下执行
明白了,谢谢crossin老师!
作者: 德坤 时间: 2016-4-5 12:36
图片挂啦 Crossin老师
作者: crossin先生 时间: 2016-4-5 20:21
德坤 发表于 2016-4-5 12:36
图片挂啦 Crossin老师
已改
作者: rjq696 时间: 2016-8-28 20:01
2. 索引访问
通过[]加索引的方式,访问字符串中的某个字符。
print word[0]
print word[-2]
与list不同的是,字符串能不通过索引访问去更改其中的字符。
word[1] = 'a'
这样的赋值是错误的。
能不还是不能呀? crossin老师。
作者: crossin先生 时间: 2016-8-29 10:55
rjq696 发表于 2016-8-28 20:01
2. 索引访问
通过[]加索引的方式,访问字符串中的某个字符。
print word[0]
“不能”,已改
作者: 司南 时间: 2018-4-8 21:22
本节练习代码:- word='hello world!'
- for i in word:
- print(i)
- print(word[0])
- print(word[1:4])
- new_word=','.join(word)
- print(new_word)
- new_word2='.'.join(word)
- print(new_word2)
- new_word3=''.join(word)
- print(new_word3)
- new_word1=word.split()
- print(new_word1)
- x=['a','b','c']
- x1=','.join(x)
- print(x1)
- x2=['ab','cd','ex']
- x3=''.join(x2)
- print(x3)
复制代码
作者: 司南 时间: 2018-4-8 22:24
本帖最后由 司南 于 2018-4-8 22:32 编辑
终于整出来了,总结经验:提前画好流程,整理思路,事半功倍
有个问题想请问一下Crossin先生,提前结束的部分,感觉自己滥用了break,请问有其他的解决办法啥的麽?- #football_game.py
- #司南 2018.04.07
- #方向设定
- direction=['left','middle','right']
- #扑救方
- def keeper(name='computer'):
- import random
- dic=random.choice(direction)
- if name=='computer':
- print('天哪,快看,守门员扑向了%s方向' %dic)
- else:
- print('天哪,快看,守门员%s扑向了%s方向' %(name,dic))
- return dic
- #射门方
- def shoot(man):
- dic=input('请输入射球方向:left/middle/right')
- print('快看,%s能否射进呢?' %man)
- return dic
- #比赛规则
- def fight(keeperdic,shootdic):
- if keeperdic==shootdic:
- print('omg,the goalkeeper win!')
- return True
- else:
- print('天哪,球进了!!')
- return False
- #开始比赛(提前比赛)
- score_keeper=0
- score_shoot=0
- man=input('Hei,man please tell us your name:')
- round_game=eval(input('how many round do you do'))
- #判断总分胜负:
- def final():
- if score_keeper>score_shoot:
- print('总冠军:伟大的守门员!!')
- elif score_keeper<score_shoot:
- print('总冠军:%s 你赢啦!'%man)
- else:
- print('平手!决胜局来啦')
- shootdic=shoot(man)
- keeperdic=keeper()
- res=fight(keeperdic,shootdic)
- if res:
- print('Everybody!!Winner is goalkeeper')
- else:
- print('Everybody!!Winner is %s'%man)
-
- #开始比赛
- for i in range(round_game):
- print('====Everybody the %dth round begin!===='%(i+1))
- shootdic=shoot(man)
- keeperdic=keeper()
- res=fight(keeperdic,shootdic)
- if res:
- score_keeper=score_keeper+1
- if score_keeper>=round_game//2+1:
- final()
- break
- else:
- score_shoot=score_shoot+1
- if score_shoot>=round_game//2+1:
- final()
- break
-
-
-
-
-
-
-
复制代码
作者: crossin先生 时间: 2018-4-8 22:58
司南 发表于 2018-4-8 22:24
终于整出来了,总结经验:提前画好流程,整理思路,事半功倍
有个问题想请问一下Crossin先生,提前结束的部 ...
不算滥用吧,确实需要break
作者: 司南 时间: 2018-4-9 16:40
crossin先生 发表于 2018-4-8 22:58
不算滥用吧,确实需要break
好哒,多谢Crossin先生~
作者: yuyu1111 时间: 2018-5-20 16:33
crossin先生,想请教一下
word='helloworld'
newword=','.join(word)
print(newword)
result==h,e,l,l,o,w,o,r,l,d
为什么不是课程里的‘h,e,l,l,o,w,o,r,l,d’ 呢?
作者: crossin先生 时间: 2018-5-21 10:55
yuyu1111 发表于 2018-5-20 16:33
crossin先生,想请教一下
word='helloworld'
教程里没用print,是 shell 的输出,这两个效果是不一样的
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) |
Powered by Discuz! X2.5 |