如果元组中的string1或string2

时间:2017-09-16 00:18:14

标签: python python-3.x tuples string-matching

所以我偶然发现了一个问题(最终通过实验解决了问题)并检查元组中是否存在字符串。

  struct Person{
      char* Name;
      char* Gender;
  };
  struct Person person[100];

  void readAllFromFile(){
       FILE * fp;
       char currentLine[256];
       int fd;
       if((fp = fopen ("test.txt", "r"))==NULL){
           perror("Can not open");
          fclose(fp);
          return;
       }
       int currentLineNo=0;
       char *items;
       while (fgets(currentLine, sizeof(currentLine), fp)) {
           items=strtok(currentLine,",");
           struct Person tempPerson;
           int iter=0;
           while(items != NULL)
           {
              if(iter==0){
                  tempPerson.Name=items;
              }
               else {
                  tempPerson.Gender=items;
              }
             iter++;
             items=strtok(NULL,",");
          }
          person[currentLineNo]=tempPerson;
          currentLineNo++;
       }

       /*Printing element of the array*/
       int i;
       for(i=0;i<currentLineNo;i++){
       printf("%s\n",person[i].Name);
     }
    fclose(fp);
   }

  int main() {
     readAllFromFile();
     return 0;
  }

评估if 'String1' or 'String2' in tuple: 即使两者都不在元组中。

True

给了我想要的结果。

第一个变体实际评估了什么?

编辑:@ Cricket_007 ...您在欺诈报告中指出的问题并没有涵盖if 'String1' in tuple or 'String2' in tuple: ,因此我认为这不是一个骗局。

1 个答案:

答案 0 :(得分:2)

区别在于in容器检查, 如果您违反此声明:if 'String1' or 'String2' in tuple:

  • 'String1'返回True,因为只要字符串不为空,测试str()就会返回True

  • 'String2' in tuple仅在元组中包含字符串时返回True

第一个条件始终返回 True

第二行首先测试in包含的两个变量,然后在结果之间执行or