Skip to main content
 首页 » 编程设计

python之If 语句始终打印 (Python)

2025年05月04日13TianFang

我正在尝试添加一个 if 语句来检查无效输入。如果用户输入"is",它会像它应该的那样工作并再次循环,如果用户输入“否”则结束。但出于某种奇怪的原因,无论答案是什么:是、否、随机字符等。它总是打印“无效输入”语句。我试图只在答案不是"is"或“否”时打印。

while cont == "Yes": 
    word=input("Please enter the word you would like to scan for. ") #Asks for word 
    capitalized= word.capitalize()   
    lowercase= word.lower() 
    accumulator = 0 
 
    print ("\n") 
    print ("\n")        #making it pretty 
    print ("Searching...") 
 
    fileScan= open(fileName, 'r')  #Opens file 
 
    for line in fileScan.read().split():   #reads a line of the file and stores 
        line=line.rstrip("\n") 
        if line == capitalized or line == lowercase: 
            accumulator += 1 
    fileScan.close 
 
    print ("The word", word, "is in the file", accumulator, "times.") 
 
    cont = input ('Type "Yes" to check for another word or \ 
"No" to quit. ')  #deciding next step 
    cont = cont.capitalize() 
 
    if cont != "No" or cont != "Yes": 
        print ("Invalid input!") 
 
print ("Thanks for using How Many!")  #ending 

请您参考如下方法:

那是因为无论您输入什么,至少一个的测试为真:

>>> cont = 'No' 
>>> cont != "No" or cont != "Yes" 
True 
>>> (cont != "No", cont != "Yes") 
(False, True) 
>>> cont = 'Yes' 
>>> cont != "No" or cont != "Yes" 
True 
>>> (cont != "No", cont != "Yes") 
(True, False) 

改用和:

>>> cont != 'No' and cont != 'Yes' 
False 
>>> cont = 'Foo' 
>>> cont != 'No' and cont != 'Yes' 
True 

或使用成员资格测试(in):

>>> cont not in {'Yes', 'No'}  # test against a set of possible values 
True