Hello and welcome to our community! Is this your first visit?
Enjoy an ad free experience by logging in. Not a member yet? Register.

# Thread: Homework Help: Python Function

1. ## Homework Help: Python Function

As the title says, I need help with my homework. So I have to create a program that will: open a file that consists of different sets of three numbers, and then output the smallest number for each line. (Note: I'm not allowed to use the min() function!!)

6,3,5
4,4,8
3,7,2
1,8,9
9,0,6

The program would output:

3
4
2
1
0

I was wondering if anyone could check my code and see what's wrong with it, because it doesn't seem to be getting the smallest number?
Code:
```def smallest(*lowest):
small_numbers = [lowest]
small_numbers.sort()

def main():
input_file = open("datanums.txt", "r")
smallest(number_file)
for i in range(len(number_file)):
print number_file[i][0]
main()```

• Hello coding_potato,
I rewrote your function as a generator that takes a filename as input and combined both functions into one. The generator returns a generator object that you can then loop over. Hope it helps.

def smallest(filename):
""" Generator function to determine smallest number in a file line"""
input_file = open(filename, "r")
lst = i.strip().split(',')
x=lst[0]
# compare each integer to determine the smallest
for i in lst:
if i < x:
x = i
yield x

if __name__ == '__main__':

for i in smallest('datanums.txt'):
print i

• Hello coding_potato,
I rewrote your function as a generator that takes a filename as input and combined both functions into one. The generator returns a generator object that you can then loop over. Hope it helps.

def smallest(filename):
""" Generator function to determine smallest number in a file line"""
input_file = open(filename, "r")
lst = i.strip().split(',')
x=lst[0]
# compare each integer to determine the smallest
for i in lst:
if i < x:
x = i
yield x

if __name__ == '__main__':

for i in smallest('datanums.txt'):
print i

•