How do I show an image according to given Number being this number is by random in python?

0
import numpy as np 
import matplotlib.pyplot as plt
from PIL import Image
import cv2

def showfig(image, ucmap):
    imgplot=plt.imshow(image, ucmap)
img0 = cv2.imread("zero.jpg",0)
img1 = cv2.imread("um.jpg",0)

from random import randint  #gerar número aleatório, ou seja, randomizar número inteiro
from time import sleep 

computador = randint(0,9) #Faz o computador pensar
print('-=-' * 20) #Para definição de começo da pergunta do computador
print('Vou pensar em um número entre 0 e 9. Tente adivinhar...')
print('-=-' * 20) #Para definição de começo da pergunta do computador
jogador = int(input('Em que número eu pensei?')) #jogador tenta adivinhar
print('Processando...')
sleep(3) 

jogador = 0 
computador = 0

if jogador == computador:

    plt.figure(figsize=(5,5))
    plt.title('Imagem de Entrada')
    showfig(img0, "gray")
    print('Parabéns: você ganhou!')

else:
    print('Ganhei: Eu pensei no número {} e não {}!'.format(computador, jogador))

jogador = 1
computador = 1

if jogador == computador:

    plt.figure(figsize=(5,5))
    plt.title('Imagem de Entrada')
    showfig(img1, "gray")
    print('Parabéns: você ganhou!')

else:
    print('Ganhei: Eu pensei no número {} e não {}!'.format(computador, jogador))
    
asked by anonymous 30.10.2018 / 22:32

1 answer

1

Instead of using a variable for each image, use an indexable structure such as lists or dictionaries. For numbers from scratch, a list would suit, but I'd rather use dictionaries, in case you need more images that are not numbers after:

imgs = {
    0: cv2.imread("zero.jpg", 0),
    1: cv2.imread("um.jpg", 0),
}

Then when it's time to show the image, just use this dictionary to reference the right image according to the number drawn:

computador = randint(0, 9)
...
showfig(imgs[computador], "gray")
    
30.10.2018 / 23:16