2
I will present this code to my math teacher (who knows only algorithms, no Python or any programming language). I’m a beginner in Python, so I know there must be a simpler way to make the code. The script is a game between two players. It generates random numbers to be multiplied. The one who hits the highest number between the two wins. If the two have the same number of hits, the victory goes to the one who needed less time to answer.
from time import time, sleep
from random import randint
# Listas do jogador 1
gabarito_j1 = list() # Lista com respostas da multiplicação
respostas_j1 = list() # Lista com os inputs do usuário
resultado_j1 = list() # Lista comparando gabarito e repostas
tempo_j1 = list() # Lista com o tempo levado pelo usuário
# Listas do jogador 2
gabarito_j2 = list()
respostas_j2 = list()
resultado_j2 = list()
tempo_j2 = list()
rodadas = int(input('Insira o número de rodadas: '))
while True: # Loop infinito para min_range >= max_range
max_range = int(input('Insira o maior número possível dentre os aleatórios: '))
min_range = int(input('Insira o menor número possível dentre os aleatórios: '))
if max_range > min_range:
break
else:
print('Valor inválido. Tente novamente.')
for j in range(0, 2):
# j varia de acordo com o jogador. j = 0: jogador 1, j = 1: jogador 2
if j == 0:
print('\nJOGADOR 1')
sleep(3)
elif j == 1:
print('\nJOGADOR 2')
sleep(5)
for c in range(0, rodadas):
# Código será executado pelo valor da variável 'rodadas'
print('-=' * 15)
sleep(1)
print('Ache o valor de x')
sleep(1)
# Gerando os números aleatórios
n1 = int(randint(min_range, max_range))
n2 = int(randint(min_range, max_range))
print(f'x = {n1} * {n2}')
inicio = time() # Início da contagem do tempo
n = int(input('Insira o valor de x: '))
fim = time() # Fim da contagem do tempo
tempo_total = fim - inicio
print(f'Tempo: {tempo_total:.2f} segundos')
if j == 0:
gabarito_j1.append(n1 * n2)
respostas_j1.append(n)
tempo_j1.append(tempo_total)
elif j == 1:
gabarito_j2.append(n1 * n2)
respostas_j2.append(n)
tempo_j2.append(tempo_total)
for cont, n in enumerate(gabarito_j1):
# Se o valor em 'gabarito' for igual ao de 'respostas' "Correto" será adicionado na lista
# Senão, "Incorreto" será adicionado em resultado_j2
if respostas_j1[cont] == n:
resultado_j1.append('Correto')
else:
resultado_j1.append('Incorreto')
num_de_acertos_j1 = resultado_j1.count('Correto')
for cont, n in enumerate(gabarito_j2):
# Se o valor em 'gabarito' for igual ao de 'respostas' "Correto" será adicionado na lista
# Senão, "Incorreto" será adicionado em resultado_j2
if respostas_j2[cont] == n:
resultado_j2.append('Correto')
else:
resultado_j2.append('Incorreto')
num_de_acertos_j2 = resultado_j2.count('Correto')
print('')
print('-=' * 30)
print('DADOS DO JOGADOR 1')
print(f'O jogador 1 acertou {num_de_acertos_j1} num total de {(sum(tempo_j1)):.2f} segundos')
print(f'-=' * 30)
print('DADOS DO JOGADOR 2')
print(f'O jogador 2 acertou {num_de_acertos_j2} num total de {(sum(tempo_j2)):.2f} segundos')
print('-=' * 30)
# Analisando casos onde um jogador obteve mais acertos do que outro
if num_de_acertos_j1 > num_de_acertos_j2:
print(f''
f'O jogador 1 venceu por {num_de_acertos_j1 - num_de_acertos_j2}'
f' pontos de diferença')
elif num_de_acertos_j2 > num_de_acertos_j1:
print(f'O jogador 2 venceu por {num_de_acertos_j2 - num_de_acertos_j1}'
f' pontos de diferença')
# Analisando casos onde os jogadores empataram e o desempate é no tempo
elif num_de_acertos_j1 == num_de_acertos_j2:
if sum(tempo_j1) < sum(tempo_j2):
print(f'O jogador 1 venceu por {(sum(tempo_j2) - sum(tempo_j1)):.2f}'
f' segundos de diferença')
elif sum(tempo_j1) > sum(tempo_j2):
print(f'O jogador 2 venceu por {(sum(tempo_j1) - sum(tempo_j2)):.2f}'
f' segundos de diferença')