我正在创建一个迷你程序&我试图检查用户是否输入了我想要的内容 - 他们只是只能输入 一个以下内容:快乐,悲伤,愤怒,紧张,兴奋但由于某种原因,它忽略了整个if语句,甚至我画的表(矩形)也没有出现?
from graphics import *
win = GraphWin("Moods", 800, 500)
#Creating the input Box + A Go Button.
inputBox=Entry(Point(400,250),12)
inputBox.draw(win)
colour=inputBox.getText().lower()
message=Text(Point(400,50),"Click to go next!")
message.setFace('courier')
message.setSize(20)
message.draw(Win)
submsg1=Text(Point(400,100),"")
submsg1.setText("(Allowed moods are: Happy, Sad, Angry, Nervous,
Excited)")
submsg1.setFace('courier')
submsg1.setSize(15)
submsg1.setStyle('italic')
submsg1.draw(win)
clickPoint = win.getMouse()
#Checking user inputs the right way.
if not colour.isalpha():
error=Text(Point(400,300),"Please type either: happy, sad, angry")
error.draw(win)
elif (colour !="happy" or colour !="sad" or colour !="angry"):
error=Text(Point(400,300),"Please type either: happy, sad, angry")
error.draw(win)
else:
#Clearing Second Frame, for next screen.
inputBox.undraw()
goButton.undraw()
error.undraw()
message.undraw()
submsg1.undraw()
#Moving to next frame.
table=Rectangle(Point(50,400),Point(750,400))
table.setFill("blue")
table.draw(win)
答案 0 :(得分:1)
基本上你的代码发生的是这一行;
elif (colour !="happy" or colour !="sad" or colour !="angry"):
如果其中一个条件为真,则会执行此操作,因为or
的工作方式。因为其中一个永远是真的(因为用户不能同时进入快乐和悲伤)。
因此,对于您的示例,您将需要and
函数,因为所有条件都必须为true才能运行。
elif (colour !="happy" and colour !="sad" and colour !="angry"):
现在要完成,您需要将此行colour=inputBox.getText().lower()
移到此行clickPoint = win.getMouse()
之下但在if
之前,因为getText
是一个在您调用它时执行的事件,所以当你在开始时调用它时得到什么都没有,因为用户还没有输入任何内容。
所以看起来应该是这样的;
clickPoint = win.getMouse()
colour=inputBox.getText().lower()
#Checking user inputs the right way.
if not colour.isalpha():
答案 1 :(得分:0)
而不是
elif (colour !="happy" or colour !="sad" or colour !="angry"):
使用
elif (colour !="happy" and colour !="sad" and colour !="angry"):
(and
而非or
)因为您的原始条件始终得到满足。