我正在把一本孩子们自己选择的冒险书翻译成一个python程序,例如,“如果你选择x,转到y页,或者如果你选择a,转到b页”
当这个程序运行时,到本书的结尾,将有超过100条if语句,如果有任何方法可以创建一个表来比较用户输入和页面列表。我在研究时看到的一个例子显示了一个类似的表:
#this would hold the potential user inputs
[0,0,0,0,0,0]
[0,0,0,0,0,0]
[0,0,0,0,0,0]
但是,我不知道如何实施它
#imports the pages of the book from another python file
from Content import *
clrscrn = (chr(27) + "[2J")
def page0():
print "\n %s" % page1
page0()
#User input loop
while True:
inp = raw_input(">>> ").lower()
#clears the screen then prints the variable (page)
if inp == '3':
print clrscrn
print '%s' % page3
if inp == '10':
print clrscrn
print '%s' % page10
if inp == '5':
print clrscrn
print '%s' % page5
if inp == '14':
print clrscrn
print '%s' % page14
#quits python
elif inp == 'quit':
raise SystemExit
每个
if
语句的唯一区别是您访问哪个页面变量。由于您希望在page14
处获取,如果用户输入“14”,您可以使用globals()
返回的字典以动态方式访问页面变量。你知道吗因此,除了成百上千的
if
语句之外,您实际上根本不需要任何语句。您可以改为使用以下行。你知道吗在你的头脑中定义什么是输入和输出。你知道吗
在我看来,你可能会有多个问题,在不同的页面。所以一个输入就是“当前页码”,它将识别问题。你知道吗
当然,另一个输入是用户的响应。在二进制(yes/no)系统中,用户总是有两个可能的响应(yes或no)。在非二进制系统中,可能有更多可能的响应。你知道吗
我建议你假设非二进制,而且,即使只有一个问题可能是非二进制的,也要这样做。它有助于保持事情的一致性。你知道吗
假设你有一个非二进制系统,有100个问题。每个问题都出现在“一页”的末尾。(可能是在“一章”或“一段”或其他什么的末尾。)。当用户回答时,他们会被引导到另一个“页面”
因此,您的映射将是“当前页面+用户输入->;新页面”。你知道吗
在python中实现这一点的最简单方法是使用字典列表。列表索引可以是当前页。这将确定问题和可能的回答。响应(字典中的键)可以是文本字符串。结果(字典中的值)将是整数,表示新的页码。因此:
如果您想更高效一点,您可以使用用户无法输入的
" q "
这样的键将问题存储在同一个列表中(因为您自然会对用户输入运行.strip()
)!你知道吗如果你感觉精力充沛,你可以把字典做成一个类,带有属性,把不同的页面存储为JSON等等
相关问题 更多 >
编程相关推荐