相关疑难解决方法(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如果声明总是

因此,我正在使用Python构建一个简单的游戏,以便更熟悉该语言,并且无法找到一种搜索方式,如果之前有人问过这个问题.:P任何方式,当这个代码块执行时,我总是以我的"位置"为.y +10.我已经重新安排并检查了几件事,但觉得我错过了一个非常基本的部分,我通常用switch语句处理

mv = input('N,S,E,W?')

if mv == 'N' or 'n':
    Me.Position.Y += 10    
elif mv == 'E' or 'e':
    Me.Position.X += 10    
elif mv == 'W' or 'w':
    Me.Position.X -= 10    
elif mv == 'S' or 's':
    Me.Position.Y -= 10
else:
    print('Stand')
Run Code Online (Sandbox Code Playgroud)

然后:

print('Lage: X:', Me.Position.X, ' Y:', Me.Position.Y, ' Z:', Me.Position.Z)
Run Code Online (Sandbox Code Playgroud)

我没有办法使用其他选项.

谢谢!

python eclipse windows tkinter python-3.3

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

是或否输出Python

Join = input('Would you like to join me?')
if Join == 'yes' or 'Yes':
  print("Great," + myName + '!')
else:
  print ("Sorry for asking...")
Run Code Online (Sandbox Code Playgroud)

所以这是我的代码.它更长; 只是包括问题.我问一个是或否的问题,在控制台中它运行顺利直到你到达它.无论你输入什么,你都会得到'是'的输出.有人可以帮忙吗?我也使用过elif语句,但没有运气.

python variables

2
推荐指数
1
解决办法
4万
查看次数

我的 if-else 语句怎么了?(Python 3.3)

我正在为计费程序项目编写条件语句。我知道这对于初学者来说有点高级,但我欢迎挑战。无论如何,我计划在启动程序时询问用户名和密码。这是我对该程序的第一次编码。

print ("Hello and welcome to Billing Pro, please enter your username and password to access the database.")

username = input ("Enter username:")

if username == "cking" or "doneal" or "mcook":
  print ("Valid username.")
else:
  print ("Invalid username. Please try again.") 


password = input ("Enter password:")

if password == "rammstein1" or "theory1" or "tupac1":
  print ("Valid password. User has been verified.")
else:
  print ("Invalid password. Access denied.")
Run Code Online (Sandbox Code Playgroud)

现在,一开始当我运行这段代码时,如果我输入了用户名的三个选项以外的任何内容,Python 就会打印出“无效用户名”行。由于某种原因,它现在打印出“有效用户名”,然后继续显示密码提示。此外,如果我输入密码选择以外的任何内容,它总是会读出“有效密码”提示。

另外,当用户输入三个选项以外的内容时,如何循环用户名提示?我应该使用 while 语句而不是 if-else 还是可以在 if-else 语句末尾放置 while 语句以再次触发提示?

哦,我知道你看不出来,因为我在问题中的格式很糟糕,但我确实在脚本本身上使用了正确的缩进。

python if-statement while-loop

0
推荐指数
2
解决办法
3472
查看次数