【问题标题】:and or operator python和或运算符 python
【发布时间】:2018-01-18 08:49:37
【问题描述】:

我知道这个问题可能看起来很愚蠢,但我真的不明白逻辑。 这真的很简单,我想做一个写入或读取文件的程序。 所以我要求这个人输入“w”或“r”。 只要输入不是“w”或“r”,我就会一直问。 下面的代码有效,我尝试了不同的方法,但我不明白为什么它与'and'一起工作,因为对我来说它应该是'or':

re=input("type w for write , r for read\n")
while re != 'w' and  re!='r':
    re=input("type w or r")
print("ok")

【问题讨论】:

  • 只需使用 If 而不是 while 并更改 or 而不是 and 并尝试。
  • 这就像在问“我不明白为什么 1+1 是 2 而我应该是 5”。你错了,没什么好解释的……这是orand的基本定义……
  • 评估表达式并再次查看,例如,如果 re 不是 w 或 r,则结果为 while True and True:
  • 这是De Morgan's Laws。即 ~ (A v B) ~A ^ ~B ... 用简单的英语,来自 wolfram alpha:“A 或 B 为真不是真的”和“A 不是真的,B 不是真的”是等价的。类似地,“A 和 B 不为真”和“A 不为真或 B 不为真”这两个陈述是等价的。”
  • 这真的是你应该用笔和纸简单地完成的事情。

标签: python operators


【解决方案1】:

not (re == 'w' or re =='r') 等于 re != 'w' and re != 'r'。当输入为 'r' 或 'w' 时,您想停止(while 条件变为 false)

【讨论】:

    【解决方案2】:

    您的代码可以使用(伪代码)以简单的英语重写,如下所示:

    1: GET INPUT FROM USER 
       INFORM THEM WE ARE ONLY INTERESTED IN "w" WHICH STANDS FOR "WRITE"
       OR "r" WHICH STANDS FOR "READ"
    
    2: SO LONG AS THE INPUT IS "NEITHER" w NOR r, KEEP PROMPTING THE USER
       TO SUPPLY EITHER OF THE EXPECTED VALUES: "w" OR "r"
       THIS IS IMPLIED BY THE LINE THAT READS:
       while re != 'w' and  re!='r':
           re=input("type w or r")
    
    3: HOWEVER, IF THE USER ENTERED THE REQUIRED STRING: w OR r,
       LET US JUST GO AHEAD AND PRINT OK TO THE SCREEN
    

    换一种方式,也可以这样写:

    writeRead       = input("type w for write , r for read\n")
    
    # SO LONG AS THE VALUE OF writeRead (re) IS NOT "w" AND IS ALSO NOT "r"
    # (THIS IS WHAT YOU JUST SAID IN CODE HERE —> re != 'w' and  re != 'r': )
    while writeRead not in ('wr'):     
        writeRead   = input("type w or r\n")
    print("ok")
    

    上面的 sn-p 在功能上是“YES”的同义词:

    re     = input("type w for write , r for read\n")
    
    while re != 'w' and  re!='r':
        re = input("type w or r")
    print("ok")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多