你好,我是马克斯,14岁,来自德国。 目前我正在为一个我想用Python编写代码的小游戏做机械工作,只是为了学习这门语言并适应它。在游戏中,你必须在“电脑”上找到并删除一个虚构的“病毒”。要做到这一点,您必须浏览文件夹并执行几个命令,就像在普通终端中一样
我的问题是浏览目录。我可能没有设置结构的最佳方法,我也不知道有什么更好的方法。也许这里有人有主意。我真的不想使用真正的文件夹,只是从我的程序访问它们,因为我真的想学习语言。 我会提供你的代码,这是必要的
我有一个列表(如下所示),其中包含我的程序目前接受的所有命令,第二个列表包含每个注释所需的属性数。这些属性在第三个列表中,可以通过命令本身的索引访问它们,这就是变量“index”
comm = ['hello', 'help', 'cd', 'ls', 'cdir', 'rdir', 'cfil', 'rfil', 'detc']
commAtt = ['0', '0', '1', '1', '2', '2', '2', '2', '1']
attribute = ['0', '0', '* directory *', '* directory *', '* directory * * new name *',
'* directory * * new name *', '* file path * * new name *',
'* file path * * new name *', '* malware / spamware / adware *']
# Directories
total = 7
layer0 = ['Boot']
# layer1
Boot = ['System', 'Users', 'Applications']
#layer2
System = ['Library', 'System files']
Users = ['Phillipp Dorson', 'Root']
Applications = ['Corel .exe', 'Text Editor.exe', 'Python lib', 'Internet.exe']
# layer3
PhillippD = ['Documents', 'Downloads', 'Pictures', 'Movies', 'Desktop',
'Music']
# layer4
Documents = ['Job_Application.txt', 'Cover_Page.corel']
def dirCheck(command, path, index):
count = 0
layerI = 'null'
dir = layerI
for pathI in range(0, len(path) - 1):
print(pathI)
for layerI in layer0:
dir = layerI
if path[pathI] == layerI:
print('hellu')
break
else:
count += 1
break
print(dir)
for layerI in dir:
print(layerI)
if path[pathI] == layerI:
print('lulloooo')
break
else:
count += 1
正如您可能看到的,我目前正在尝试将一个变量(dir)用于另一个变量(实际上是数组,它包含“Boot[]”或“Documents[]”之类的文件和文件夹),但效果似乎不太好。我尽量避免单独键入所有列表,但是如果不可能以不同方式键入,我会这样做。 提前谢谢,马克斯。
正如@rczajka所建议的,我用字典创建了文件结构。然而,我仍然不太明白我应该如何通过这个“系统”来循环,以检查输入是否有效,例如,因为我必须在字典中循环一个字典,在一个字典中循环一个字典,等等。到目前为止,我想到的是:
directories = {
'Boot': {
'System': {
'Library': {}
},
'Users': {
},
'Applications': {
}
}
}
for i in directories: #layer 1
print(i)
for a in directories[i]: #layer 2
print(a)
for b in directories[i][a]: #layer 3
print(b)
它确实有效,但我必须为每个“层”文件键入一个新循环。我真的不喜欢这个想法,因为它限制了你可以在其他文件夹中的文件夹数量,如果你知道我的意思。 我非常感谢你们的帮助!谢谢
从技术上讲,您可以使用
locals()
或globals()
之类的方法,通过变量名访问变量,但这不是正常的方法通常,您会将您的虚拟目录定义为一个数据结构,然后为您的代码寻找一种方法来导航它。所以你可以这样开始:
然后,您需要了解代码如何维护当前路径,以便用户可以在层次结构中上下移动,以及如何区分虚拟文件和虚拟目录
希望这能给你指明正确的方向,玩得开心
编辑:
要遍历此类结构,可以使用递归,如:
相关问题 更多 >
编程相关推荐