分配是采用下面列出的两个字符串,并扫描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 '));

答案 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]
让我向你解释一下。
你应该做的是将密钥(V,M,A,N)存储在不同的列表中(以便检查),并将这些单词存储在不同的短语(食物)中以便稍后打印。
第二件事: 使用词典。 V是关键,而Vegatarian是一个价值 V [关键]:Vegatarian [数值]
我使用食物[: - 1]删除最后一个字符(因为我每次食用食物时加上+操作符,你可以在中间打印食物来验证)
如果食物是空的,你应该打印一些有意义的东西,所以我添加了另一个条件,在这种情况下打印“没有”