0

I have the following code:

#gets the filename from the user
b= input("Please enter a file name to be opened: ")
a = (b+".txt")
#main data storage and other boolean options
data =[]

result1 =[]
on = True 
#File reading in main body with try and except functionality.
try:
    check = open(a, 'r')
    line =check.readlines()
    for items in line:
        breakup= items.split()
        number, salary, position, first, oname1, oname2, last = breakup
        data.append(tuple([last, first + ' ' + oname1 + ' ' + oname2, number, position, salary]))
except IOError as e :
        print("Failed to open", fileName)

#Employee creation function, takes the line and stores it in the correct position.
def employee_creation():

    result = [((item[0] +", "+ item[1]).ljust(30), int(item[2]), item[3].ljust(15), int(item[4])) for item in data]
    for items in result:
            result1.append((items[0][0:30], format(items[1], "^5d"), items[2][0:15], "£"+format((items[3]),"<8d")))

    return(result)

employee_creation()
print(result)
while on == True:
    print("Please select what option you would like to use to search for employees:")
    option = int(input("""
          1 - Salary (X to X)
          2 - Job Titlle
          3 - Name, Payroll Number
                    :"""))

    if option == 1:
        start = input("What range would you like to start from: ")
        end = input("What is the maximum range you would like :")
        for items in result:
            print(items[3])
            if items[3]>start and items[3]<end:
                print(items)
            else:
                print("No employees with this information can be found")
                on= False
    else:
        on= False

However my def employee_creation() doesn't actually return result. I need it to make it a global variable so that I can use it to launch personal querys against the data.

Can anyone see why its not working?

1 Answer 1

2

No need to use the evil global variables. You forgot to store the result of your function to another variable.

def employee_creation():

    result = [((item[0] +", "+ item[1]).ljust(30), int(item[2]), item[3].ljust(15), int(item[4])) for item in data]
    for items in result:
            result1.append((items[0][0:30], format(items[1], "^5d"), items[2][0:15], "£"+format((items[3]),"<8d")))

    return result # no need for () here

result = employee_creation() # store the return value of your function
print(result)
Sign up to request clarification or add additional context in comments.

1 Comment

Brilliant thank you. Rather simple forgetting to do that. Suppose your brain melts doing programming/scripting for 12 hours straight haha.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.