为什么我的if语句不起作用? (graphics.py相关)

时间:2017-05-22 08:26:35

标签: python

我正在创建一个迷你程序&我试图检查用户是否输入了我想要的内容 - 他们只是只能输入 一个以下内容:快乐,悲伤,愤怒,紧张,兴奋但由于某种原因,它忽略了整个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)

2 个答案:

答案 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)因为您的原始条件始终得到满足。