一.基本概念
1.元组:一些元素的不可变有序序列,其中单个元素可以是任意类型,且彼此间的类型可以不同。
2.range函数会返回一个range类型的对象。range函数接受3个整数参数:start,stop和step。最常用在for循环中。
3.列表:值的有序序列,每个值都可以有索引进行标识。列表使用的是中括号,元组使用的是小括号。
常用列表方法:
1).ls.extend(object)
向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object合并。注意:object如果是整型,必须以列表的方式传入,不可以以整型或元组的方式传入
2).ls.append(object)
将object作为一个整体插入到ls最后,object可以是字符串,元组,列表和字典
3).ls.insert(index, object)
将object作为一个整体插入到ls指定的索引位置,object可以是字符串,元组,列表和字典
4).ls.pop([index])
删除指定索引位置的元素,返回被删除的元素,如果参数为空,则默认删除最后一个索引位置的元素。注意:有返回值
5).ls.remove(value)
删除指定的元素。注意:value是序列里面的值,不是索引
6).ls.reverse()
将列表中元素进行逆向排列
7).ls.sort(cmp=None, key=None, reverse=False)
默认将列表中元素进行升序排列,可以通过reverse参数将升序设为降序
4.map()函数和lambda()函数
python map(fun,[arg]+)函数最少有两个参数,第一参数为一个函数名,第二个参数是对应的这个函数的参数(一般为一个或多个list)。
lambda表达式:有人说类似于一种匿名函数,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用。
5.字符串的常用方法
1).string.count(sub[, start[, end]])
计数字符串中某子集的数量,可以通过start和stop参数设置搜索范围
2).len(string)
获取字符串的长度
3).list(string)
字符串转列表
4).string.join(iterable)
列表转字符串,用于将序列中的元素以指定的字符string连接生成一个新的字符串。注意:iterable只能是字符串类型,否则会报出异常
5).string.split([sep [,maxsplit]])
用来根据指定的分隔符将字符串进行分割,不包含分隔符,结果存为列表,不指定sep时,默认将将空格作为分隔符
6).string.islower()
返回字符串中是否全为小写 --> True/False
7).string.upper()
将字符串全部转为大写
6.字典
字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型,基本的操作包括如下:
1)len():返回字典中键—值对的数量;
2)d[k]:返回关键字对于的值;
3)d[k]=v:将值关联到键值k上;
4)del d[k]:删除键值为k的项;
5)key in d:键值key是否在d中,是返回True,否则返回False。
二.作业练习
题目:现在你将开始实现(完整的游戏)程序hangman, 它有一个输入参数 –用户需要去猜测的单词 secretWord(后续程序用到的变量名). 由它开始游戏程序Hangman用户与计算机的交互过程。确保你用到之前部分设计完成的辅助函数isWordGuessed, getGuessedWord, 和 getAvailableLetters.
#单词是否在列表
def isWordGuessed(secretWord, lettersGuessed):
for i in secretWord:
if i not in lettersGuessed:
return False
return True
#返回单词猜测状态指示
def getGuessedWord(secretWord, lettersGuessed):
txt = ''
for i in secretWord:
if i in lettersGuessed:
txt = txt + ' ' + i
else:
txt = txt + ' _ '
return txt
#返回单词猜测状态指示
def getAvailableLetters(lettersGuessed):
bz = 'abcdefghijklmnopqrstuvwxyz'
txt = ''#返回的列表指示for i in bz:
if i not in lettersGuessed:
txt += i
return txt
#游戏主体
def hangman(secretWord):
lettersGuessed = []
mistakesMade = 8
print 'welcome to the game, Hangman!'
while mistakesMade > 0.01 and not isWordGuessed(secretWord, lettersGuessed):
#当猜测次数大于0 和 not true状态下(小于0游戏结束)
print 'You have ',str(mistakesMade),' guesses left.'
print 'Available letters:',getAvailableLetters(lettersGuessed)
guess = raw_input('Please guess a letter:').lower()
#猜测开始(.lower())为小写
if guess in lettersGuessed:
print "Oops! You've already guessed that letter:", getGuessedWord(secretWord, lettersGuessed)
#猜测的单词在列表里,提示重复猜测,调用getGuessedWord返回单词猜测状态指示
else:
if guess in secretWord:
lettersGuessed.append(guess)
print 'Good guess:', getGuessedWord(secretWord, lettersGuessed)
#猜测的单词在正确词语,将猜测的单词加入列表,调用getGuessedWord返回单词猜测状态指示
else:
lettersGuessed.append(guess)
mistakesMade -= 1
print 'Oops! That letter is not in my word:', getGuessedWord(secretWord, lettersGuessed)
#猜测的单词不在正确词语,将猜测的单词加入列表,猜测次数-1,调用getGuessedWord返回单词猜测状态指示
if mistakesMade > 0.01:
print 'Congratulations, you won!'
else:
print 'Sorry, you ran out of guesses. The word was else.'
#猜测结束后,猜测次数大于0下,返回成功,否则返回失败
secretWord = chooseWord(wordlist).lower()
hangman(secretWord)
网友评论