Try   HackMD

Python Challenge Answers

Challenges for 10-26-18 - python answers

# cumulative sum
x=[3,10,4,12,55]
cs=[0]*5

for i in range(0,len(x)):
    cs[i]=sum(x[0:(i+1)])

print(cs)


x=[3,10,4,12,55]
cs=list()

for i in range(0,len(x)):
    cs.append(sum(x[0:(i+1)]))

print(cs)

#how long to 5 5's
x=[5,3,2,5,5,1,2,5,3,5,1,5,1]

count=0
i=0

while count < 5:
    if x[i]==5:
        count+=1
    i+=1

print(i)




# answers for Lecture 11 extra practice
import pandas as pd

# 0 - calculate sum of female and male wages in wages.csv
wages=pandas.read_csv("wages.csv",header=0,sep=",")

femaleSum=0
maleSum=0

for i in range(0,len(wages),1):
    if wages.gender[i]=="female":
        femaleSum=femaleSum+wages.wage[i]
    else:
        maleSum=maleSum+wages.wage[i]

femaleSum
maleSum

sum(wages.gender=="female")
sum(wages.gender=="male")

wages.tail()






















# find runs
# load file
findRuns=pd.read_csv("findRuns.txt",header=None,sep="\t")

















# create a variable out that is currently undefined
out=pd.DataFrame(columns=['startIndex','runLength'])











# I will use this variable cur to hold onto the previous number in the vector;
# this is analagous to using findRuns[i-1]
cur=findRuns.iloc[0,0]
#cur=findRuns[i-1]
# this is a counter that I use to keep track of how long a run of repeated values is;
# if there are not repeated values than this count equals 1
count=1

# loop through each entry of our vector (except the 1st one, which we set to cur above)
for i in range(1,50,1):
  # test if the ith value in the vector findRuns equals the previous (stored in cur)
  if findRuns.iloc[i,0]==cur:
    # test whether count is 1 (we aren't in the middle of a run) or >1 (in the middle of a run)
    if count==1:
      # if the ith value in the vector equals the previous (stored in cur) and count is 1, we
      # are at the beginning of a run and we want to store this value (we temporarily store it in 'start')
      start=(i-1)
    
    # we add one to count because the run continued based on the ith value of findRuns being equal to
    # the previous (stored in cur)
    count=count+1
    # if the ith value in findRuns is not the same as the previous (stored in cur) we either are not in a run
    # or we are ending a run
  else:
    # if count is greater than 1 it means we were in a run and must be exiting one
    if count>1:
      # add a row to 'out' that will hold the starting positions in the first column and the length
      # of runs in the second column; this appends rows to out after finding and counting each run
      out.loc[len(out)]=[start,count]
      # reset count to 1 because we just exited a run
      count=1
  # remember cur holds the previous element in findRuns, so we need to update this after each time
  # we go through the for loop
  cur=findRuns.iloc[i,0]
cur
out