Esta aula tem como objetivo experimentar a criação e manipulação de objetos. Após a realização da prática, deverá ter sido adquirida uma noção básica dos seguintes conceitos:
Desenvolva um módulo com funções e procedimentos que permitam:
print_one_letter_per_line('HAL')
H
A
L
def print_one_letter_per_line(s):
i = 0
while i < len(s):
print(s[i])
i = i + 1
O módulo de um número complexo obtém-se fazendo a raiz quadrada da soma do quadrado da parte real com o quadrado da parte imaginária. Exemplo:
modulus(2 + 3j) ➝ 3,6
def modulus(c):
return (c.real ** 2 + c.imag ** 2) ** (1 / 2)
def print_one_letter_per_line_inverted(s):
i = len(s) - 1
while i >= 0:
print(s[i])
i = i - 1
O tipo cadeia de caracteres (str
) tem uma função que devolve verdadeiro caso todos os caracteres de uma cadeia de caracteres sejam maiúsculas — isupper()
.
def maiusculas(s):
return s.isupper()
No jogo do enforcado, o jogador tem de adivinhar uma palavra que desconhece perguntado em cada jogada se uma dada letra existe na palavra. Sempre que a letra pedida existe na palavra é mostrada a palavra com todas as letras que pedidas que estavam correctas. Sempre que a letra não existe é contabilizada uma tentativa errada. O jogador tem um determinado número de tentativas erradas para adivinhar a palavras. Se ultrapassar esse número de tentativas, perde. Para jogar o jogo deve invocar o procedimento play_hangman()
como abaixo.
play_hangman('Programming', 5)
Adivinhe a palavra: ___________
Letra: a
Adivinhe a palavra: _____a_____
Letra: m
Adivinhe a palavra: _____amm___
Letra: p
Errou, já só faltam 4 tentativas
Adivinhe a palavra: _____amm___
def get_mask(word):
'''
cria uma string preenchida com _ com o mesmo cumprimento de word
'''
i = 0
mask = ""
while i < len(word):
mask = mask + "_"
i = i + 1
return mask
def letter_to_mask(word, mask, letra):
'''
:param word: palavra a adivinhar
:param mask: letras já adivinhadas
:param letra: nova letra a colocar nas letras adivinhadas
:return: nova máscara com as letras adivinhadas até agora
'''
i = 0
newmask = ""
while i < len(word):
if word[i] == letra:
newmask = newmask + word[i]
else:
newmask = newmask + mask[i]
i = i + 1
return newmask
def play_hangman(s, tries):
mask = get_mask(s)
while tries > 0:
print("Adivinhe a palavra:", mask)
letra = input("Letra: ")
if s.count(letra) > 0:
mask = letter_to_mask(s, mask, letra)
if mask == s:
print("Acertou: ", s)
return
else:
tries = tries - 1
if tries > 0:
print("Errou, já só faltam", tries, "tentativas")
else:
print("Perdeu")
play_hangman('Programming', 5)