需要帮助提示字符串并将其添加到一个字符串

时间:2014-10-20 23:21:10

标签: python string

分配是采用下面列出的两个字符串,并扫描str_NamesIDs的膳食字母,例如M,V或A.如果其中一个字母在字符串中,则为#34;食物",我们必须只存储它所代表的那个人的名字,然后打印人名"可以吃" m + v等

我想要做的是概括名称和减肥食品的输入。因此,对于饮食传奇,我要求用户输入A:酒精'并将其添加到当前字符串" food"。如果用户输入'停止'它希望它中断并继续前进。



str_NamesIDs = 'John MVA, Henry MVN,...'
food = 'V:Vegatarian,M:Meat,A:Alcohol,N:Non-Alcoholic'

#Ask for dietary legend
food = ' ';

while food.upper() != 'STOP':
    food = food + (raw_input('Enter Diet list in Format Letter:Catagory '));
    




3 个答案:

答案 0 :(得分:0)

也许这就是你想要的?

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

答案 1 :(得分:0)

您需要将输入放在单独的变量中。如果您将输入添加到同一个字符串,它将永远不等于'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$

答案 2 :(得分:-1)

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

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

    食物= [(V,Vegatarian),(M,肉),(A,酒精),(N,非酒精)]

  • 以下是帮助您了解问题的代码段(您应该测试并添加更多方案)。

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

food = {"V":"Vegatarian","M":"Meat","A":"Alcohol","N":"Non-Alcoholic"}
 str_NamesID=raw_input('Enter your name')
 food = ' ';
 CatagoryList=[]
 Catagory= ''
 while Catagory.upper() != 'STOP':
     Catagory= raw_input('Enter Diet list in Format Letter:Catagory ')
     CatagoryList+=[Catagory]
     if Catagory not in CatagoryList:
         food += "+"+food[Catagory]
 #print food
 if not food[:-1]:
     print str_NamesID, "can eat nothing"
 else:
     print str_NamesID, "can eat",food[:-1]

让我向你解释一下。

  • 首先是: 你不能用信件搜索食物,这是不明确的。 想象一下,如果你第一次存储“素食”,那么你输入“N”,你如何验证你所寻找的“N”是指“非酒精”而不是素食者(最后一封信是n) )。

你应该做的是将密钥(V,M,A,N)存储在不同的列表中(以便检查),并将这些单词存储在不同的短语(食物)中以便稍后打印。

  • 第二件事: 使用词典。 V是关键,而Vegatarian是一个价值 V [关键]:Vegatarian [数值]

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

  • 如果食物是空的,你应该打印一些有意义的东西,所以我添加了另一个条件,在这种情况下打印“没有”

相关问题