Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Refatorar o código Python para melhorar a modularidade e adicionar funcionalidades.
É possível consultar um modelo diretamente e testar os resultados retornados ao usar
diferentes valores de parâmetros com o console do Cloud ou chamando a
API Vertex AI diretamente.
Tenho um programa Python que gera nomes aleatórios e realiza diferentes tipos de processamento de dados com base nas seleções do usuário em um menu no console. Você pode me ajudar a refatorar o código dividindo a função data_processor e removendo-a completamente? Além disso, adicione funcionalidade para nomes de siglas invertidas e mova a recuperação de entrada do usuário para uma função separada. O guard principal precisa conter apenas uma chamada de função.
importrandomfromfakerimportFakerdeftransform_data(data):upper_names=[name.upper()fornameindata]lower_names=[name.lower()fornameindata]reversed_names=[name[::-1]fornameindata]acronym_names=["".join([word[0]forwordinname.split()])fornameindata]returnupper_names,lower_names,reversed_names,acronym_namesdefcalculate_statistics(data):name_lengths=[len(name)fornameindata]average_length=sum(name_lengths)/len(name_lengths)max_length=max(name_lengths)min_length=min(name_lengths)returnaverage_length,max_length,min_lengthdefgroup_by_first_letter(data):grouped_data={}fornameindata:grouped_data.setdefault(name[0],[]).append(name)returngrouped_datadefanalyze_name_frequencies(data):name_counts={}fornameindata:name_counts[name]=name_counts.get(name,0)+1returnname_countsdefdisplay_menu():print("Menu:")print("1. Display original names")print("2. Display uppercased names")print("3. Display lowercased names")print("4. Display reversed names")print("5. Display acronym names")print("6. Display name statistics")print("7. Display names grouped by first letter")print("8. Display name frequencies")print("9. Exit")choice=input("Enter your choice: ")returnchoiceif__name__=="__main__":# Generate random namesfake=Faker()names=[fake.name()for_inrange(10)]upper_names,lower_names,reversed_names,acronym_names=transform_data(names)avg_length,max_length,min_length=calculate_statistics(names)grouped_names=group_by_first_letter(names)name_frequencies=analyze_name_frequencies(names)processed_data={"original_names":names,"upper_names":upper_names,"lower_names":lower_names,"reversed_names":reversed_names,"acronym_names":acronym_names,"average_length":avg_length,"max_length":max_length,"min_length":min_length,"grouped_names":grouped_names,"name_frequencies":name_frequencies}whileTrue:choice=display_menu()ifchoice=="1":print(processed_data["original_names"])elifchoice=="2":print(processed_data["upper_names"])elifchoice=="3":print(processed_data["lower_names"])elifchoice=="4":print(processed_data["reversed_names"])elifchoice=="5":print(processed_data["acronym_names"])elifchoice=="6":print(f"Average name length: {processed_data['average_length']}")print(f"Maximum name length: {processed_data['max_length']}")print(f"Minimum name length: {processed_data['min_length']}")elifchoice=="7":forletter,namesinprocessed_data["grouped_names"].items():print(f"Names starting with {letter}: {names}")elifchoice=="8":forname,countinprocessed_data["name_frequencies"].items():print(f"{name}: {count}")elifchoice=="9":breakelse:print("Invalid choice")
Resposta
importrandomfromfakerimportFakerdefgenerate_names(num_names=10):fake=Faker()return[fake.name()for_inrange(num_names)]deftransform_names(names):upper_names=[name.upper()fornameinnames]lower_names=[name.lower()fornameinnames]reversed_names=[name[::-1]fornameinnames]acronym_names=["".join(word[0]forwordinname.split())fornameinnames]reversed_acronym_names=["".join(word[0]forwordinname.split())[::-1]fornameinnames]#Added reversed acronymreturnupper_names,lower_names,reversed_names,acronym_names,reversed_acronym_namesdefcalculate_statistics(names):name_lengths=[len(name)fornameinnames]average_length=sum(name_lengths)/len(name_lengths)ifname_lengthselse0max_length=max(name_lengths)ifname_lengthselse0min_length=min(name_lengths)ifname_lengthselse0returnaverage_length,max_length,min_lengthdefgroup_by_first_letter(names):grouped_data={}fornameinnames:grouped_data.setdefault(name[0],[]).append(name)returngrouped_datadefanalyze_name_frequencies(names):name_counts={}fornameinnames:name_counts[name]=name_counts.get(name,0)+1returnname_countsdefget_user_input():choice=input("Enter your choice: ")returnchoicedefdisplay_menu():print("Menu:")print("1. Display original names")print("2. Display uppercased names")print("3. Display lowercased names")print("4. Display reversed names")print("5. Display acronym names")print("6. Display reversed acronym names")#Added menu optionprint("7. Display name statistics")print("8. Display names grouped by first letter")print("9. Display name frequencies")print("10. Exit")returnget_user_input()defmain():names=generate_names()upper_names,lower_names,reversed_names,acronym_names,reversed_acronym_names=transform_names(names)avg_length,max_length,min_length=calculate_statistics(names)grouped_names=group_by_first_letter(names)name_frequencies=analyze_name_frequencies(names)processed_data={"original_names":names,"upper_names":upper_names,"lower_names":lower_names,"reversed_names":reversed_names,"acronym_names":acronym_names,"reversed_acronym_names":reversed_acronym_names,"average_length":avg_length,"max_length":max_length,"min_length":min_length,"grouped_names":grouped_names,"name_frequencies":name_frequencies}whileTrue:choice=display_menu()try:choice=int(choice)ifchoice==1:print(processed_data["original_names"])elifchoice==2:print(processed_data["upper_names"])elifchoice==3:print(processed_data["lower_names"])elifchoice==4:print(processed_data["reversed_names"])elifchoice==5:print(processed_data["acronym_names"])elifchoice==6:print(processed_data["reversed_acronym_names"])elifchoice==7:print(f"Average name length: {processed_data['average_length']}")print(f"Maximum name length: {processed_data['max_length']}")print(f"Minimum name length: {processed_data['min_length']}")elifchoice==8:forletter,namesinprocessed_data["grouped_names"].items():print(f"Names starting with {letter}: {names}")elifchoice==9:forname,countinprocessed_data["name_frequencies"].items():print(f"{name}: {count}")elifchoice==10:breakelse:print("Invalid choice")exceptValueError:print("Invalid input. Please enter a number.")if__name__=="__main__":main()
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-02-14 UTC."],[],[]]