My assignment requires 3 functions. The 1st takes several inputs and then returns a string. The 2nd and 3rd functions pull information from the 1st and return their own strings. The problem I'm having is that when I call the 2nd and 3rd functions in the main(), I'm being prompted for the inputs in the 1st function again. Otherwise, the 2nd and 3rd functions eventually produce the output I'm looking for.
I'm somewhat limited in how I can approach writing the functions due to the assignment criteria, so apologies if it's a bit roundabout. I'm pretty sure I'm missing the forest for the trees here, any help would be greatly appreciated!
def get_book_info():
input_book_title = str(input("enter book title: "))
format_title = input_book_title.strip()
format_title = format_title.title()
input_book_isbn = str(input("enter book ISBN: "))
format_isbn = input_book_isbn.strip()
input_author_name = str(input("enter author name: "))
format_author = input_author_name.strip()
format_author = format_author.title()
input_publisher = str(input("Enter publisher: "))
format_publisher = input_publisher.strip()
format_publisher = format_publisher.title()
input_year_published = int(input("enter year published: "))
input_price = float(input("enter book price: "))
info = f"{format_title}/{format_isbn}/{format_author}/{format_publisher}/{input_year_published}/{input_price:.2f}"
return info
def to_csv_format():
book_info_string = get_book_info()
book_csv = book_info_string.replace("/", ", ")
return book_csv
def to_json_format():
book_info_string = get_book_info()
# find title
separator = book_info_string.find("/")
json_title = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find ISBN
separator = book_info_string.find("/")
json_isbn = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find author
separator = book_info_string.find("/")
json_author = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find publisher
separator = book_info_string.find("/")
json_publisher = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find year published
separator = book_info_string.find("/")
json_year = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find price
json_price = book_info_string
book_json = f'"title":"{json_title}","isbn":"{json_isbn}",author_name":"{json_author}","publisher":"{json_publisher}","year_published:":"{json_year}","price":"{json_price}"'
return book_json
def main():
get_book_info()
print("----------------")
book_csv = to_csv_format()
print(book_csv)
print("----------------")
book_json = to_json_format()
print(book_json)
pass
main()
CodePudding user response:
Every time you call get_book_info()
you will prompted to enter your data. You have to call it only once in the main, store the result in a variable and pass this variable to your other functions.
def get_book_info():
input_book_title = str(input("enter book title: "))
format_title = input_book_title.strip()
format_title = format_title.title()
input_book_isbn = str(input("enter book ISBN: "))
format_isbn = input_book_isbn.strip()
input_author_name = str(input("enter author name: "))
format_author = input_author_name.strip()
format_author = format_author.title()
input_publisher = str(input("Enter publisher: "))
format_publisher = input_publisher.strip()
format_publisher = format_publisher.title()
input_year_published = int(input("enter year published: "))
input_price = float(input("enter book price: "))
info = f"{format_title}/{format_isbn}/{format_author}/{format_publisher}/{input_year_published}/{input_price:.2f}"
return info
def to_csv_format (book_info_string):
book_csv = book_info_string.replace("/", ", ")
return book_csv
def to_json_format (book_info_string):
# find title
separator = book_info_string.find("/")
json_title = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find ISBN
separator = book_info_string.find("/")
json_isbn = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find author
separator = book_info_string.find("/")
json_author = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find publisher
separator = book_info_string.find("/")
json_publisher = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find year published
separator = book_info_string.find("/")
json_year = book_info_string[0:separator]
book_info_string = book_info_string[separator 1:]
# find price
json_price = book_info_string
book_json = f'"title":"{json_title}","isbn":"{json_isbn}",author_name":"{json_author}","publisher":"{json_publisher}","year_published:":"{json_year}","price":"{json_price}"'
return book_json
def main():
info = get_book_info()
print("----------------")
book_csv = to_csv_format (info)
print(book_csv)
print("----------------")
book_json = to_json_format (info)
print(book_json)
pass
main()