import commands
game_state = 'playing'
while game_state == 'playing':
player_input = raw_input('>>')
if player_input == 'quit':
break
elif player_input in commands.command_list:
print 'good'
从'commands.py':
def one():
print '1'
command_list = {'one' : one()}
最后,在输入函数名后输入终端:
1
>>one
good
>>_
'1'在一开始不应该在那里,因为这个功能从来没有被实际称为...对吗?我无法弄清楚这一点
列表就是数据排列的形式,集合,字典也是一样的。为了构建列表、集合或字典,Python 提供了名为“显示”的特殊句法,每个类型各有两种形式:
第一种是显式地列出容器内容
第二种是通过一组循环和筛选指令计算出来,称为 推导式。
推导式的结构是一个单独表达式后面加至少一个 for 子句以及零个或更多个 for 或 if 子句。 在这种情况下,新容器的元素产生方式是将每个 for 或 if 子句视为一个代码块,按从左至右的顺序嵌套,然后每次到达最内层代码块时就对表达式进行求值以产生一个元素。
不过,除了最左边 for 子句中的可迭代表达式,推导式是在另一个隐式嵌套的作用域内执行的。 这能确保赋给目标列表的名称不会“泄露”到外层的作用域。
最左边的 for 子句中的可迭代对象表达式会直接在外层作用域中被求值,然后作为一个参数被传给隐式嵌套的作用域。 后续的 for 子句以及最左侧 for 子句中的任何筛选条件不能在外层作用域中被求值,因为它们可能依赖于从最左侧可迭代对象中获得的值。 例如: [x*y for x in range(10) for y in range(x, x+10)]。
为了确保推导式得出的结果总是一个类型正确的容器,在隐式嵌套作用域内禁止使用 yield 和 yield from 表达式。
从 Python 3.6 开始,在 async def 函数中可以使用 async for 子句来迭代 asynchronous iterator。 在 async def 函数中构建推导式可以通过在打头的表达式后加上 for 或 async for 子句,也可能包含额外的 for 或 async for 子句,还可能使用 await 表达式。 如果一个推导式包含 async for 子句或者 await 表达式,则被称为 异步推导式。 异步推导式可以暂停执行它所在的协程函数。
编写字典程序:
1. 用户添加单词和定义
2. 查找这些单词
3.如果查不到,请让用户知道
4. 循环
#coding:utf-8
# 字典创建 while开关 字典添加 字典寻找
dictionary = {}
flag = 'a'
pape = 'a'
off = 'a'
while flag == 'a' or 'c' :
flag = input("添加或查找单词 ?(a/c)")
if flag == "a" : # 开启
word = input("输入单词(key):")
defintion = input("输入定义值(value):")
dictionary[str(word)] = str(defintion) # 添加字典
print "添加成功!"
pape = input("您是否要查找字典?(a/0)") #read
if pape == 'a':
print dictionary
else :
continue
elif flag == 'c':
check_word = input("要查找的单词:") # 检索
for key in sorted(dictionary.keys()): # yes
if str(check_word) == key:
print "该单词存在! " ,key, dictionary[key]
break
else: # no
off = 'b'
if off == 'b':
print "抱歉,该值不存在!"
else: # 停止
print "error type"
break
测试输入:
添加或查找单词 ?(a/c)a
输入单词(key):runoob
输入定义值(value): www.runoob.com
添加成功!
您是否要查找字典?(a/0)0
添加或查找单词 ?(a/c)c
要查找的单词:runoob
该单词存在! runoob www.runoob.com
添加或查找单词 ?(a/c)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)