if(Selection< 0)和(Selection> 3)条件对input = 4的行为不同。为什么?

时间:2017-07-04 06:06:59

标签: python if-statement conditional-statements

def PrintBlue():
    print (" You chose Blue!\r\n")

def PrintRed():
    print (" You chose Red!\r\n")

def PrintOrange():
    print (" You chose Orange!\r\n")

def PrintYellow():
    print (" You chose Yellow!\r\n")

#Let's create a dictionary with unique key

ColorSelect = {
    0:PrintBlue,
    1:PrintRed,
    2:PrintOrange,
    3:PrintYellow
    }

Selection = 0

while (Selection != 4):
    print ("0.Blue")
    print ("1.Red")
    print ("2.Orange")
    print ("3.Yellow")
    try:
        Selection = int(input("Select a color option: "))
        x=0
        if ( Selection < 0) and (Selection > 3):
            raise KeyError(" Enter a number >=0 and <4)")
        else:
            ColorSelect[Selection]() # Run the function inside dictionary as well
    except KeyError:
        pass

上面是我的python代码。我使用的是2.7版本。但是在运行之后我得到了不同的结果,输入= 4。虽然我期待选择&lt; 0或&gt; 3的结果相同。这里结果如下:

0.Blue 1.Red 2.Orange 3.Yellow 选择颜色选项:5 0.Blue 1.Red 2.Orange 3.Yellow 选择颜色选项:4

  
    
      

    
  

注意输入input = 4后,python从运行时退出。当我输入0,1,2,3,5,6,7时,每次再次要求输入值,但是当我输入4时退出。

2 个答案:

答案 0 :(得分:1)

DataTable

表示“如果选择小于零且大于三”,则不会发生。我怀疑你的意思

DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;

会引起有效范围之外的输入错误。

由于

而输入4时程序正在退出
SqlCommand cmd = new SqlCommand("select * from Pm where user_id=@userId", con1);
cmd.Parameters.AddWithValue("@userId", (String)Session["uid"]);

如果这不是所需的行为,则需要更改该行。例如,如果您希望循环永远运行,则可能只是

if ( Selection < 0) and (Selection > 3):

答案 1 :(得分:0)

你有&#34;而(选择!= 4)&#34;在第24行 - 当选择等于4时,while循环(和程序)退出。