![](/img/trans.png)
[英]for and if/else loop with nested if statement not working in python
[英]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.