Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Refactoriser du code Python pour gagner en modularité et ajouter des fonctionnalités
Vous pouvez interroger un modèle directement et tester les résultats renvoyés lors de l'utilisation de différentes valeurs de paramètre en utilisant la console Cloud ou en appelant directement l'API Vertex AI.
J'ai un programme Python qui génère des noms aléatoires et effectue différents types de traitement de données, en fonction des sélections de l'utilisateur dans un menu de la console. Pouvez-vous m'aider à refactoriser le code en scindant la fonction data_processor et en la supprimant complètement ? Veuillez également ajouter une fonctionnalité pour les noms d'acronymes inversés, et déplacer la récupération des entrées utilisateur vers une fonction distincte. La protection principale ne doit contenir qu'un seul appel de fonction.
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")
Réponse
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()
Modèle :
gemini-1.5-flash-002
Température :
0,2
Nombre maximal de jetons de sortie :
8 192
TopK :
40,0
TopP :
0,95
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/02/14 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/02/14 (UTC)."],[],[]]