Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要帮助提示字符串并将其添加到其中吗_Python_String - Fatal编程技术网

Python 需要帮助提示字符串并将其添加到其中吗

Python 需要帮助提示字符串并将其添加到其中吗,python,string,Python,String,任务是提取两个字符串,都列在下面,并扫描str_NamesIDs,查找它们的饮食字母,如M、V或A。如果其中一个字母在字符串“food”中,我们必须只存储它代表该人名的单词,并打印人名“can eat”M+V等 我想做的是概括一下名字和减肥食品的输入。因此,对于饮食图例,我要求用户输入'A:Alcohol'并将其添加到当前字符串“food”中。如果用户输入“停止”,它希望它中断并继续 str_NamesIDs='John MVA,Henry MVN,' 食物='V:素食主义者,M:肉类,A:酒

任务是提取两个字符串,都列在下面,并扫描
str_NamesIDs
,查找它们的饮食字母,如M、V或A。如果其中一个字母在字符串“food”中,我们必须只存储它代表该人名的单词,并打印人名“can eat”M+V等

我想做的是概括一下名字和减肥食品的输入。因此,对于饮食图例,我要求用户输入'A:Alcohol'并将其添加到当前字符串“food”中。如果用户输入“停止”,它希望它中断并继续

str_NamesIDs='John MVA,Henry MVN,'
食物='V:素食主义者,M:肉类,A:酒精,N:非酒精'
#询问饮食传说
食物='';
而食物。上()!='停止':
食品=食品+(未加工输入(“以字母格式输入饮食列表:分类”);

这不是存储数据的最佳方式,最好使用两种表示形式之一。 -字典:

food = {V:Vegatarian,M:Meat,A:Alcohol,N:Non-Alcoholic}
  • 元组列表:

    食物=[(V,素食主义者),(M,肉类),(A,酒精),(N,不含酒精)]

  • 下面是一个帮助您理解问题的片段(您应该测试并添加更多场景)

要求用户输入数据时,应将输入的数据存储在变量中

让我向你解释

  • 第一件事是: 你不能用字母来搜索食物,它是模棱两可的。 想象一下,如果您第一次存储“素食者”,然后输入“N”,您如何验证您要查找的“N”在素食者中是指“非酒精”而不是for(最后一个字母是N)
您应该做的是将键(V、M、A、N)存储在不同的列表中(以进行检查),并将单词存储在不同的短语中(食物),以便稍后打印

  • 第二件事: 使用字典。V是一个键,Vegatarian是一个值 V[键]:素食主义者[值]

  • >P>我使用食物[:1 ]删除最后一个字符(因为我每次添加食物时加上+操作符,你可以在中间打印食物)以验证

  • 如果食物是空的,您应该打印一些有意义的内容,所以我在本例中添加了另一个条件来打印“nothing”


    • 也许这就是你想要的

      str_NamesIDs = 'John MVA, Henry MVN'
      checking_list = [i.strip().split()[-1] for i in str_NamesIDs.split(',')]
      food = []
      input_string = ''
      while input_string.upper() != 'STOP':
          input_string = raw_input('Enter Diet list in Format Letter:Catagory ');
          # simply checking without using regex
          if input_string[0].isupper() and input_string[0] == input_string[2] and input_string[1]==':' and any(input_string[2] in i for i in checking_list):
              food.append(input_string[2:])
      print food
      

      您需要将输入放在单独的变量中。如果将输入添加到同一字符串中,它将永远不会等于
      “STOP”
      ,因此循环将永远不会结束。您必须能够只比较上一次输入的内容,而不是历史上输入的所有内容的串联

      此代码将执行以下操作:

      #!/usr/bin/env python
      
      words = ''
      
      while True:
      
          # Get input
      
          new_word = raw_input('Enter a word: ')
      
          # Stop loop if user entered 'stop'
      
          if new_word.upper() == 'STOP':
              break
      
          # Add comma to string if this is not the first word
      
          if words:
              words += ','
      
          # Add word to string
      
          words += new_word
      
      print "Your words are: " + words
      
      输出:

      paul@horus:~/src/sandbox$ ./words.py
      Enter a word: Something
      Enter a word: wicked
      Enter a word: this
      Enter a word: way
      Enter a word: comes
      Enter a word: stop
      Your words are: Something,wicked,this,way,comes
      paul@horus:~/src/sandbox$
      

      这应该做什么?它在哪些方面有缺陷?或者,换一种说法:问题是什么?真的吗?代码片段选项适用于HTML、CSS和JavaScript,而不是Python。如果
      食物
      '
      的形式开始生活,然后你向其中添加内容,那么它什么时候会等于
      'STOP'
      ?@PaulGriffiths这是我很难弄明白的。我希望它能提示用户继续添加食物,并在食物等于停止时停止。所以,我在循环,而食物并不等于停止,对吗?@HarrisNghiem:很明显,你需要将输入读入一个单独的变量,否则你永远无法将它与
      'stop'
      进行比较。如果它不等于
      'STOP'
      ,那么,也只有在那时,你才应该将它连接到
      食物。如果您需要将输入内容与第二行中存储在食品中的内容进行比较,那么显然您需要第三个变量,否则您将覆盖原始数据。给出-1:您能解释原因吗!它似乎不像我希望的那样工作。它不是扫描str_NamesID中的字母以查看它是否在CatagoryLisa上,而是自动为食物[Catagory](这意味着它在搜索关键字if Category所在的值)。你研究过字典吗?str_namesid是名字(人),它们不同于食物的名字(食物)。这真的很简单,不会处理重复的问题。这很完美,谢谢。我从没想过用bool加上with。而且,在第一个单词后面加上昏迷是很棒的。这正是我想要的。我现在明白为什么我不能只有一个变量“食物”。不客气。如果你正在寻找的话,请考虑接受答案。
      
      paul@horus:~/src/sandbox$ ./words.py
      Enter a word: Something
      Enter a word: wicked
      Enter a word: this
      Enter a word: way
      Enter a word: comes
      Enter a word: stop
      Your words are: Something,wicked,this,way,comes
      paul@horus:~/src/sandbox$