Home > Mobile >  Func A takes inputs and returns a str. Funcs B&C are supposed to use str A to create strs B&C, but i
Func A takes inputs and returns a str. Funcs B&C are supposed to use str A to create strs B&C, but i

Time:05-23

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()
  • Related