和或运算符python

时间:2018-01-18 08:49:38

标签: python operators

我知道这个问题可能看起来很愚蠢,但实际上我并没有得到逻辑。 这很简单,我想做一个写或读文件的程序。 所以我要求这个人输入'w'或'r'。 只要不是'w'或'r'的输入我一直在询问。 下面的代码工作,我尝试了不同的方式,但我不明白为什么它适用于'和',对我来说它应该是'或':

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

2 个答案:

答案 0 :(得分:0)

not (re == 'w' or re =='r')等于re != 'w' and re != 'r'。当输入为'r'或'w'

时,您希望停止(while条件变为false)

答案 1 :(得分:0)

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

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")

上面的片段是"是"功能上与...同义:

re     = input("type w for write , r for read\n")

while re != 'w' and  re!='r':
    re = input("type w or r")
print("ok")