由于这个问题表明了学习编码的强烈愿望,并且已经尝试过一些东西,所以我提供了一个适用于pythonversion3的变体(在版本2中,需要原始的输入而不是输入,以及将来的导入来声明print函数):#! /usr/bin/env python3
import sys
names_known = ( # Hints 1 and 2
None, "tp.txt", "c17testpat.pat", "c432test.pat",
"c499testpat.pat", "c1355testpat.pat", "c6288testpat.pat")
options_map = dict(zip(range(len(names_known)), names_known)) # 3
print("Enter:")
for choice, name in enumerate(names_known[1:], start=1): # 4
print('%d.%s' % (choice, name))
user_choice = input("Enter a number") # 5
try: # 6
entry_index = int(user_choice)
except:
sys.exit("No integer given!")
if not entry_index or entry_index not in options_map: # 7
sys.exit("No filename matching %d" % (entry_index,))
with open(options_map[entry_index]) as f: # 8
# do something with f
pass
很多事情还是会出错的,任何错误都需要用户重新启动(没有while循环等),但是有些成绩只存储一次名称(这里我选择了一个元组)
将1作为用户界面中的第一个数字(在索引0处插入虚拟对象)
从存储名称的元组派生dict(dict提供快速查找)
从名称元组构建用户界面信息(忽略虚拟)
将输入与验证分开
首先检查域类型(整数)。如果失败,提前退出系统出口并提供信息
请检查域成员身份,否则退出并显示信息
在上下文块中打开资源文件名目标,以便在处理完成后不要忘记关闭