X is not defined

Question:

I’m going through basic pythonprinciples problems, and one of them lists the instructions as:

Write a function named make_day_string that takes an integer named day and returns the string "it is day X of the month" where X is the value of the day parameter.

For example, calling make_day_string(3) should return "it is day 3 of the month".

Remember that to concatenate a string with an integer, you must cast the integer to a string.

Note that the function should return a value. It should not print anything.

My answer is:

def make_day_string(day):
    day == str(X)
    return ("it is day " + X + " of the month")
    
print(make_day_string(3)

However, the terminal says

NameError: name 'X' is not defined

I’m confused on how to properly define X in this context, if it’s not day == str(X)

Asked By: daltonduel

||

Answers:

There are a couple of problems with your code. X isn’t defined because you aren’t ever passing it in as a value when you call the function. You never say X = someValue before you try to assign X’s value (which doesn’t exist) to a different variable.

Also, you wrote day == str(X) instead of day = str(X).The former is a comparison operation, while the latter is an assignment statement. You are also missing a closing parenthesis at the end of your print statement.

Here’s one way that you could modify your code to return the dayString;

def make_day_string(X):
    dayStr = str(X)
    return ("it is day " + dayStr  + " of the month")
    
print(make_day_string(3))

Since we pass X into the function, it has a value and is defined.

Also, it might be easier if you used an fstring instead. They allow you to add variables into a string, so you can just do this instead:

def make_day_string(day):
    return (f"it is day {day} of the month")

print(make_day_string(3))
Answered By: Maria Swartz
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.