isr = input()
if (isr.isalpha() or (isr.isnumeric() and isr.isalpha())):
print("You can't use a letter here.")
else:
isr = math.sqrt(float(isr))
print(isr)
所以我想让它检测isr
字符串是否会有一个字母,例如:";a";或一个带有数字"的字母;a8";。我尝试使用and
和or
逻辑运算符,但使用实际的代码,它只会给我";无法将字符串转换为浮点值:"xxx"就像它跳过了整个if
行一样。当我把"代替CCD_ 5;a3";它说了应该说的正确的话,但当我把一个正常的数字放在平方根上时,它说了不应该说的话。
对于CCD_ 6=";a3";视觉工作室会说";无法将字符串转换为浮点值:"a3"。对于CCD_ 7=";a";它会打印出正确的东西&";你不能在这里用字母&";。对于CCD_ 8=";4〃;它将打印";2.0〃;正如它应该做的那样。
使用,
而不是and
的。
isr = input()
if (isr.isalpha() or (isr.isnumeric(), isr.isalpha())):
print("You can't use a letter here.")
else:
isr = math.sqrt(float(isr))
print(isr)
对于CCD_ 11=";a3";它打印出正确的东西";你不能在这里用字母"对于CCD_ 12=";a";它打印出正确的东西";你不能在这里用字母"对于CCD_ 13=";4〃;应该打印2,但它打印出";你不能在这里用字母">
有人能帮我吗?
isnumeric
和isalpha
函数会告诉您整个字符串是数字还是字母:
>>> "aa".isalpha()
True
>>> "aa3".isalpha()
False
与其试图堆叠一堆条件来告诉你一个字符串是否是一个可以取其平方根的有效float
,不如使用try/except
:
>>> isr = "a3"
>>> try:
... print(math.sqrt(float(isr)))
... except ValueError:
... print(f"{isr} isn't a valid number.")
...
a3 isn't a valid number.