簡體   English   中英

Python if / else循環不起作用

[英]Python if/else loop not working

我有一個csv文件所在的目錄。 該代碼讀取文件並基於文件中的數據創建直方圖。

但是,我試圖這樣做,以便在命令行中可以在csv文件中輸入列標題之一,並且代碼將僅繪制指定命令的圖形。 示例:python histogram_maker.py“ C:/ Folder”區域。

我能夠做到這一點,但是我想添加一個在用戶輸入csv文件中未指定的命令的情況下會產生錯誤消息的部件。 示例:周界不存在。 我的代碼有什么問題? 即使存在某些內容,我也會在命令提示符下出現20次“不存在”,但它仍然生成我需要的所有文件。 如何停止這種重復並使之如此,以便僅當csv文件中沒有某些內容時才會出現錯誤。

        for column in df:
            os.chdir(directory)
            if len(sys.argv)>2:
                for x in arguments:
                    if x.endswith(column):
                       #code for histogram
                    else: 
                        print "does not exist"

您正在測試所有參數,即使只有一個匹配。 對於每個不匹配的參數,您將打印錯誤消息。

使用any()函數查看是否存在任何匹配項:

if len(sys.argv)>2:
    if any(x.endswith(column) for x in arguments):
        #code for histogram
    else: 
        print "does not exist"

或反轉測試; not使用並提早紓困:

if len(sys.argv)>2:
    if not any(x.endswith(column) for x in arguments):
        print "does not exist"
        sys.exit(1)

    #code for histogram

如果帶有生成器表達式的any()有點難以理解,您仍然可以使用for循環,但是您需要使用break盡早結束循環,然后使用else:套件將在for循環執行時執行沒有提早退出:

for x in arguments:
    if x.endswidth(column):
        break  # found a match
else:
    # `for` loop was not exited, so no match found
    print "does not exist"
    sys.exit(1)

也許您想要這樣的東西。

    for column in df:
        os.chdir(directory)
        if len(sys.argv)>2:
            found = False
            for x in arguments:
                if x.endswith(column):
                   found = True
                   #code for histogram
                   break
            if (found == False):
                print "does not exist"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM