【发布时间】:2020-03-09 19:18:46
【问题描述】:
我的代码应该返回 None 如果字符串:
包含不受支持的运算符或非数字。支持的运算符有:**、*、^、-、+、/、(、)
示例
“4.0 + 2”有效
“3.88327 - $3.4”是无效(因为“$”)
“a + 24”无效(因为“a”)
“2+6”有效
“4+/3”无效(因为“+/”是两个相邻的运算符)
“4**-3”有效
我该怎么做?
这是我的代码:
def checkvalid(string1):
temp = string1.split()
for i in len(temp):
if i in "*^-+/()":
return None
if not i.isnumeric():
return None
return string1
但这并不总是有效。它只适用于像“22 66”这样的常规整数 -> 这有效,它返回字符串,但似乎没有其他工作,它总是返回 None。
【问题讨论】:
-
当前代码将失败,因为
'4.0' in '*^+/()如果总是False和'4.0'.isnumeric()总是False。 -
for i in len(temp):循环遍历 indexes,即0 1 2 3等。大概你想检查temp[i],而不是i本身。 -
你为什么还要费心拆分字符串?直接遍历字符串中的字符是非常自然的:
for ch in string1: -
@JohnGordon cuz 如果我遍历字符串的每个字符,我怎么知道它是否是浮点数