我正在制作一个计划,该计划的重点是:
计算调查中包含的住户数,并以三列格式打印。
计算家庭平均收入,并列出每个家庭的识别号码和收入超过平均值。
确定收入低于2015年美国毗邻州贫困水平的家庭百分比。使用给定的公式计算贫困水平收入。该公式位于 povertycalc 函数内,该函数分配了名为 povertyLevel 的变量。
问题在于,我试图制作另一份低于贫困线的房屋清单的指数清单。
1042 12180.06 3
1062 13240.45 2
1327 19800.56 2
1483 22458.23 7
1900 17000.09 3
2112 18125 4
2345 15623 2
3210 3200 1
3600 39500 5
3601 11970 2
4724 8900 3
6217 45000.70 2
9280 6200 1
1000 31000 3
1200 36000 2
5601 51970 9
5724 66900 3
5217 10002.68 2
5280 70000 1
5000 100000 6
5200 25000.4 3
5230 120000 6
6641 85000 7
7000 45500 4
7100 56500 3
8110 110005.9 8
9101 67590.40 6
昨天我通过电子邮件发送给我的教授时,我被告知:
"您不能将其他列表的数据用作索引。"
我该怎么做才能提高效率?截至目前,该程序打印出所提供信息的三列(我将发布与该程序相关的TXT文件的链接)以及应该包含贫困线以下房屋列表的空白括号。 / p>
以下是与该程序相关的文件中的文字:
{{1}}
答案 0 :(得分:0)
首先,在您的代码段中,存在一些问题。
您可能会认为声明global
变量会将该变量设为该脚本的global
!但事实并非如此
您错过了对global
关键字的解释。
通过使用global
语句,您告诉python解释器您要访问/修改外部作用域中的变量,而不是将其分配给本地。
然而,global
语句的最小使用是一种很好的编程设计。
在代码片段indexKeep.append(HouseIncome.index(HouseIncome[-1]))
中,HouseIncome[-1]
提取列表的最后一个值。因此合并HouseIncome.index(HouseIncome[-1])
给出了最后一个元素的索引,你正在间接地做它。相反,您可以简单地找到len(HouseIncome) - 1
来获得相同的信息。但是你所指的HouseIncome
是你在顶部初始化的那个是空的。所以最终不会起作用。
我已经修改了你的程序了。但我没有测试过它。可能你想看看那个。
def main():
NumberofHouseholds = 0
HouseIncome = []
avgincome = 0
for idNumber, row in enumerate(open('program9.txt', 'r')): # While there are more records
words = row.split() # Split the records into substrings
acctNum = int(words[0]) # Convert first substring to integer
annualIncome = float(words[1]) # Convert second substring to float
members = int(words[2]) # Convert third substring to integer
print(acctNum, format(annualIncome, '.2f'), members, sep=' ')
if povertycalc(annualIncome, idNumber + 1):
HouseIncome.append(annualIncome)
NumberofHouseholds = NumberofHouseholds + 1
avgincome = (avgincome+annualIncome)/NumberofHouseholds
# Close the file.
print(avgincome)
print(HouseIncome)
def povertycalc(annualIncome, members):
povertyLevel = 15930.00 + 4160.00 * (members-2)
if annualIncome < povertyLevel:
return True
else: return False
# Call the main function.
main()