# Objective:
# Develop a Python-based Madlib based on a song of your choice. The program should collect at least 8 different pieces of information from the user and incorporate them into the song using named arguments. The goal is to practice using functions, user input, and string manipulation in Python.
# Important Note:
# Choose any song you like for your madlib, but remember, no Rickrolling! Be creative and respectful in your song choice.
# Task:
# Select a Song: Choose a song that is well-known and suitable for a classroom setting. Avoid any song with inappropriate or offensive content.
# Identify Variables: Determine at least 8 different variables that the user will provide to customize the song. These could include names, adjectives, nouns, places, etc.
# Write the Function:
# Define a function named custom_song that takes at least 8 parameters corresponding to the variables you've identified.
# Use f-strings to incorporate these parameters into the song's lyrics.
# Ensure the function prints the customized song lyrics.
# Collect User Input:
# Write code to collect user input for each of the 8 variables.
# Use clear and descriptive prompts to guide the user.
# Call the Function:
# Call the custom_song function with the user inputs as named arguments.
# Ensure the order of arguments matches the parameters in your function definition
# Song: There's a Great Big Beautiful Tomorrow
# Songwriter: Rex Allen
# Used In: Carousel of Progress
# There's a great, big, beautiful tomorrow
# Shining at the end of every day
# There's a great, big, beautiful tomorrow
# And tomorrow's just a dream away
# Man has a dream and that's the start
# He follows his dream with mind and heart
# And when it becomes a reality
# It's a dream come true for you and me
# So there's a great, big, beautiful tomorrow
# Shining at the end of every day
# There's a great, big, beautiful tomorrow
# Just a dream away
# Modified Song
# There's a (variable F - adjective), (variable G - adjective), (variable H - adjective) (variable A - noun)
# Shining at the end of every (variable B - noun)
# There's a (variable F - adjective), (variable G - adjective), (variable H - adjective) (variable A - noun)
# And (variable A - noun)'s just a (variable C - noun) away
# Man has a (variable C - noun) and that's the start
# He follows his (variable C - noun) with (variable D - noun) and (variable E - noun)
# And when it becomes a reality
# It's a (variable C - noun) come true for you and me
# So there's a (variable F - adjective), (variable G - adjective), (variable H - adjective) (variable A - noun)
# Shining at the end of every (variable B - noun)
# There's a (variable F - adjective), (variable G - adjective), (variable H - adjective) (variable A - noun)
# Just a (variable C - noun) away
def main():
var_a = input("Please enter a noun: ")
print()
var_b = input("Please enter another noun: ")
print()
var_c = input("Please enter another noun: ")
print()
var_d = input("Please enter another noun: ")
print()
var_e = input("Please enter another noun: ")
print()
var_f = input("Please enter an adjective: ")
print()
var_g = input("Please enter another adjective: ")
print()
var_h = input("Please enter one more adjective: ")
def custom_song(var_a, var_b, var_c, var_d, var_e, var_f, var_g, var_h):
print(f"There's a {var_f}, {var_g}, {var_h} {var_a}")
print(f"Shining at the end of every {var_b}")
print(f"There's a {var_f}, {var_g}, {var_h} {var_a}")
print(f"And {var_a}'s just a {var_c} away.")
print()
print(f"Man has a {var_c} and that's the start")
print(f"He follows his {var_c} with {var_d} and {var_e}")
print(f"And when it becomes a reality")
print(f"It's a {var_c} come true for you and me")
print()
print(f"So there's a {var_f}, {var_g}, {var_h} {var_a}")
print(f"Shining at the end of every {var_b}")
print(f"There's a {var_f}, {var_g}, {var_h} {var_a}")
print(f"Just a {var_c} away!")
print()
print()
custom_song(var_a, var_b, var_c, var_d, var_e, var_f, var_g, var_h)
main()
# while I understand "varA, varB..." is not the most meaningful variable name,
# it seemed to be appropriate enough for this type of assignment, since
# otherwise it'd end up with "noun01, noun02..." etc, which wouldn't really be
# any more meaningful than how it is now. The only way I could see to make
# them more meaningful would be to include location, ie: verse, line
# so they would look like this: noun_v01_l03 or something similar, which might
# be more meaningful, but is also much longer. For the purposes of this
# assignment, varA, etc... is sufficient I think, but for longer, more complex
# programs, I would use the more detailed name that includes location information.
# forgot camel-back notation isn't used in this class, so I came back in and
# edited the variables to all be lowercase.
# go back later to modify variables to more meaningful name using original words