相关疑难解决方法(0)

为什么`a == b或c或d`总是评估为True?

我正在编写一个拒绝访问未授权用户的安全系统.

import sys

print("Hello. Please enter your name:")
name = sys.stdin.readline().strip()
if name == "Kevin" or "Jon" or "Inbar":
    print("Access granted.")
else:
    print("Access denied.")
Run Code Online (Sandbox Code Playgroud)

它按预期授予对授权用户的访问权限,但它也允许未经授权的用户访问!

Hello. Please enter your name:
Bob
Access granted.
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我明确表示,只有在与nameKevin,Jon或Inbar相同时才授予访问权限.我也尝试过相反的逻辑if "Kevin" or "Jon" or "Inbar" == name,但结果是一样的.

python boolean boolean-expression

96
推荐指数
3
解决办法
2万
查看次数

Python测试字符串是否是某组值中的一个

我在codecademy上学习python,我目前的任务是:

编写一个函数shut_down,它接受一个参数(你可以使用你喜欢的任何东西;在这种情况下,我们使用s作为字符串).当shut_down函数获得"是","是"或"是"作为参数时,应该返回"关闭...",并且"关闭已中止!" 当它变为"否", "否"或"否"时.

如果它得到的不是那些输入,该函数应该返回"抱歉,我不明白你."

看起来很容易,但不知怎的,我仍然无法做到这一点.

我用来测试函数的代码:

def shut_down(s):
    if s == "Yes" or s == "yes" or s == "YES":
        return "Shutting down..."
    elif s == "No" or "no" or "NO":
        return "Shutdown aborted!"
    else:
        return "Sorry, I didn't understand you."

i = input("Do you want to shutdown?")
print(i) #was to test the input
print(shut_down(i)) #never returns "Sorry, I didn't understand you"
Run Code Online (Sandbox Code Playgroud)

它适用于no和yes',但不知何故,如果我在任何之前放置一个空格,或者即使我只输入"a",它也会打印出"Shutdown aborted!" …

python string equality

5
推荐指数
2
解决办法
4395
查看次数

Python中if/else循环的问题

我正在尝试用Python创建这个Pig Latin翻译器,它一直运行良好,直到我试图缩小它一点.

有人可以看看这段代码并告诉我为什么,当我在开头输入一个没有元音的单词时,它仍会在这个if语句中打印"元音"代码?

码:

pyg = 'ay'

original = raw_input('Enter a word: ')
low_original = original.lower()

if len(low_original) > 0 and low_original.isalpha():
        print low_original
        if low_original[0] == 'a' or 'e' or 'i' or 'o' or 'u':
                print "vowel"
                pyg_vowel = low_original + pyg
                print pyg_vowel
        else:
                print "consonant"
                pyg_cons = low_original[1: ] + low_original[0] + pyg
                print pyg_cons
else:
        print 'empty'
Run Code Online (Sandbox Code Playgroud)

python if-statement

1
推荐指数
1
解决办法
1161
查看次数