路径分析 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
API
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 应该是 ["/"]