设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 26735|回复: 24
打印 上一主题 下一主题

【Python 第26课】 操作list

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2014-4-24 18:32:35 |只看该作者 |倒序浏览
上周给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中尝试。
0.jpeg

#==== 点球小游戏 ====#
我打算从今天开始,每天说一点这个小游戏的做法。方法有很多种,我只是提供一种参考。你可以按照自己喜欢的方式去做,那样她才是属于你的游戏。

先说一下方向的设定。我的想法比较简单,就是左中右三个方向,用字符串来表示。射门或者扑救的时候,直接输入方向。所以这里我准备用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...'

反之亦然,不赘述。

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

沙发
发表于 2014-5-30 11:34:26 |只看该作者
点球小游戏外面套个循环,再加个计数的,最后还能显示“you scored %d”你得了多少分…
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2014-5-31 16:03:15 |只看该作者
Go_for_Math 发表于 2014-5-30 11:34
点球小游戏外面套个循环,再加个计数的,最后还能显示“you scored %d”你得了多少分…
...

有很多改进空间待各位完善
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

地板
发表于 2015-3-13 07:09:33 |只看该作者
  1. #coding:utf-8
  2. #football游戏,电脑随机进行扑救(左中右),你进行射门,三个方向,看能不能射进
  3. #football1.0
  4. #zzx 2015.03.12
  5. from random import choice
  6. print'-----------------------------------------------欢迎来到欧冠点球的决胜时刻,请屏住呼吸,拭目以待吧---------------------------'
  7. #方向
  8. direction = ['left','middle','right']
  9. #电脑扑救方法
  10. def computerFight() :
  11.                 dic = choice(direction)
  12.                 print'守门员迅速扑救,他扑向了球门的%s方向。他能否守住呢?\n' %dic
  13.                 return dic
  14. #输入射门
  15. def manShoot() :
  16.                 dic = raw_input('请输入你要射门的方向(left,middle,right),关键一球哦!\n')
  17.                 print '\n你发出了世界波,射向了球门的%s方向,你期待这进球的那一刻\n'%dic
  18.                 return dic
  19. def judge() :
  20.                 shootDic = manShoot()
  21.                 fightDic = computerFight()
  22.                 if shootDic == fightDic :
  23.                                 print 'omg,伟大的守门员拯救了这场比赛。他将球扑出了球门。\n'
  24.                 else:
  25.                                 print '球进了,这场比赛终于赢了,恭喜你,伟大的射手!\n'
  26. #开始比赛
  27. judge()

复制代码
回复

使用道具 举报

0

主题

0

好友

54

积分

注册会员

Rank: 2

5#
发表于 2015-5-27 21:33:02 |只看该作者
  1. from random import choice
  2. print "Choice one direction to shoot:"
  3. print "left,ceter,right"
  4. you=raw_input()
  5. print "You kicked "+ you
  6. direction=['left','center','right']
  7. com=choice(direction)
  8. print "Computer saved "+ com
  9. if you !=com:
  10.     print "Goal!"
  11. else:
  12.     print "Oops..."
复制代码
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

6#
发表于 2015-12-31 14:50:41 |只看该作者
动了一点脑筋加了循环和计数,感觉自己棒棒哒~
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, 下载次数: 336)

Python12.png

回复

使用道具 举报

0

主题

0

好友

64

积分

注册会员

Rank: 2

7#
发表于 2016-2-20 13:10:09 |只看该作者
加了一个胜负的判断,略有成就感
  1. from random import choice

  2. def function():
  3.         player=0
  4.         computer=0
  5.         print 'Choose one side to shoot:'
  6.         print 'left, center, right'
  7.         you = raw_input()
  8.         print 'You kicked ' + you
  9.         direction = ['left', 'center', 'right']
  10.         com = choice(direction)
  11.         print 'Computer saved ' + com
  12.         if you != com:
  13.                 print 'Goal!'
  14.                 player=player+1
  15.         else:
  16.                 print 'Oops...'
  17.                 computer=computer+1
  18.         return computer,player


  19. n=0
  20. while n<5:
  21.         n=n+1
  22.         list=function()

  23. if list[0]==list[1]:
  24.         print ('hhhhhh')
  25. elif list[1]<list[0]:
  26.         print ('computer win!!')
  27. else:
  28.         print ('player win!!')
复制代码
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

8#
发表于 2016-2-20 15:39:29 |只看该作者
弹星者 发表于 2016-2-20 13:10
加了一个胜负的判断,略有成就感

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

121

积分

注册会员

Rank: 2

9#
发表于 2016-5-2 16:26:05 |只看该作者
Crossin老师,列表的名称命名有什么规范吗?和变量的命名一样吗?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

10#
发表于 2016-5-3 11:21:00 |只看该作者
追风 发表于 2016-5-2 16:26
Crossin老师,列表的名称命名有什么规范吗?和变量的命名一样吗?

和变量一样,它就是一个变量
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-24 07:18 , Processed in 0.031581 second(s), 33 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部