打破一个循环

时间:2015-08-20 02:50:54

标签: python

你好我试图制作一个MP3播放器。目前我只是试图让它将找到的mp3文件打印到控制台,但它陷入了一个无限循环,我不知道如何打破它,因为我仍然是python的新手

def mp3_finder():
    times_done = 5
    starting = 0
    for file in os.listdir(full_dir):
        if file.endswith(".mp3"):
            while starting < times_done:
                starting = starting + 1
                print(file)

    return mp3_finder()

修改

抱歉,我不是很清楚,但我想要做的是找到mp3文件并将名称打印到控制台5次,但因为它一直找到文件,它一直打印到控制台,直到python停止它,因为它打印数百它的

3 个答案:

答案 0 :(得分:2)

您在return语句中再次调用该函数;因为您在函数中print,所以您可以完全删除return

def mp3_finder():
    times_done = 5
    starting = 0
    for file in os.listdir(full_dir):
        if file.endswith(".mp3"):
            while starting < times_done:
                starting = starting + 1
                print(file)

这回答了你关于打破循环的问题,但也许你应该问另一个关于你的代码的问题,因为我不认为它会给你你想要的输出。

答案 1 :(得分:0)

首先,你可能不应该在函数结束时调用mp3_finder - 它将无限地递归。你也许不想要内循环,它只会打印第一个文件五次。结合的结果是该函数打印第一个文件五次,然后它调用自己再次打印第一个文件五次,依此类推,直到达到最大递归深度。

您想要返回的内容并不清楚可能只需返回None(即完全跳过return语句)。其次,当你完成时,你需要break离开循环。

def mp3_finder():
    times_done = 5
    starting = 0
    for file in os.listdir(full_dir):
        if file.endswith(".mp3"):
            if starting < times_done:
                starting = starting + 1
                print(file)
            else:
                break

答案 2 :(得分:-1)

def mp3_finder():
   times_done = 5
   starting = 0
   for file in os.listdir(full_dir):
     if file.endswith(".mp3"):
        while starting < times_done:
            starting = starting + 1
            print(file)

mp3_finder()

注意你的缩进,否则看起来不错