I want to understand functions and arguments better, I've read and this is my implementation of what I have read.
I have 3 small functions to illustrate my point.
User input collection, grading function and main.
def score(num1: int):
print("Please Enter Your Score: ")
num1 = int(input())
grade(num1)
def grade(num1: int):
if int(num1) in range(0,30):
print("Grade U")
if int(num1)in range(30,40):
print("Grade D")
if int(num1)in range(40,60):
print("Grade C")
if int(num1)in range(60,80):
print("Grade B")
if int(num1)>79:
print("Grade A")
def main():
print("Hi")
score(1)
If I run the main function without its argument (1), it results in an error looking for the argument. I know that I declared in the function that it has a parameter (as i want this as a return value) but how would I go about calling the score function without its argument??
E.G
def main()
print("hi")
score()
I imagine that functions are called without parameters and the arguments are passed into the parameters from the function definition (via user input)
Can someone provide an example as to how I could do this without needing the dummy variable (1) in the calling of the score function?
CodePudding user response:
Here's one way I would do it:
def score():
print("Please Enter Your Score: ")
num1 = int(input())
grade(num1)
def grade(num1: int):
if 0 <= num1 < 30:
print("Grade U")
elif 30 <= num1 < 40:
print("Grade D")
elif 40 <= num1 < 60:
print("Grade C")
elif 60 <= num1 < 80:
print("Grade B")
elif num1 >= 80:
print("Grade A")
def main():
print("Hi")
score()
if __name__ == '__main__':
main()
If you want to still be able to pass a parameter into the score function, like score(1)
, then you can instead assign an optional parameter to the function. Then, only read user input if num1
is not passed in to the score function.
def score(num1=None):
if num1 is None:
print("Please Enter Your Score: ")
num1 = int(input())
grade(num1)
Usage:
def main():
print("Hi")
score(1)