gpt4 book ai didi

Python如何求一个目录迭代的最小移动次数——爬虫

转载 作者:行者123 更新时间:2023-12-01 08:19:45 27 4
gpt4 key购买 nike

我正在开发一个 Python(3) 程序,在该程序中,我必须使用输入作为表示各种操作的多次迭代列表来返回目录迭代的移动次数,例如:

  • ../ 表示移动到当前文件夹的父文件夹。
  • ./ 保留在同一文件夹中
  • x/ 移动到名为 x 的子文件夹

实际上,我必须编写一个Python函数来返回一个整数,该整数显示从当前文件夹移动到主目录的最少步骤数。我怎样才能做到这一点?

所以,这是一个例子:

输入:

5
x/
y/
../
z/
./

输出:

2

说明:爬虫从主目录向下移动两个文件夹到文件夹y,再向上移动一个文件夹,然后向下移动到另一个文件夹z,因此两次移动是正确答案,父文件夹 x 之一,然后到父目录和第一个整数显示移动总数。这是我尝试过的:

def minimumSteps(loggedMoves):
# Write your code here
moves = 0
for i in loggedMoves:
print(loggedMoves[i:])
if loggedMoves[i] == './' :
moves += 1
print(moves)
return moves

最佳答案

您可以构建一堆 Action :./不执行任何操作,../让您上升一级,因此我们弹出最后一个 Action ,其他任何 Action 都会增加一个级别。

请注意,由于我们不知道起始目录的名称,因此我们只能假设我们永远无法比它更高 - 否则,我们无法知道是否会回到它。

所以,你可以这样做:

def absolute_moves(moves):
absolute = []
for move in moves:
move = move.strip('/')
if move == '.':
continue
elif move == '..':
try:
# we go one level up
absolute.pop()
except IndexError:
# we tried to go higher than the start dir
pass # if we suppose we were at the top level
else:
absolute.append(move)
return absolute

moves = ['x/', 'y/', '../', 'z/', './']
shortest = absolute_moves(moves)

print('Shortest path: {}, length: {}'.format(shortest, len(shortest)))
# Shortest path: ['x', 'z'], length: 2

关于Python如何求一个目录迭代的最小移动次数——爬虫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54725253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com