Crossin的编程教室
标题: 【Python 第26课】 操作list [打印本页]
作者: crossin先生 时间: 2014-4-24 18:32
标题: 【Python 第26课】 操作list
上周给list开了个头,知道了什么是list。假设我们现在有一个list:
l = [365, 'everyday', 0.618, True]
除了用for...in遍历l中的元素,我们还能做点啥?
1. 访问list中的元素
list中的每个元素都对应一个递增的序号。与现实中习惯的序号不同在于,计算机中的计数通常都是从0开始,python也不例外。如果你记不清这个而导致了错误,请去听一下孙燕姿的《爱从零开始》。
要访问l中的第1个元素365,只要用l[0]就可以了。依次类推,
print l[1]
就会输出'everyday'
注意,你不能访问一个不存在的元素,比如l[10],程序就会报错,提示你index越界了。
2. 修改list中的元素
修改list中的某一个元素,只需要直接给那个元素赋值就可以了:
l[0] = 123
输出l,得到[123, 'everyday', 0.618, True],第1个元素已经从365被改成了123。
3. 向list中添加元素
list有一个append方法,可以增加元素。以l这个列表为例,调用的方法是:
l.append(1024)
输出l,你会看到[123, 'everyday', 0.618, True, 1024],1024被添加到了l,成为最后一个元素。(第一个元素在上一步被改成了123)
然后同样可以用l[4]得到1024。
4. 删除list中的元素
删除list中的某一个元素,要用到del:
del l[0]
输出l,得到['everyday', 0.618, True, 1024]。这时候再调用l[0],会得到'everyday',其他元素的序号也相应提前。
以上这些命令,你可以直接在python shell中尝试。
#==== 点球小游戏 ====#
我打算从今天开始,每天说一点这个小游戏的做法。方法有很多种,我只是提供一种参考。你可以按照自己喜欢的方式去做,那样她才是属于你的游戏。
先说一下方向的设定。我的想法比较简单,就是左中右三个方向,用字符串来表示。射门或者扑救的时候,直接输入方向。所以这里我准备用raw_input。有同学是用1-8的数字来表示八个方向,每次输入一个数字,这也是可以的。不过这样守门员要扑住的概率可就小多了。
至于电脑随机挑选方向,如果你是用数字表示,就用我们之前讲过的randint来随机就行。不过我这次打算用random的另一个方法:choice。它的作用是从一个list中随机挑选一个元素。
于是,罚球的过程可以这样写:
from random import choice
print 'Choose one side to shoot:'
print 'left, center, right'
you = raw_input()
print 'You kicked ' + you
direction = ['left', 'center', 'right']
com = choice(direction)
print 'Computer saved ' + com
if you != com:
print 'Goal!'
else:
print 'Oops...'
反之亦然,不赘述。
作者: Go_for_Math 时间: 2014-5-30 11:34
点球小游戏外面套个循环,再加个计数的,最后还能显示“you scored %d”你得了多少分…
作者: crossin先生 时间: 2014-5-31 16:03
Go_for_Math 发表于 2014-5-30 11:34
点球小游戏外面套个循环,再加个计数的,最后还能显示“you scored %d”你得了多少分…
...
有很多改进空间待各位完善
作者: zzxomg 时间: 2015-3-13 07:09
- #coding:utf-8
- #football游戏,电脑随机进行扑救(左中右),你进行射门,三个方向,看能不能射进
- #football1.0
- #zzx 2015.03.12
- from random import choice
- print'-----------------------------------------------欢迎来到欧冠点球的决胜时刻,请屏住呼吸,拭目以待吧---------------------------'
- #方向
- direction = ['left','middle','right']
- #电脑扑救方法
- def computerFight() :
- dic = choice(direction)
- print'守门员迅速扑救,他扑向了球门的%s方向。他能否守住呢?\n' %dic
- return dic
- #输入射门
- def manShoot() :
- dic = raw_input('请输入你要射门的方向(left,middle,right),关键一球哦!\n')
- print '\n你发出了世界波,射向了球门的%s方向,你期待这进球的那一刻\n'%dic
- return dic
- def judge() :
- shootDic = manShoot()
- fightDic = computerFight()
- if shootDic == fightDic :
- print 'omg,伟大的守门员拯救了这场比赛。他将球扑出了球门。\n'
- else:
- print '球进了,这场比赛终于赢了,恭喜你,伟大的射手!\n'
- #开始比赛
- judge()
复制代码
作者: lovia 时间: 2015-5-27 21:33
- from random import choice
- print "Choice one direction to shoot:"
- print "left,ceter,right"
- you=raw_input()
- print "You kicked "+ you
- direction=['left','center','right']
- com=choice(direction)
- print "Computer saved "+ com
- if you !=com:
- print "Goal!"
- else:
- print "Oops..."
复制代码
作者: catherinemic 时间: 2015-12-31 14:50
动了一点脑筋加了循环和计数,感觉自己棒棒哒~
a=0
print 'Welcome to the Happy Time, you have 5 times to play!'
print 'Choose one side to shoot:'
print 'left, center, right'
for i in range(1,6):
from random import choice
you=raw_input()
direction=['left','center','right']
com=choice(direction)
print 'Computer saved '+ com
if you != com:
print 'Goal, you get 1 score!'
a=a+1
else:
print 'Oops...'
a=a
if a>=3:
print 'Congratulations, you scored %d!'%a
else:
print 'Oh-no, you only scored %d, better luck next time!'%a
-
Python12.png
(7.5 KB, 下载次数: 587)
作者: 弹星者 时间: 2016-2-20 13:10
加了一个胜负的判断,略有成就感- from random import choice
- def function():
- player=0
- computer=0
- print 'Choose one side to shoot:'
- print 'left, center, right'
- you = raw_input()
- print 'You kicked ' + you
- direction = ['left', 'center', 'right']
- com = choice(direction)
- print 'Computer saved ' + com
- if you != com:
- print 'Goal!'
- player=player+1
- else:
- print 'Oops...'
- computer=computer+1
- return computer,player
- n=0
- while n<5:
- n=n+1
- list=function()
- if list[0]==list[1]:
- print ('hhhhhh')
- elif list[1]<list[0]:
- print ('computer win!!')
- else:
- print ('player win!!')
复制代码
作者: crossin先生 时间: 2016-2-20 15:39
弹星者 发表于 2016-2-20 13:10
加了一个胜负的判断,略有成就感
作者: 追风 时间: 2016-5-2 16:26
Crossin老师,列表的名称命名有什么规范吗?和变量的命名一样吗?
作者: crossin先生 时间: 2016-5-3 11:21
追风 发表于 2016-5-2 16:26
Crossin老师,列表的名称命名有什么规范吗?和变量的命名一样吗?
和变量一样,它就是一个变量
作者: 追风 时间: 2016-5-3 16:14
知道啦,谢谢Crossin老师!
作者: 十三才 时间: 2016-9-8 11:59
弹星者 发表于 2016-2-20 13:10
加了一个胜负的判断,略有成就感
最后比较list[0]和list[1]是什么意思?他们代表的是什么意思?
作者: l0ve1o24 时间: 2016-12-6 14:31
本帖最后由 l0ve1o24 于 2016-12-6 14:57 编辑
#coding:UTF-8
a = 1
while a == 1:
from random import choice
print '现在开始点球,请选择方向'
print 'left,middle,right'
you = raw_input()
print ' 你射向 ' + you
lista = ['left','middle','right']
com = choice(lista)
if you != com:
print '对方傻啦吧唧地扑向' + com + ' ,你赢了!'
else:
print '对方扑向' + com + '并稳稳抱住了球,你输了!'
作者: brahmagupta 时间: 2017-2-24 16:20
crossin老师 ,有 对list插入元素、对list拆分 等操作的相关方法么?
作者: brahmagupta 时间: 2017-2-24 16:26
另外说一句:
感觉可以 通过 加长 电脑的direction列表长度为
['left', 'center','right','right','right']
这种方式来增加 “守门员”右边扑救的成功率。
作者: brahmagupta 时间: 2017-2-24 16:26
brahmagupta 发表于 2017-2-24 16:26
另外说一句:
感觉可以 通过 加长 电脑的direction列表长度为
不过 精确控制和分配各个方向的扑救 成功率 的方法我还没有想出来
作者: crossin先生 时间: 2017-2-24 16:51
brahmagupta 发表于 2017-2-24 16:20
crossin老师 ,有 对list插入元素、对list拆分 等操作的相关方法么?
有啊,你再往后看几课。
也可以网上搜一搜python list的操作
作者: crossin先生 时间: 2017-2-24 16:52
brahmagupta 发表于 2017-2-24 16:26
不过 精确控制和分配各个方向的扑救 成功率 的方法我还没有想出来
可以。精确控制的话,就要自己写个函数来处理了。通常方法是产生一个随机数,根据随机数落在的范围决定产生什么结果。
作者: brahmagupta 时间: 2017-2-24 18:25
crossin先生 发表于 2017-2-24 16:52
可以。精确控制的话,就要自己写个函数来处理了。通常方法是产生一个随机数,根据随机数落在的范围决定产 ...
这个好,就像 Roll 点一样!
作者: crossin先生 时间: 2017-2-25 22:09
brahmagupta 发表于 2017-2-24 18:25
这个好,就像 Roll 点一样!
对,就这个意思
作者: Imagination 时间: 2017-11-28 15:41
you = raw_input() 在python3 中怎么打 我打出来 显示错误 说是raw_input没有被定义 最后 我改成you = str(input())
作者: woodumpling 时间: 2017-11-28 18:41
Imagination 发表于 2017-11-28 15:41
you = raw_input() 在python3 中怎么打 我打出来 显示错误 说是raw_input没有被定义 最后 我改成you = ...
Python3只有input(),没有raw_input()
作者: q915417507 时间: 2018-3-1 16:57
老师 我用Python3 无法用print range(1,10)来输出列表 用 Print (range(1,10)) 它也不会输出
)那么在python3中 如何来输出range(1,10)呢
作者: crossin先生 时间: 2018-3-2 13:54
q915417507 发表于 2018-3-1 16:57
老师 我用Python3 无法用print range(1,10)来输出列表 用 Print (range(1,10)) 它也不会输出
)那么在pyth ...
list(range(1,10))
如果只是要循环遍历,直接用就range可以
作者: 司南 时间: 2018-4-6 12:28
暂时做成这样啦,后续完善吧~- direc=['left','middle','right']
- import random
- goalkeeper=random.choice(direc)
- shoot=input('please choose the direction:left,middle or right:')
- score=0
- while goalkeeper!=shoot:
- print('Goal')
- shoot=input('try,again?')
- score=score+1
- print('Oh,no,the goalkeeper is in the %s,and your score is %d' %(goalkeeper,score))
复制代码
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) |
Powered by Discuz! X2.5 |