Resistencia dibujada

En este programa se dibuja una resistencia usando 5 instancias, para que al momento de dibujarla fuera más fácil y rápido. El usuario ingresa los colores de la franja, para ver si son válidos el programa lee los colores de un archivo de texto, ya después de que comprueba que están, traduce los colores con if y elif a ingles.
Para la validación cree una función que leía las lineas del archivo, si había coincidencia le daba a la variable "e" el valor de 1, sino devolvía e=0.
Ademas guarde esa linea, que coincide con el valor del color, dentro de una lista, pero para que fuera la linea con su valor reste el total de las lineas menos la linea indicada, porque si no me daba el valor de cuantas lineas faltaban al final del archivo.
Si no se ingresaba el color dentro del archivo mandaba un mensaje de error y volvía a llamar a la función, el programa tiene 3 intentos, si se falla, manda un mensaje de que los colores ingresados no estaban en el archivo, para este mensaje use un try y un except.
Después, saque los valores de las franjas e hice los cálculos del valor de la resistencia con otra función, la cual mande a llamar hasta que imprimo el resultado.
Para la linea de la tolerancia (valor) lo saque poniendo if y elif, los colores de tolerancia manejados fueron rojo, dorado y plateado.
A continuación se ve el archivo de texto, llamado colores, con los colores en español:



  • Código:

#dibujar una resistencia ingresando los colores de las 3 franjas y la de tolerancia
from turtle import *
t=Turtle()
s=Turtle()
su=Turtle()
li=Turtle()
pp=Turtle()
screen=t.getscreen()
setup(600,300,0,0)
screensize(650,300)
title("Resistencia con código de colores")
bgcolor('#f9d6ef')
colors=[]
posiciones=[]
cont=0

#para total de lineas
archivo = open('colores.txt', 'r')
tot=len(archivo.readlines()) 
archivo.close()

def ingresos(e=0,pos=0):
with open("colores.txt") as f:
try:
for line in f:
if(color in line):
e=1
l=len(f.readlines())
pos = tot - l -1

except(TypeError,IndexError):
e=0

return(e,pos)

#verificacion de colores de 3 franjas en archivo
for i in range(1,4):
if(cont>=3):
break
color=textinput("Color de franja %d"%i,"Ingrese color de la franja %d"%i)
color=color.lower()
cont=1
e,pos=ingresos()
if(e==1):
colors.append(color)
posiciones.append(pos)
elif(e==0):
while (cont<3 and e==0):
cont+=1
color=textinput("Color de franja %d"%i,"ERROR de ingreso, ingrese color de la franja %d"%i)
color=color.lower()
e,pos=ingresos() 
if(e==1):
colors.append(color)
posiciones.append(pos)
break

cont2=0
tolerancias=['rojo','dorado','plateado']
tol=textinput("Tolerancia","Ingrese color de la tolerancia ")
tol=tol.lower()

if(tol in tolerancias):
che=1
else:
che=0
if(tol not in tolerancias):
while (cont2<3 and che==0):
cont2+=1
tol=textinput("Tolerancia","ERROR de ingreso, ingrese color de la tolerancia ")
tol=tol.lower()
if(tol in tolerancias):
che=1
if(che==1):
break

try:
#traduciendo tolerancia
tol=tolerancias.index(tol)
if(tol==0):
tole=2
tol='red'
elif(tol==1):
tole=5
tol='golden'
elif(tol==2):
tole=10
tol='silver'

#Traduciendo los colores a ingles
if(colors[0]=='negro'):
color1='black'
elif(colors[0]=='cafe'):
color1='#6d3902'
elif(colors[0]=='rojo'):
color1='red'
elif(colors[0]=='naranja'):
color1='#ff6100'
elif(colors[0]=='amarillo'):
color1='yellow'
elif(colors[0]=='verde'):
color1='green'
elif(colors[0]=='azul'):
color1='blue'
elif(colors[0]=='morado'):
color1='purple'
elif(colors[0]=='gris'):
color1='gray'
elif(colors[0]=='blanco'):
color1='white'

if(colors[1]=='negro'):
color2='black'
elif(colors[1]=='cafe'):
color2='#6d3902'
elif(colors[1]=='rojo'):
color2='red'
elif(colors[1]=='naranja'):
color2='#ff6100'
elif(colors[1]=='amarillo'):
color2='yellow'
elif(colors[1]=='verde'):
color2='green'
elif(colors[1]=='azul'):
color2='blue'
elif(colors[1]=='morado'):
color2='purple'
elif(colors[1]=='gris'):
color2='gray'
elif(colors[1]=='blanco'):
color2='white'

if(colors[2]=='negro'):
color3='black'
elif(colors[2]=='cafe'):
color3='#6d3902'
elif(colors[2]=='rojo'):
color3='red'
elif(colors[2]=='naranja'):
color3='#ff6100'
elif(colors[2]=='amarillo'):
color3='yellow'
elif(colors[2]=='verde'):
color3='green'
elif(colors[2]=='azul'):
color3='blue'
elif(colors[2]=='morado'):
color3='purple'
elif(colors[2]=='gris'):
color3='gray'
elif(colors[2]=='blanco'):
color3='white'

#funcion de los calculos
def calculos(rest=1):
digitoval1=(posiciones[0])
digitoval2=(posiciones[1])
digitoval3=(posiciones[2])

exp=(10**(digitoval3))
part1=str(digitoval1)
part2=str(digitoval2)
rest=int(part1 + part2)*exp
return(rest)

#Para dibujar la resistencia
t.speed(4)
pp.speed(3)
s.speed(3)
su.speed(4)
pp.pensize(5)
pp.penup()
pp.goto(-270,5)
s.pensize(5)
s.penup()
s.goto(186.6,5)
s.pendown()
s.fillcolor("gray")
s.begin_fill()
pp.pendown()
pp.fillcolor("gray")
pp.begin_fill()
pp.fd(80)
s.fd(80)
pp.rt(90)
s.rt(90)
pp.fd(10)
s.fd(10)
pp.rt(90)
s.rt(90)
pp.fd(80)
s.fd(80)
pp.rt(90)
s.rt(90)
pp.fd(10)
s.fd(10)
pp.end_fill()
s.end_fill()
pp.hideturtle()
s.hideturtle()
t.penup()
t.pensize(5)
su.pensize(5)
su.penup()
t.goto(-190,5)
su.goto(186.6,5)
su.pendown()
t.rt(90)
t.pendown()
su.pendown()
t.fillcolor('#efb22d')
t.begin_fill()
su.fillcolor('#efb22d')
su.begin_fill()
su.lt(90)
t.circle(50,140)
su.circle(50,140)
t.right(50)
su.right(50)
t.forward(200)
su.forward(200)
t.right(50)
su.right(50)
t.circle(50,140)
su.circle(50,140)
t.right(90)
t.end_fill()
t.hideturtle()
su.end_fill()
su.hideturtle()

#Para las lineas de las resitencias
li.penup()
li.goto(-190,5)
li.pendown()
li.pensize(10)
li.penup()
li.rt(90)
li.lt(90)
li.rt(90)
li.circle(50,-140)
li.right(130)
li.forward(20)
li.rt(90)
li.forward(5)
li.pendown()
li.pencolor(color1)
li.forward(55)
li.penup()
li.lt(90)
li.forward(40)
li.lt(90)
li.pendown()
li.pencolor(color2)
li.forward(55)
li.penup()
li.rt(90)
li.forward(40)
li.rt(90)
li.pendown()
li.pencolor(color3)
li.forward(55)

#linea de la tolerancia
if(tol=='red'):
li.penup()
li.lt(90)
li.forward(80)
li.lt(90)
li.pendown()
li.pencolor('red')
li.forward(55)
elif(tol=='golden'):
li.penup()
li.lt(90)
li.forward(80)
li.lt(90)
li.pendown()
li.pencolor('#ffd000')
li.forward(55)
elif(tol=='silver'):
li.penup()
li.lt(90)
li.forward(80)
li.lt(90)
li.pendown()
li.pencolor('#d1cfcf')
li.forward(55)

li.hideturtle()
t.pencolor('#1c3c8e')
t.penup()
t.goto(-280,-100)

#llamada de funcion para rest con valor inicial de 1
t.write("El valor de la resistencia es de: "+str(calculos(1))+" Ohms", font=("Arial", int(18),"bold"))
t.penup()
t.goto(-280,-120)
t.write("Con tolerancia de: "+(str(tole))+"%", font=("Arial", int(18),"bold"))


screen.exitonclick()

except(NameError,IndexError):
print("""\nExcedio numeros de intentos permitidos,\npor lo que el programa no funcionara porque esos datos no estan registrados,\ny quedara finalizado el programa,\nsi quiere reiniciar el programa vuela a correrlo...\n""")

  • Ejecución:


No hay comentarios:

Publicar un comentario

Ultima entrada ingresada

SISTEMA DE RIEGO AUTOMÁTICO CON MÚSICA

El objetivo era hacer un programa que pueda activar una bomba de agua en la noche, y que por las mañanas reproduzca música para las plantas....