<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic if else loop problem in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685260#M53058</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have written a script for toolbox that selects cities and outputs them to a table (citylist).&amp;nbsp; It all works apart from the if....else part.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if: maximim kilometres to interstates &amp;gt; 0:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; subselect cities within x km of interstates&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use citylist&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It works fine if users input a figure &amp;gt; 0 but not if it is &amp;lt;= 0 or text - then the program gets stuck in a loop and doesn't stop.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help as to where I'm going wrong would be appreciated.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;PRE&gt;&lt;/PRE&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# import system modules&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy, os, arcpy, string&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;from arcpy import env&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.env.overwriteOutput = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# get user supplied path, layers and fields&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;path = arcpy.GetParameterAsText(0) # path is H:\working\Findsites.gdb&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;cities = arcpy.GetParameterAsText(1) # cities Layer is cities Feature Layer cities.shp&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;cities2 = "cities2"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;citiesL = "citiesL"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;counties = arcpy.GetParameterAsText(2) # counties Layer is counties Feature Layer counties.shp&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;counties2 = "counties2"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;countiesL ="countiesL"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;interstates = arcpy.GetParameterAsText(3) # interstates Layer is Feature Layer interstates.shp&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;interstates2 = "interstates2"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;interstatesL = "interstatesL"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;crimeField = arcpy.GetParameterAsText(4) # crimeField is fieldname 'CRIME_INDE' SQL expression&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;crimeval = arcpy.GetParameterAsText(5) # crime index is CRIME_INDE and is a Double 0.02&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;whereClause = "{0} &amp;lt;= {1}".format(arcpy.AddFieldDelimiters(citiesL, crimeField), crimeval)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;universityField = arcpy.GetParameterAsText(6) # universityField is fieldname 'UNIVERSITY' SQL expression&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;universityval = arcpy.GetParameterAsText(7) # universityfieldindex is the UNIVERSITY field and is string integer 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;whereClause2 = "{0} = {1}".format(arcpy.AddFieldDelimiters(citiesL, universityField), universityval)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;workforceField = arcpy.GetParameterAsText(8) # workforceField is fieldname 'AGE_18_64' SQL expression&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;workforceval = arcpy.GetParameterAsText(9) # workforce index is attribute of AGE_18_64 field and is a Double and is 25000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;whereClause3 = "{0} &amp;gt;= {1}".format(arcpy.AddFieldDelimiters(countiesL, workforceField), workforceval)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;farmField = arcpy.GetParameterAsText(10) # farmField is fieldname 'NO_FARMS87' SQL expression&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;farmval = arcpy.GetParameterAsText(11) # farmfieldindex is the NO_FARMS87 field and is Double integer is 500&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;whereClause4 = "{0} &amp;gt;= {1}".format(arcpy.AddFieldDelimiters(countiesL, farmField), farmval)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;maxKmInterstate = arcpy.GetParameterAsText(12) # interstate WITHIN_A_DISTANCE linear unit&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;nearestInterstate = arcpy.GetParameterAsText(13) # Near Table Analysis table generated&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;citylist = arcpy.GetParameterAsText(14) # narrowed down cities list temporary&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;citylistL = "citylistL" # the temporary feature layer of the generated cityList feature class&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;outputLayer = arcpy.GetParameterAsText(15) # ootput&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# make cities feature layer and remove unnecessary fields&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.CopyFeatures_management(cities, cities2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.MakeFeatureLayer_management(cities2, citiesL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.DeleteField_management(citiesL, ["POPULATION", "TOTAL_CRIM"])&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if crimeField == "CRIME_INDE" and universityField == "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause + " AND " + whereClause2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Maximum crime index threshold and cities with universities selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif crimeField == "CRIME_INDE" and universityField &amp;lt;&amp;gt; "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Maximum crime index threshold selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(citiesL, "UNIVERSITY")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif crimeField &amp;lt;&amp;gt; "CRIME_INDE" and universityField == "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Cities with a university selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(citiesL, "CRIME_INDE")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif crimeField &amp;lt;&amp;gt; "CRIME_INDE" and universityField &amp;lt;&amp;gt; "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("No crime threshold or cities with universities selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(citiesL, ["CRIME_INDE", "UNIVERSITY"])&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# make counties feature layer and remove unnecessary fields&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.CopyFeatures_management(counties, counties2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.MakeFeatureLayer_management(counties2, countiesL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.DeleteField_management(countiesL, ["AREA", "PERIMETER", "POP1990", "POP_SQMILE", "SQ_MILES", "GAVPRIMARY", "X", "Y", "X_1", "Y_1"])&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if workforceField == "AGE_18_64" and farmField == "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause3 + " AND " + whereClause4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Minimum workforce and proximity to farms selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(countiesL, "countylist")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif workforceField == "AGE_18_64" and farmField &amp;lt;&amp;gt; "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Minimum workforce selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(countiesL, "NO_FARMS87")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(countiesL, "countylist")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif workforceField &amp;lt;&amp;gt; "AGE_18_64" and farmField == "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Proximity to farms selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(countiesL, "AGE_18_64")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(countiesL, "countylist")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif workforceField &amp;lt;&amp;gt; "AGE_18_64" and farmField &amp;lt;&amp;gt; "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("No minimun workforce or proximity to farms selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(countiesL, ["AGE_18_64", "NO_FARMS87"])&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(countiesL, "countylist")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# from selection above select cities intersecting counties&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.SelectLayerByLocation_management(citiesL, "INTERSECT", "countylist", "", "SUBSET_SELECTION")&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# create a city list if maximum distance to interstates selected &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if maxKmInterstate &amp;gt;0:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Maximum distance to interstates selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # copy interstates feature class so original is unaffected&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(interstates, interstates2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # make interstates feature layer&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.MakeFeatureLayer_management(interstates2, interstatesL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # further select cities within maximum interstate distance&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByLocation_management(citiesL, "WITHIN_A_DISTANCE", interstatesL, maxKmInterstate, "SUBSET_SELECTION")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # copy to citylist&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # create a feature layer from new citylist &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.MakeFeatureLayer_management(citylist, citylistL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # Generate NearTable_analysis to find closest interstate distance&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.GenerateNearTable_analysis(citylistL, interstates, nearestInterstate, maxKmInterstate)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # join nearest interstate column to citylist&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.JoinField_management(citylistL, "FID", nearestInterstate, "IN_FID", "NEAR_DIST")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # divide distance to interstates by 1000 to convert to kilometres&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # arcpy.CalculateField_management(citylistL, "NEAR_DIST", '!NEAR_DIST!/1000') &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # spatially join the narrowed down city/road and counties layers remove unwanted fields and rename others&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SpatialJoin_analysis(citylistL, countiesL, outputLayer, "#", "#", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("No maximum distance to interstates selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # create city list where no maximum interstate distance selected&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # create a feature layer from new citylist &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.MakeFeatureLayer_management(citylist, citylistL) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # spatially join the narrowed down city/road and counties layers remove unwanted fields and rename others&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SpatialJoin_analysis(citylistL, countiesL, outputLayer, "#", "#", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # update citylist with relevant fields from counties join&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Set data path&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;intable = "H:/working/CityTable.shp"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Get the fields from the input&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;fields= arcpy.ListFields(intable)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Create a fieldinfo object&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;fieldinfo = arcpy.FieldInfo()&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Iterate through the fields and set them to fieldinfo&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for field in fields:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if field.name == "NAME":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "CITYNM", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "CRIME_INDE":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "CRIMEINDX", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NEAR_DIST":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "INTRSTkm", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NAME_1":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "COUNTYNM", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "AGE_18_64":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "WORKFRCE", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "FARMS", "VISIBLE", "")&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; #elif field.name == "Join_Count":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "TARGET_FID":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "OBJECTID":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Leng":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Le_1":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Area":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "ID":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# The created crime_view layer will have fields as set in fieldinfo object&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.MakeTableView_management(intable, "CityView", "", "", fieldinfo)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# To persist the layer on disk make a copy of the view&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.CopyRows_management("CityView", "H:/working/CityView.dbf") &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;print arcpy.GetMessages()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[\CODE]&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 24 Apr 2013 12:15:55 GMT</pubDate>
    <dc:creator>ScottMacDonald</dc:creator>
    <dc:date>2013-04-24T12:15:55Z</dc:date>
    <item>
      <title>if else loop problem</title>
      <link>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685260#M53058</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have written a script for toolbox that selects cities and outputs them to a table (citylist).&amp;nbsp; It all works apart from the if....else part.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if: maximim kilometres to interstates &amp;gt; 0:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; subselect cities within x km of interstates&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use citylist&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It works fine if users input a figure &amp;gt; 0 but not if it is &amp;lt;= 0 or text - then the program gets stuck in a loop and doesn't stop.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help as to where I'm going wrong would be appreciated.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;PRE&gt;&lt;/PRE&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# import system modules&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy, os, arcpy, string&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;from arcpy import env&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.env.overwriteOutput = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# get user supplied path, layers and fields&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;path = arcpy.GetParameterAsText(0) # path is H:\working\Findsites.gdb&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;cities = arcpy.GetParameterAsText(1) # cities Layer is cities Feature Layer cities.shp&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;cities2 = "cities2"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;citiesL = "citiesL"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;counties = arcpy.GetParameterAsText(2) # counties Layer is counties Feature Layer counties.shp&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;counties2 = "counties2"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;countiesL ="countiesL"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;interstates = arcpy.GetParameterAsText(3) # interstates Layer is Feature Layer interstates.shp&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;interstates2 = "interstates2"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;interstatesL = "interstatesL"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;crimeField = arcpy.GetParameterAsText(4) # crimeField is fieldname 'CRIME_INDE' SQL expression&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;crimeval = arcpy.GetParameterAsText(5) # crime index is CRIME_INDE and is a Double 0.02&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;whereClause = "{0} &amp;lt;= {1}".format(arcpy.AddFieldDelimiters(citiesL, crimeField), crimeval)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;universityField = arcpy.GetParameterAsText(6) # universityField is fieldname 'UNIVERSITY' SQL expression&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;universityval = arcpy.GetParameterAsText(7) # universityfieldindex is the UNIVERSITY field and is string integer 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;whereClause2 = "{0} = {1}".format(arcpy.AddFieldDelimiters(citiesL, universityField), universityval)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;workforceField = arcpy.GetParameterAsText(8) # workforceField is fieldname 'AGE_18_64' SQL expression&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;workforceval = arcpy.GetParameterAsText(9) # workforce index is attribute of AGE_18_64 field and is a Double and is 25000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;whereClause3 = "{0} &amp;gt;= {1}".format(arcpy.AddFieldDelimiters(countiesL, workforceField), workforceval)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;farmField = arcpy.GetParameterAsText(10) # farmField is fieldname 'NO_FARMS87' SQL expression&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;farmval = arcpy.GetParameterAsText(11) # farmfieldindex is the NO_FARMS87 field and is Double integer is 500&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;whereClause4 = "{0} &amp;gt;= {1}".format(arcpy.AddFieldDelimiters(countiesL, farmField), farmval)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;maxKmInterstate = arcpy.GetParameterAsText(12) # interstate WITHIN_A_DISTANCE linear unit&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;nearestInterstate = arcpy.GetParameterAsText(13) # Near Table Analysis table generated&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;citylist = arcpy.GetParameterAsText(14) # narrowed down cities list temporary&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;citylistL = "citylistL" # the temporary feature layer of the generated cityList feature class&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;outputLayer = arcpy.GetParameterAsText(15) # ootput&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# make cities feature layer and remove unnecessary fields&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.CopyFeatures_management(cities, cities2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.MakeFeatureLayer_management(cities2, citiesL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.DeleteField_management(citiesL, ["POPULATION", "TOTAL_CRIM"])&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if crimeField == "CRIME_INDE" and universityField == "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause + " AND " + whereClause2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Maximum crime index threshold and cities with universities selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif crimeField == "CRIME_INDE" and universityField &amp;lt;&amp;gt; "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Maximum crime index threshold selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(citiesL, "UNIVERSITY")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif crimeField &amp;lt;&amp;gt; "CRIME_INDE" and universityField == "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Cities with a university selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(citiesL, "CRIME_INDE")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif crimeField &amp;lt;&amp;gt; "CRIME_INDE" and universityField &amp;lt;&amp;gt; "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("No crime threshold or cities with universities selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(citiesL, ["CRIME_INDE", "UNIVERSITY"])&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# make counties feature layer and remove unnecessary fields&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.CopyFeatures_management(counties, counties2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.MakeFeatureLayer_management(counties2, countiesL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.DeleteField_management(countiesL, ["AREA", "PERIMETER", "POP1990", "POP_SQMILE", "SQ_MILES", "GAVPRIMARY", "X", "Y", "X_1", "Y_1"])&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if workforceField == "AGE_18_64" and farmField == "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause3 + " AND " + whereClause4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Minimum workforce and proximity to farms selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(countiesL, "countylist")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif workforceField == "AGE_18_64" and farmField &amp;lt;&amp;gt; "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Minimum workforce selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(countiesL, "NO_FARMS87")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(countiesL, "countylist")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif workforceField &amp;lt;&amp;gt; "AGE_18_64" and farmField == "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Proximity to farms selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(countiesL, "AGE_18_64")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(countiesL, "countylist")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;elif workforceField &amp;lt;&amp;gt; "AGE_18_64" and farmField &amp;lt;&amp;gt; "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("No minimun workforce or proximity to farms selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.DeleteField_management(countiesL, ["AGE_18_64", "NO_FARMS87"])&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(countiesL, "countylist")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# from selection above select cities intersecting counties&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.SelectLayerByLocation_management(citiesL, "INTERSECT", "countylist", "", "SUBSET_SELECTION")&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# create a city list if maximum distance to interstates selected &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if maxKmInterstate &amp;gt;0:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("Maximum distance to interstates selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # copy interstates feature class so original is unaffected&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(interstates, interstates2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # make interstates feature layer&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.MakeFeatureLayer_management(interstates2, interstatesL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # further select cities within maximum interstate distance&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SelectLayerByLocation_management(citiesL, "WITHIN_A_DISTANCE", interstatesL, maxKmInterstate, "SUBSET_SELECTION")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # copy to citylist&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # create a feature layer from new citylist &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.MakeFeatureLayer_management(citylist, citylistL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # Generate NearTable_analysis to find closest interstate distance&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.GenerateNearTable_analysis(citylistL, interstates, nearestInterstate, maxKmInterstate)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # join nearest interstate column to citylist&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.JoinField_management(citylistL, "FID", nearestInterstate, "IN_FID", "NEAR_DIST")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # divide distance to interstates by 1000 to convert to kilometres&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # arcpy.CalculateField_management(citylistL, "NEAR_DIST", '!NEAR_DIST!/1000') &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # spatially join the narrowed down city/road and counties layers remove unwanted fields and rename others&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SpatialJoin_analysis(citylistL, countiesL, outputLayer, "#", "#", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.AddMessage("No maximum distance to interstates selected")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # create city list where no maximum interstate distance selected&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.CopyFeatures_management(citiesL, citylist)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # create a feature layer from new citylist &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.MakeFeatureLayer_management(citylist, citylistL) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # spatially join the narrowed down city/road and counties layers remove unwanted fields and rename others&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; arcpy.SpatialJoin_analysis(citylistL, countiesL, outputLayer, "#", "#", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; # update citylist with relevant fields from counties join&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Set data path&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;intable = "H:/working/CityTable.shp"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Get the fields from the input&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;fields= arcpy.ListFields(intable)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Create a fieldinfo object&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;fieldinfo = arcpy.FieldInfo()&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Iterate through the fields and set them to fieldinfo&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for field in fields:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if field.name == "NAME":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "CITYNM", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "CRIME_INDE":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "CRIMEINDX", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "UNIVERSITY":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NEAR_DIST":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "INTRSTkm", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NAME_1":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "COUNTYNM", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "AGE_18_64":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "WORKFRCE", "VISIBLE", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NO_FARMS87":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "FARMS", "VISIBLE", "")&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; #elif field.name == "Join_Count":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "TARGET_FID":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "OBJECTID":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Leng":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Le_1":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Area":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "ID":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# The created crime_view layer will have fields as set in fieldinfo object&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.MakeTableView_management(intable, "CityView", "", "", fieldinfo)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# To persist the layer on disk make a copy of the view&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.CopyRows_management("CityView", "H:/working/CityView.dbf") &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;print arcpy.GetMessages()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[\CODE]&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Apr 2013 12:15:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685260#M53058</guid>
      <dc:creator>ScottMacDonald</dc:creator>
      <dc:date>2013-04-24T12:15:55Z</dc:date>
    </item>
    <item>
      <title>Re: if else loop problem</title>
      <link>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685261#M53059</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Scott,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can check whether a variable is an integer using 'isinstance'.&amp;nbsp; Try writing the if/else loop as:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;if isinstance(maxKmInterstate, (float, int)) and maxKmInterstate &amp;gt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;code&amp;gt;
else:
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;code&amp;gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Also, when posting your code your have your closing tag wrong [\CODE].&amp;nbsp; It should be .&amp;nbsp; An easy approach is select your code and click the &lt;/SPAN&gt;&lt;STRONG&gt;#&lt;/STRONG&gt;&lt;SPAN&gt; symbol in the header and the CODE tags will automatically be added to the selected text.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 04:49:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685261#M53059</guid>
      <dc:creator>JakeSkinner</dc:creator>
      <dc:date>2021-12-12T04:49:36Z</dc:date>
    </item>
    <item>
      <title>Re: if else loop problem</title>
      <link>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685262#M53060</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks JSkinn3,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;That line of code worked perfectly, thanks for the answer and for replying so quickly - much appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'll make sure I use the correct&amp;nbsp; &amp;nbsp; tags next time.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Scottaidh&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Apr 2013 14:10:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685262#M53060</guid>
      <dc:creator>ScottMacDonald</dc:creator>
      <dc:date>2013-04-24T14:10:57Z</dc:date>
    </item>
    <item>
      <title>Re: if else loop problem URGENT PLEASE HELP</title>
      <link>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685263#M53061</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi JSKinn - The code you sent to solve the if else problem&amp;nbsp; (isinstance) doesn't work when the user inputs 0 Kilometers - it goes into a loop and doesn't stop.&amp;nbsp; Do you know a way round this?&amp;nbsp; code below.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
# import system modules
import arcpy, os, arcpy, string
from arcpy import env
arcpy.env.overwriteOutput = True

# get user supplied path, layers and fields
path = arcpy.GetParameterAsText(0) # path is H:\working\Findsites.gdb
cities = arcpy.GetParameterAsText(1) # cities Layer is cities Feature Layer cities.shp
cities2 = "cities2"
citiesL = "citiesL"
counties = arcpy.GetParameterAsText(2) # counties Layer is counties Feature Layer counties.shp
counties2 = "counties2"
countiesL ="countiesL"
interstates = arcpy.GetParameterAsText(3) # interstates Layer is Feature Layer interstates.shp
interstates2 = "interstates2"
interstatesL = "interstatesL"
crimeField = arcpy.GetParameterAsText(4) # crimeField is fieldname 'CRIME_INDE' SQL expression
crimeval = arcpy.GetParameterAsText(5) # crime index is CRIME_INDE and is a Double 0.02
whereClause = "{0} &amp;lt;= {1}".format(arcpy.AddFieldDelimiters(citiesL, crimeField), crimeval)
universityField = arcpy.GetParameterAsText(6) # universityField is fieldname 'UNIVERSITY' SQL expression
universityval = arcpy.GetParameterAsText(7) # universityfieldindex is the UNIVERSITY field and is string integer 1
whereClause2 = "{0} = {1}".format(arcpy.AddFieldDelimiters(citiesL, universityField), universityval)
workforceField = arcpy.GetParameterAsText(8) # workforceField is fieldname 'AGE_18_64' SQL expression
workforceval = arcpy.GetParameterAsText(9) # workforce index is attribute of AGE_18_64 field and is a Double and is 25000
whereClause3 = "{0} &amp;gt;= {1}".format(arcpy.AddFieldDelimiters(countiesL, workforceField), workforceval)
farmField = arcpy.GetParameterAsText(10) # farmField is fieldname 'NO_FARMS87' SQL expression
farmval = arcpy.GetParameterAsText(11) # farmfieldindex is the NO_FARMS87 field and is Double integer is 500
whereClause4 = "{0} &amp;gt;= {1}".format(arcpy.AddFieldDelimiters(countiesL, farmField), farmval)
maxKmInterstate = arcpy.GetParameterAsText(12) # interstate WITHIN_A_DISTANCE linear unit
nearestInterstate = arcpy.GetParameterAsText(13) # Near Table Analysis table generated
newFieldName = "DISTANCE"
citylist = arcpy.GetParameterAsText(14) # narrowed down cities list temporary and set to derived to hide
citylistL = "citylistL" # the temporary feature layer of the generated cityList feature class
outputLayer = arcpy.GetParameterAsText(15) # oot layer set to derived
outputTable = arcpy.GetParameterAsText(16) # output table

# make cities feature layer and remove unnecessary fields
arcpy.CopyFeatures_management(cities, cities2)
arcpy.MakeFeatureLayer_management(cities2, citiesL)
arcpy.DeleteField_management(citiesL, ["POPULATION", "TOTAL_CRIM"])

if crimeField == "CRIME_INDE" and universityField == "UNIVERSITY":
 arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause + " AND " + whereClause2)
 arcpy.AddMessage("Maximum crime index threshold and cities with universities selected")
elif crimeField == "CRIME_INDE" and universityField &amp;lt;&amp;gt; "UNIVERSITY":
 arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause)
 arcpy.AddMessage("Maximum crime index threshold selected")
 arcpy.DeleteField_management(citiesL, "UNIVERSITY")
 arcpy.CopyFeatures_management(citiesL, citylist)
elif crimeField &amp;lt;&amp;gt; "CRIME_INDE" and universityField == "UNIVERSITY":
 arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause2)
 arcpy.AddMessage("Cities with a university selected")
 arcpy.DeleteField_management(citiesL, "CRIME_INDE")
 arcpy.CopyFeatures_management(citiesL, citylist)
elif crimeField &amp;lt;&amp;gt; "CRIME_INDE" and universityField &amp;lt;&amp;gt; "UNIVERSITY":
 arcpy.AddMessage("No crime threshold or cities with universities selected")
 arcpy.DeleteField_management(citiesL, ["CRIME_INDE", "UNIVERSITY"])
 arcpy.CopyFeatures_management(citiesL, citylist)

# make counties feature layer and remove unnecessary fields
arcpy.CopyFeatures_management(counties, counties2)
arcpy.MakeFeatureLayer_management(counties2, countiesL)
arcpy.DeleteField_management(countiesL, ["AREA", "PERIMETER", "POP1990", "POP_SQMILE", "SQ_MILES", "GAVPRIMARY", "X", "Y", "X_1", "Y_1"])

if workforceField == "AGE_18_64" and farmField == "NO_FARMS87":
 arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause3 + " AND " + whereClause4)
 arcpy.AddMessage("Minimum workforce and proximity to farms selected")
 arcpy.CopyFeatures_management(countiesL, "countylist")
elif workforceField == "AGE_18_64" and farmField &amp;lt;&amp;gt; "NO_FARMS87":
 arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause3)
 arcpy.AddMessage("Minimum workforce selected")
 arcpy.DeleteField_management(countiesL, "NO_FARMS87")
 arcpy.CopyFeatures_management(countiesL, "countylist")
elif workforceField &amp;lt;&amp;gt; "AGE_18_64" and farmField == "NO_FARMS87":
 arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause4)
 arcpy.AddMessage("Proximity to farms selected")
 arcpy.DeleteField_management(countiesL, "AGE_18_64")
 arcpy.CopyFeatures_management(countiesL, "countylist")
elif workforceField &amp;lt;&amp;gt; "AGE_18_64" and farmField &amp;lt;&amp;gt; "NO_FARMS87":
 arcpy.AddMessage("No minimun workforce or proximity to farms selected")
 arcpy.DeleteField_management(countiesL, ["AGE_18_64", "NO_FARMS87"])
 arcpy.CopyFeatures_management(countiesL, "countylist")
 
# from selection above select cities intersecting counties
arcpy.SelectLayerByLocation_management(citiesL, "INTERSECT", "countylist", "", "SUBSET_SELECTION")

# create a city list if maximum distance to interstates selected 
if isinstance(maxKmInterstate, (float, int)) or maxKmInterstate &amp;gt; 0:
 arcpy.AddMessage("Maximum distance to interstates selected")
 # copy interstates feature class so original is unaffected
 arcpy.CopyFeatures_management(interstates, interstates2)
 # make interstates feature layer
 arcpy.MakeFeatureLayer_management(interstates2, interstatesL)
 # further select cities within maximum interstate distance
 arcpy.SelectLayerByLocation_management(citiesL, "WITHIN_A_DISTANCE", interstatesL, maxKmInterstate, "SUBSET_SELECTION")
 # copy to citylist
 arcpy.CopyFeatures_management(citiesL, citylist)
 # create a feature layer from new citylist 
 arcpy.MakeFeatureLayer_management(citylist, citylistL)
 # Generate NearTable_analysis to find closest interstate distance
 arcpy.GenerateNearTable_analysis(citylistL, interstates, nearestInterstate, maxKmInterstate)
 # add new DISTANCE field as short integer 
 arcpy.AddField_management(nearestInterstate, newFieldName, "SHORT")
 #Calculates the new DISTANCE field by dividing metres by 1000
 arcpy.CalculateField_management(nearestInterstate, newFieldName, "!NEAR_DIST! / 1000", "PYTHON", "")
 # join city list to nearest interstate table
 arcpy.JoinField_management(citylistL, "FID", nearestInterstate, "IN_FID", "DISTANCE")
 # spatially join the narrowed down city/road and counties layers remove unwanted fields and rename others
 arcpy.SpatialJoin_analysis(citylistL, countiesL, outputLayer, "#", "#", "")
else:
 arcpy.AddMessage("No maximum distance to interstates selected")
 # create city list where no maximum interstate distance selected
 arcpy.CopyFeatures_management(citiesL, citylist)
 # create a feature layer from new citylist 
 arcpy.MakeFeatureLayer_management(citylist, citylistL) 
 # spatially join the narrowed down city/road and counties layers remove unwanted fields and rename others
 arcpy.SpatialJoin_analysis(citylistL, countiesL, outputLayer, "#", "#", "")
 # update citylist with relevant fields from counties join

arcpy.AddMessage("Creating City table based on selections.......") 
 
# Set data path
intable = outputLayer

# Get the fields from the input
fields= arcpy.ListFields(intable)

# Create a fieldinfo object
fieldinfo = arcpy.FieldInfo()

# Iterate through the fields and set them to fieldinfo
for field in fields:
&amp;nbsp;&amp;nbsp;&amp;nbsp; if field.name == "NAME":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "CITYNM", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "CRIME_INDE":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "CRIMEINDX", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "UNIVERSITY":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "DISTANCE":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "INTRSTkm", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NAME_1":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "COUNTYNM", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "AGE_18_64":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "WORKFRCE", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NO_FARMS87":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "FARMS", "VISIBLE", "")&amp;nbsp; 
 #elif field.name == "Join_Count":
&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "TARGET_FID":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "OBJECTID":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Leng":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Le_1":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Area":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "ID":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
 
# The created city view layer will have fields as set in fieldinfo object
arcpy.MakeTableView_management(intable, "CityView", "", "", fieldinfo)

# To persist the layer on disk make a copy of the view
arcpy.CopyRows_management("CityView", outputTable)

arcpy.AddMessage("Your City Table file has been created") 
&amp;nbsp; 
print arcpy.GetMessages()
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 04:49:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685263#M53061</guid>
      <dc:creator>ScottMacDonald</dc:creator>
      <dc:date>2021-12-12T04:49:39Z</dc:date>
    </item>
    <item>
      <title>Re: if else loop problem</title>
      <link>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685264#M53062</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi JSkinn.&amp;nbsp; The line of code you suggested below for the if .. else.. condition didn't work after all.&amp;nbsp; It only worked when I changed the and to an or but it didn't solve the problem if a user types in 0 or anything else.&amp;nbsp; It goes into a loop.&amp;nbsp; Do you perhaps have any other suggestions?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if isinstance(maxKmInterstate, (float, int)) and maxKmInterstate &amp;gt; 0:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
# import system modules
import arcpy, os, arcpy, string
from arcpy import env
arcpy.env.overwriteOutput = True

# get user supplied path, layers and fields
path = arcpy.GetParameterAsText(0) # path is H:\working\Findsites.gdb
cities = arcpy.GetParameterAsText(1) # cities Layer is cities Feature Layer cities.shp
cities2 = "cities2"
citiesL = "citiesL"
counties = arcpy.GetParameterAsText(2) # counties Layer is counties Feature Layer counties.shp
counties2 = "counties2"
countiesL ="countiesL"
interstates = arcpy.GetParameterAsText(3) # interstates Layer is Feature Layer interstates.shp
interstates2 = "interstates2"
interstatesL = "interstatesL"
crimeField = arcpy.GetParameterAsText(4) # crimeField is fieldname 'CRIME_INDE' SQL expression
crimeval = arcpy.GetParameterAsText(5) # Double 0.02
whereClause = "{0} &amp;lt;= {1}".format(arcpy.AddFieldDelimiters(citiesL, crimeField), crimeval)
universityField = arcpy.GetParameterAsText(6) # universityField is fieldname 'UNIVERSITY' SQL expression
universityval = arcpy.GetParameterAsText(7) # universityfieldindex is the UNIVERSITY field and is string integer 1
whereClause2 = "{0} = {1}".format(arcpy.AddFieldDelimiters(citiesL, universityField), universityval)
workforceField = arcpy.GetParameterAsText(8) # workforceField is fieldname 'AGE_18_64' SQL expression
workforceval = arcpy.GetParameterAsText(9) # Double and is 25000
whereClause3 = "{0} &amp;gt;= {1}".format(arcpy.AddFieldDelimiters(countiesL, workforceField), workforceval)
farmField = arcpy.GetParameterAsText(10) # farmField is fieldname 'NO_FARMS87' SQL expression
farmval = arcpy.GetParameterAsText(11) # Double integer is 500
whereClause4 = "{0} &amp;gt;= {1}".format(arcpy.AddFieldDelimiters(countiesL, farmField), farmval)
maxKmInterstate = arcpy.GetParameterAsText(12) # interstate WITHIN_A_DISTANCE linear unit
nearestInterstate = arcpy.GetParameterAsText(13) # Near Table Analysis table generated
newFieldName = "DISTANCE"
citylist = arcpy.GetParameterAsText(14) # narrowed down cities list temporary and set to derived to hide
citylistL = "citylistL" # the temporary feature layer of the generated cityList feature class
outputLayer = arcpy.GetParameterAsText(15) # oot layer set to derived
outputTable = arcpy.GetParameterAsText(16) # output table

# make cities copy and cities feature layer and remove unnecessary fields
arcpy.CopyFeatures_management(cities, cities2)
arcpy.MakeFeatureLayer_management(cities2, citiesL)
arcpy.DeleteField_management(citiesL, ["POPULATION", "TOTAL_CRIM"])

# select only user chosen fields for cities whereClause
if crimeField == "CRIME_INDE" and universityField == "UNIVERSITY":
 arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause + " AND " + whereClause2)
 arcpy.AddMessage("Maximum crime index threshold and cities with universities selected")
elif crimeField == "CRIME_INDE" and universityField &amp;lt;&amp;gt; "UNIVERSITY":
 arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause)
 arcpy.AddMessage("Maximum crime index threshold selected")
 arcpy.DeleteField_management(citiesL, "UNIVERSITY")
 arcpy.CopyFeatures_management(citiesL, citylist)
elif crimeField &amp;lt;&amp;gt; "CRIME_INDE" and universityField == "UNIVERSITY":
 arcpy.SelectLayerByAttribute_management(citiesL, "NEW_SELECTION", whereClause2)
 arcpy.AddMessage("Cities with a university selected")
 arcpy.DeleteField_management(citiesL, "CRIME_INDE")
 arcpy.CopyFeatures_management(citiesL, citylist)
elif crimeField &amp;lt;&amp;gt; "CRIME_INDE" and universityField &amp;lt;&amp;gt; "UNIVERSITY":
 arcpy.AddMessage("No crime threshold or cities with universities selected")
 arcpy.DeleteField_management(citiesL, ["CRIME_INDE", "UNIVERSITY"])
 arcpy.CopyFeatures_management(citiesL, citylist)

# make counties feature layer and remove unnecessary fields
arcpy.CopyFeatures_management(counties, counties2)
arcpy.MakeFeatureLayer_management(counties2, countiesL)
arcpy.DeleteField_management(countiesL, ["AREA", "PERIMETER", "POP1990", "POP_SQMILE", "SQ_MILES", "GAVPRIMARY", "X", "Y", "X_1", "Y_1"])

# select only user chosen fields for counties whereClause
if workforceField == "AGE_18_64" and farmField == "NO_FARMS87":
 arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause3 + " AND " + whereClause4)
 arcpy.AddMessage("Minimum workforce and proximity to farms selected")
 arcpy.CopyFeatures_management(countiesL, "countylist")
elif workforceField == "AGE_18_64" and farmField &amp;lt;&amp;gt; "NO_FARMS87":
 arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause3)
 arcpy.AddMessage("Minimum workforce selected")
 arcpy.DeleteField_management(countiesL, "NO_FARMS87")
 arcpy.CopyFeatures_management(countiesL, "countylist")
elif workforceField &amp;lt;&amp;gt; "AGE_18_64" and farmField == "NO_FARMS87":
 arcpy.SelectLayerByAttribute_management(countiesL, "NEW_SELECTION", whereClause4)
 arcpy.AddMessage("Proximity to farms selected")
 arcpy.DeleteField_management(countiesL, "AGE_18_64")
 arcpy.CopyFeatures_management(countiesL, "countylist")
elif workforceField &amp;lt;&amp;gt; "AGE_18_64" and farmField &amp;lt;&amp;gt; "NO_FARMS87":
 arcpy.AddMessage("No minimun workforce or proximity to farms selected")
 arcpy.DeleteField_management(countiesL, ["AGE_18_64", "NO_FARMS87"])
 arcpy.CopyFeatures_management(countiesL, "countylist")
 
# from selection above select cities intersecting counties
arcpy.SelectLayerByLocation_management(citiesL, "INTERSECT", "countylist", "", "SUBSET_SELECTION")

# create a city list if maximum distance to interstates selected
if isinstance(maxKmInterstate, (float,int)) or maxKmInterstate &amp;gt; 0: 
 arcpy.AddMessage("Maximum distance to interstates selected")
 # copy interstates feature class so original is unaffected
 arcpy.CopyFeatures_management(interstates, interstates2)
 # make interstates feature layer
 arcpy.MakeFeatureLayer_management(interstates2, interstatesL)
 # further select cities within maximum interstate distance
 arcpy.SelectLayerByLocation_management(citiesL, "WITHIN_A_DISTANCE", interstatesL, maxKmInterstate, "SUBSET_SELECTION")
 # copy to citylist
 arcpy.CopyFeatures_management(citiesL, citylist)
 # create a feature layer from new citylist 
 arcpy.MakeFeatureLayer_management(citylist, citylistL)
 # Generate NearTable_analysis to find closest interstate distance
 arcpy.GenerateNearTable_analysis(citylistL, interstates, nearestInterstate, maxKmInterstate)
 # add new DISTANCE field as short integer 
 arcpy.AddField_management(nearestInterstate, newFieldName, "SHORT")
 #Calculates the new DISTANCE field by dividing metres by 1000
 arcpy.CalculateField_management(nearestInterstate, newFieldName, "!NEAR_DIST! / 1000", "PYTHON", "")
 # join city list to nearest interstate table
 arcpy.JoinField_management(citylistL, "FID", nearestInterstate, "IN_FID", "DISTANCE")
 # spatially join the narrowed down city/road and counties layers remove unwanted fields and rename others
 arcpy.SpatialJoin_analysis(citylistL, countiesL, outputLayer, "#", "#", "")
else:
 arcpy.AddMessage("No maximum distance to interstates selected")
 arcpy.CopyFeatures_management(citiesL, citylist)
 arcpy.MakeFeatureLayer_management(citylist, citylistL) 
 arcpy.SpatialJoin_analysis(citylistL, countiesL, outputLayer, "#", "#", "")
 
arcpy.AddMessage("Creating City table based on selections.......") 
 
# Set data path
intable = outputLayer

# Get the fields from the input
fields= arcpy.ListFields(intable)

# Create a fieldinfo object
fieldinfo = arcpy.FieldInfo()

# Iterate through the fields and set them to fieldinfo
for field in fields:
&amp;nbsp;&amp;nbsp;&amp;nbsp; if field.name == "NAME":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "CITYNM", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "CRIME_INDE":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "CRIMEINDX", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "UNIVERSITY":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "DISTANCE":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "INTRSTkm", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NAME_1":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "COUNTYNM", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "AGE_18_64":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "WORKFRCE", "VISIBLE", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "NO_FARMS87":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, "FARMS", "VISIBLE", "")&amp;nbsp; 
 #elif field.name == "Join_Count":
&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "TARGET_FID":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "OBJECTID":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Leng":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Le_1":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "Shape_Area":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif field.name == "ID":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldinfo.addField(field.name, field.name, "HIDDEN", "")
 
# The created city view layer will have fields as set in fieldinfo object
arcpy.MakeTableView_management(intable, "CityView", "", "", fieldinfo)

# To persist the layer on disk make a copy of the view
arcpy.CopyRows_management("CityView", outputTable)

arcpy.AddMessage("Your City Table file has been created") 
&amp;nbsp; 
print arcpy.GetMessages()
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 04:49:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685264#M53062</guid>
      <dc:creator>ScottMacDonald</dc:creator>
      <dc:date>2021-12-12T04:49:42Z</dc:date>
    </item>
    <item>
      <title>Re: if else loop problem</title>
      <link>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685265#M53063</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm not sure it goes into a loop with an "if/else" statement.&amp;nbsp; Infinite loops are usually created from "while" statements.&amp;nbsp; I would recommend adding some more arcpy.AddMessage commands to see exactly what is going on.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Apr 2013 13:17:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685265#M53063</guid>
      <dc:creator>JakeSkinner</dc:creator>
      <dc:date>2013-04-26T13:17:55Z</dc:date>
    </item>
    <item>
      <title>Re: if else loop problem</title>
      <link>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685266#M53064</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Scott:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Warning: your code has mixed indents, some tabs, some spaces. It's best to use one or the other, I like spaces.&amp;nbsp; This can lead to unexpected results as your indents may not work exactly as intended.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Most Python IDEs have a setting to convert automatically to spaces for you.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Apr 2013 16:08:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/if-else-loop-problem/m-p/685266#M53064</guid>
      <dc:creator>curtvprice</dc:creator>
      <dc:date>2013-04-26T16:08:06Z</dc:date>
    </item>
  </channel>
</rss>

