无法理解部分代码的工作原理。代码应该找到所有数字并创建 int 或 float 值,如果给定字符串中第一个数字之前有“-”,则值应该带有“-”符号。如果给定字符串中的数字之间有点,则应使用第一个点来创建浮点值,其他点将被忽略。
def reveal_num(line: str):
res = sign = ""
dot = False
for char in line:
if char in "+-" and not res:
sign = "-"*(char == "-")
elif char in "." and not dot:
dot = True
res += "."
elif char.isdigit():
res += char
if res:
return(int, float)[dot](sign + res)
print(reveal_num("-aB%|_-+-2ADS.12+3.ADS1.2"))
看不懂线路。 *(char == "-") 的作用是什么?
sign = "-"*(char == "-")
看不懂线路。
return(int, float)[dot](sign + res)
你能解释一下这些线条吗
谁写的?这似乎是故意写得尽可能令人困惑......
sign = "-"*(char == "-")
只是一种非常晦涩的写作方式:
if char == "-":
sign = "="
同样,
return (int, float)[dot](sign + res)
是一种非常晦涩的写法:
if dot:
return float(sign + res)
else:
return int(res)