if语句被忽略[重复]

Posted

技术标签:

【中文标题】if语句被忽略[重复]【英文标题】:the if stament it's ignored [duplicate] 【发布时间】:2020-03-05 20:13:05 【问题描述】:

我是初学者,我的功能不起作用。我没有我错过的内容:

def string_length(stri):
if stri == int:
   print(" not a string")
else:
   print(len(stri), stri)

stri = str(input("please write a string: "))
string_length(stri)

在少数情况下,如果我写一个整数,if 语句将被忽略。

【问题讨论】:

并不是它被忽略了。就是你认为它在做什么和它实际上在做什么是非常不同的。 stri == int 是 not 你如何检查某事物是否是 an int。 您的“if”测试特定对象是否等于整数类型。这在这里没有意义。你想要“isinstance”。 另外,请注意,如果您从用户那里接受输入,则输入始终是字符串。 “3”和3是不同的。一个是字符串。 【参考方案1】:
def is_number(stri):
    try:
        float(stri)
        return True
    except ValueError:
        pass

def string_length(stri):
    if is_number(stri) == True:
       print(" not a string")
    else:
       print(len(stri), stri)

stri = input("please write a string: ")
is_number(stri)
string_length(stri)

它对你不起作用,因为数字可以是字符串的形式,例如“6”而不是 6。所以任何时候你输入一个数字,它都会是一个字符串,所以会忽略 if。 is_number() 函数检查字符串是否可以表示为浮点数,如果可以,则返回值“True”。

【讨论】:

以上是关于if语句被忽略[重复]的主要内容,如果未能解决你的问题,请参考以下文章

插入忽略 - 询问MySQL if语句是否被忽略

为啥 if 语句忽略命令行参数? [复制]

条件判断之if语句

忽略第二个 if 语句

这个 if 语句会抛出异常还是忽略它? [复制]

除非在 [重复] 之前打印条件,否则不会调用 if 语句