Imagem digital de uma cobra, na cor preta e amarela, em cima de um livro, na frente de uma estante de livros.

5 Desafios com Strings para iniciantes em Python

Francisco Foz
5 min readJun 13, 2023

algumas semanas atrás, postei um texto trazendo alguns desafios em Python utilizando números.

Para continuar praticando programação, os desafios de hoje serão com Strings.

Então, no texto de hoje, compartilho 5 desafios com Strings.

Bora lá?!

Gif de um desenho de uma cobra, na cor preta, girando e formando o símbolo do infinito.
Fonte do gif

Sumário

1 — Ordenar Títulos

2 — Palavra mais longa

3 — Contar palavras

4 — Processar registro MARC

5 — Gerar código de entrada

Considerações finais

1 — Ordenar Títulos

Desafio:

O desafio consiste em ordenar uma lista de títulos de livros em ordem alfabética e deixá-los separados por vírgula.

A lista de títulos é fornecida como uma string chamada “titulos”, onde cada título está em uma nova linha.

Segue exemplo de lista:

titulos = """O Senhor dos Anéis
Harry Potter e a Pedra Filosofal
1984
O Lobo da Estepe
Cem Anos de Solidão
A Metamorfose
A Revolução dos Bichos
Crime e Castigo
Macunaíma"""

Dica: Confira o .join(), .split() e o sorted()

2 — Palavra mais longa

Desafio:

O desafio consiste em criar uma função que irá receber um texto (string) e retornará a palavra mais longa.

Segue exemplo de texto:

O Louco do Python

No meu computador,

o Python habita

e com ele eu desvendo

a lógica infinita

Nas linhas de código

encontro o meu ser

e através da sintaxe

posso me conhecer

As funções e métodos

são como os versos

que em harmonia se unem

formando universos

E como Pessoa disse

somos todos um pouco

no Python me encontro

e me torno outro louco

Louco pela programação

e por tudo que ela traz

em um mundo digital

onde a criatividade jaz

Então que o Python

seja minha poesia

e em cada linha de código

eu encontre a sabedoria.

Autoria: CHATGPT

Chat GPT estava inspirado nesse dia.

Dica: Verifique o argumento “key” do sorted()

3 — Contar palavras

Desafio:

Você trabalha em uma biblioteca e recebeu uma lista de títulos de artigos. Sua tarefa é criar um programa que conte quantas vezes uma determinada palavra aparece nos títulos dos artigos.

artigos = [
'RecurrentGPT: Interactive Generation of (Arbitrarily) Long Text',
'VideoLLM: Modeling Video Sequence with Large Language Models',
'Watermarking Text Data on Large Language Models for Dataset Copyright Protection',
'InheritSumm: A General, Versatile and Compact Summarizer by Distilling from GPT',
'Can Large Language Models emulate an inductive Thematic Analysis of semi-structured interviews? An exploration and provocation on the limits of the approach and the model',
'GPT-SW3: An Autoregressive Language Model for the Nordic Languages',
'The Emergence of Economic Rationality of GPT',
'Can We Edit Factual Knowledge by In-Context Learning?',
'G3Detector: General GPT-Generated Text Detector',
'GPT Paternity Test: GPT Generated Text Detection with GPT Genetic Inheritance'
]

Dica: Confira o .count(), .split() e .lower() ou .upper().

4 — Processar registro MARC

Desafio:

Escreva um programa que leia o texto fornecido e exiba as seguintes informações:

O título do livro: o campo MARC que começa com “245”.

O sobrenome e nome do autor: o campo MARC que começa com “100”.

O sobrenome e nome do tradutor: o campo MARC que começa com “700”.

O ano de publicação: o campo MARC que começa com “260”.

O número de páginas: o campo MARC que começa com “300”.

Texto fornecido:

LDR 00000 2200000 4500
001 0123456789
008 210524s2023 xx 000 0 eng d
020 ## $a9780140449136 (paperback)
100 1# $aDostoiévski, Fyodor,$d1821–1881.
245 10$aCrime e Castigo /$cFyodor Dostoiévski ; traduzido por Constance Garnett.
250 ## $aEdição especial.
260 ## $aSão Paulo :$bEditora Exemplo,$c2023.
300 ## $a500 páginas ;$c21 cm.
336 ## $atext$btxt$2rdacontent
337 ## $aunmediated$bn$2rdamedia
338 ## $avolume$bnc$2rdacarrier
500 ## $aInclui notas de rodapé.
520 ## $a"Crime e Castigo" é um dos romances mais influentes da literatura mundial. Ele explora a mente atormentada de Raskólnikov, um jovem estudante que comete um assassinato e lida com as consequências emocionais e morais de seus atos.
650 #0 $aRomance russo.
650 #0 $aAssassinato$xFicção.
700 1# $aGarnett, Constance,$d1861–1946,$etr.
710 2# $aEditora Exemplo.

Dica: Confira o str.find() e o “fatiamento de listas/strings

Para saber mais sobre MARC 21:

“MARC é a sigla para Machine Readable Cataloging que quer dizer catalogação legível por computador. Para o computador processar os dados catalogados é necessário colocá-los em forma legível pela máquina, identificando os elementos de forma clara, para que possa ler e interpretar os dados de um registro catalográfico.” — Wikipedia

Ela foi criada por Henriette Avram.

Foto, em preto e branco de Henriette Avram (uma mulher branca e loira) segurando um livro, com um gato preto na capa, vestindo um terno preto e branco, ao lado de uma mulher (branca) de vestido preto de bolinhas brancas e de um homem (branco) de terno e gravata em tons escuros.
Fonte da imagem

Henriette Avram foi uma uma Cientista da Computação, criou o formato MARC no final dos anos 60 na Biblioteca do Congresso dos Estados Unidos da América.

“Ela foi uma verdadeira pioneira da Ciência da Computação.” — Ole Olesen Bagneux

5 — Gerar código de entrada

Desafio:

Escreva um programa que gere um código de entrada de um documento, a partir do seu título, autoria, ano de publicação e data/hora de entrada atuais.

O código deverá conter todas as letras em maiúsculas e não deverá conter caracteres especiais e espaços em branco.

O título deverá ser retornado de forma completa.

A autoria deverá ser retornada apenas os 3 primeiros caracteres.

Os quatro elementos do código (título, autoria, ano de publicação e data/hora de chegada) deverão ser separados por “_”.

Utilize os módulos datetime e unicodedata.

Dica: Para excluir a acentuação das palavras sem bibliotecas externas, utilize o unicodedata.normalize(), verifique o .encode() e o .decode().

Esse texto poderá te ajudar:

Normalização Unicode em Python

Além disso, não deixe de verificar o .maketrans(), o .translate(), .replace() e o .strftime() do datetime.

Considerações finais

Para verificar os resultados, você pode conferir esse repositório:

Agora, me diga:

Qual outro problema/desafio com strings você já passou e como resolveu?

Deixe nos comentários e vamos compartilhar conhecimento.

Se você tem algum outro desafio, faça um pull request no repositório e compartilhe.

Se você chegou até aqui e curtiu, dê palmas, compartilhe e se inscreva para me acompanhar.

Ainda há muito a se explorar…

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Francisco Foz
Francisco Foz

Written by Francisco Foz

Bibliotecário | Analista de dados | Disseminando informações para produzir conhecimento.

No responses yet

Write a response