路径分析 Python 版Q55

介绍

此题需要看引导视频

概要

下载初始代码文件。

按照 API 要求,填写代码,通过测试

下载

网址路径分析

根据下面的介绍,完成 网址路径相关的 api

组成

假设网址由 scheme,host,port number 和 path 组成

(实际比这个还要复杂很多)

案例

完整的网址
https://zzax.io:80/to/now-1/

其中

https 是 scheme  
zzax.io 是 host 
80 是 port number  
/to/now-1/ 是 path 
有时端口号会省略
https://zzax.io/to/now-1/

其中

https 是 scheme  
zzax.io 是 host 
没有 port number  
/to/now-1/ 是 path 
有时 path 会很短
https://zzax.io/

其中

https 是 scheme  
zzax.io 是 host 
没有 port number  
最后一个字符 / 是 path 

def scheme(link: str): str

返回 link 网址的 scheme 部分

def host(link: str): str

返回 link 网址的 host 部分

特殊情况

注意:link 中可能会有 port number,此时 host 不应该包含 port numebr

def port_number(link: str): int

返回 link 网址的 port number 部分

特殊情况

当 link 中没有写出 port number 时,返回 -1

def path(link: str): str

返回 link 网址的 path 部分

文件路径分析

根据下面的介绍,完成 文件路径相关的 api

介绍

组成

文件路径由一堆文件名和斜杠组成

案例

/Users/zzax/document
/c/java111/
c/java111
/

绝对路径与相对路径

路径中,由 / 开头的 就是 绝对路径,否则不是,比如

这些是
/Users/zzax/document
/c/java111/
/
这些不是
c/java111/
c

API

is_absolute(path: str): bool

返回这个路径是不是绝对路径

is_relative(path: str): bool

返回这个路径是不是相对路径

add_component(path: str, component: str): str

将 path 路径 后面,添加新的 component 组成部分

返回 添加后的路径

约束

假设 path 一定是绝对路径

假设 path 至少有一个组成部分

案例
result = add_component("/c/", "java111")
result 应该是 "/c/java111"
注意

path 的后面 可能带 斜杠 / ,也可能没有

component 的前面 也可能带 斜杠,也可能没有

这些都不应该影响最后的结果

比如
result = add_component("/c", "/java111")
result 应该是 "/c/java111"

remove_last_component(path: str): str

将 path 路径 最后一个组成部分 删除掉

返回 删除后的路径

约束

假设 path 一定是绝对路径

案例
result = remove_last_component("/c/java111")
result 应该是 "/c"
注意

path 的后面 可能带 斜杠 / ,也可能没有

这些都不应该影响最后的结果

比如
result = remove_last_component("/c/java111/")
result 应该是 "/c"
特殊情况

当只剩下一个组成部分时,返回 "/"

result = remove_last_component("/c")
result 应该是 "/"

components(path: str): list<str>

将 path 路径 拆解成组成部分,并返回

约束

假设 path 一定是绝对路径

案例
result = components("/c/java111")
result 应该是 ["/", "c", "java111"]
注意

path 的后面 可能带 斜杠 / ,也可能没有

这些都不应该影响最后的结果

比如
result = components("/c/java111/")
result 应该是 ["/", "c", "java111"]
特殊情况

如果 path 是 "/",返回它组成的数组

result = components("/c")
result 应该是 ["/"]

ZZAX 微信公众

文档一更新,立刻告诉你