繁体   English   中英

不知道在这个 if 语句中使用什么

[英]Don't know what to use in this if-statement

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”的字母。 我尝试使用andor逻辑运算符,但使用实际代码,它只是给了我“无法将字符串转换为浮点数:'xxx'”,就像它只是跳过了整个if行。 当我放“,”而不是and我放一个“a3”时,它说的是它应该说的正确的东西,但是当我放一个你可以在平方根中实际使用的正常数字时,它说的是它不应该。

对于and = "a3",视觉工作室会说“无法将字符串转换为浮点数:'a3'。对于and = "a",它会打印正确的内容“你不能在这里使用字母。”对于and = “4”它将按应有的方式打印“2.0”。

带有,而不是and的那个。

if(isr.isalpha() or (isr.isnumeric(), isr.isalpha())) : print("You can't use a letter here.")              
else : 
    isr = math.sqrt(float(isr)) 
    print(isr)

For , = "a3" 它打印出正确的东西“你不能在这里使用字母。” For , = "a" 它打印出正确的东西“你不能在这里使用字母。” For , = "4" 应该打印 2 但它会打印出“您不能在此处使用字母”。

任何人都可以帮助我吗?

isnumericisalpha函数告诉您整个字符串是数字还是字母:

>>> "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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM