Jan-09-2021, 08:45 PM
(This post was last modified: Jan-09-2021, 08:47 PM by project_science.)
Hi,
I'm creating a simple calculator. I'm having trouble with unpacking a tuple. My IDE returns an error saying,
This appears to occur from line 22. I have more to do after, but this is holding me up.
The odd thing is that when I print the vars on lines 25-28, they appear to have been (re)assigned the tuple's correct values. Lines 39-41 similarly work, except they aren't returned as a tuple in line 51 as I expected.
Any ideas what I'm doing wrong?
I'm creating a simple calculator. I'm having trouble with unpacking a tuple. My IDE returns an error saying,
Quote:(num1, num2, den1, den2) = numbers #unpacking does NOT work
ValueError: not enough values to unpack (expected 4, got 0)
This appears to occur from line 22. I have more to do after, but this is holding me up.
The odd thing is that when I print the vars on lines 25-28, they appear to have been (re)assigned the tuple's correct values. Lines 39-41 similarly work, except they aren't returned as a tuple in line 51 as I expected.
Any ideas what I'm doing wrong?
"""
Takes in 2 fractions, and performs various operations on it:
- add
- subtract
- multiply
- divide
- Then simplify the fraction for its final form
"""
"""Get integers from user"""
def input_nums():
num1 = int(input('enter num1: '))
num2 = int(input('enter num2: '))
den1 = int(input('enter denominator1: '))
den2 = int(input('enter denominator2: '))
return (num1, num2, den1, den2) # returns vars in tuple
def mixed_fraction(*numbers): # unpack tuple
print(numbers)
print("length of tuple 'numbers' = ", len(numbers)) # correctly shows 4 elements
(num1, num2, den1, den2) = numbers #unpacking does NOT work
# but here, these work, as they received indexes, eg. num1 = numbers[0]
print("num1 = ", num1)
print("num2 = ", num2)
print("den1 = ", den1)
print("den2 = ", den2)
#get common denominator
common_den = den1 * den2 # numbers[2] * numbers[3]
#cross multiply
numA = num1 * den2 # numbers[0] * numbers[3]
numB = num2 * den1 # numbers[1] * numbers[2]
# test to make sure the vars are assigned correctly
print("numA = ", numA)
print("numB = ", numB)
print("common_den = ", common_den)
return (numA, numB, common_den) # returns vars in tuple
numbers = input_nums() # tuple 'numbers' stores vars num1, num2 as numbers[0] and number[1]
mixed_fraction(*numbers) # pass tuple 'numbers' into function via unpacking. Cleaner than passing entire tuple 'numbers' directly
# next 2 lines currently NOT working, as no values are being returned here
mixed_vars = mixed_fraction()
print(mixed_vars)
