无法循环打印所有内容

时间:2016-01-17 22:52:05

标签: python list if-statement input while-loop

我仍然是python的新手,我正在做一个关于路径和文件的项目。不幸的是,我无法发布该项目的代码,否则我可能遇到麻烦。所以我做了一个类似于我希望用我的代码执行的练习题,我想知道是否有人可以帮助我,因为我已经被困在这几天了。

好的,我想要做的是在验证第一个输入并输入第二个输入后打印列表L中包含第二个输入的所有句子。防爆。如果我有一个名为

的列表
dog_sentences = ['dogs are cute', 'dogs are loyal', 'hi cat', 'dogs rule']

如果我的第二个输入是单词dog。我希望它打印出列表中包含单词dog的所有句子。所以我想打印出来的是以下内容。

dogs are cute
dogs are loyal
dogs rule

这就是我希望能够在shell中打印的内容。所以这些是我所做的实践问题,并且尝试过两种不同的方式。

这是清单:

L=['hi there', 'it was nice to say hi', 'saying hi this many times is awkward',
   'hey I can also say hola', 'no need to say hi']

第一种方式:

while True:
    match = input().strip()
    for sentence in L:
        if match == 'Next' + ' ' + 'step':
            print('match')
            new_word_match = input().strip()
            if new_word_match in sentence:
                print(sentence)
                break
        else:
            print('error')

但是在shell中它只是打印出列表中的第一个句子,然后每次点击进入时都会继续输出错误。

第二种方式:

while True:
    match = input().strip()
    for sentence in L:
        print(sentence)
    if match == 'Next' + ' ' + 'step':
        print('match')
        new_word_match = input().strip()
        if new_word_match in sentence:
            print(sentence)
            break
    else:
        print('error')

shell只会给我最后一句“没必要打个招呼”。但我想要打印的是

hi there
it was nice to say hi
saying hi this many times is awkward
no need to say hi

如果有人能帮助我,我会非常感激,并提前非常感谢你。

4 个答案:

答案 0 :(得分:0)

l = ["god is there", "human are there", "nobody there"]
string = str(raw_input("which word r u lookin for: "))
for i in range(0, len(l)):
    if(string in str(l[i])):
        print(l[i])

即使我是Python的新手......希望它有所帮助

答案 1 :(得分:0)

如果您不需要重复此过程。下面的代码应该有效:

input1 = input().strip()
match_string = "Next Step"
if input1 == match_string:
    input2 = input().strip()
    for sentence in sentences:
         if input2 in sentence:
             print(sentence)

如果你需要重复一遍:

while True:
   input1 = input().strip()
   match_string = "Next Step"
   if input1 == match_string:
      input2 = input().strip()
      for sentence in sentences:
           if input2 in sentence:
               print(sentence)

   ....some condition to break out....

答案 2 :(得分:0)

我不确定我理解你的问题。我也是Python的新手,也可能无法看到全貌。这就是我想出来的。

searched_words = input("word you want to see in text: ")
for i in L:
    if searched_words in i:
        print(i)

如果你想连续循环:

ans = True
while ans == True:
    searched_words = raw_input("word you want to see in text: ")
    for i in L:
        if searched_words in i:
            print(i)
    check = raw_input("Do you wish to continue searching for words in the list(y/n)?")
    if check == 'n': 
        ans = False

希望这有帮助

答案 3 :(得分:0)

改为使用正则表达式模块(用document.ready表示)。例如:

re

import re dog_sentences = ['dogs are cute', 'dogs are loyal', 'hi cat', 'dogs rule'] for i in range(0, len(dog_sentences)): m = re.match("dogs", dog_sentences[i]) if m is not None: print dog_sentences[i] 首先导入正则表达式模块,这是该程序所必需的。然后,import re将启动for i in range(0, len(dog_sentences)):循环,以帮助您搜索列表中的每个项目。 for用作列表的长度。由于最后一个数字比编写的数字少一个,因此使用len()搜索列表将非常有用。

dog_sentences[i]

第一个参数是您要在字符串中找到的字符串或模式,这是您的下一个项目。如果没有匹配,则m = re.match("dogs", dog_sentences[i]) 等于m

None

如果匹配(if m is not None: print dog_sentences[i] 不等于m),则打印包含其中字符串的相应项目。