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是一个键,Vegatarian是一个值 V[键]:素食主义者[值]
- 如果食物是空的,您应该打印一些有意义的内容,所以我在本例中添加了另一个条件来打印“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$