Har skrivit ett enkelt program men skulle vilja ha lite tips på vad jag kan optimera, ändra eller bara göra snyggare. Så svårt att hitta lösningar när man sitter hemma och pular själv.
Kod: Markera allt
####################################################################################################
# Programmerare: J L
# Datum: 27/7 - 2010
# Programbeskrivning:
# Detta program beräknar vad det behövs för förkopplingsmotstånd till att driva en lysdiod
# baserat på dom värden för spänningsfall, inspänning och strömtålighet som lysdioden har.
####################################################################################################
# Variabel deklarering och tilldelning av startvariabler
Mot1 = 0
Mot2 = 0
E12 = [10, 12, 15, 18, 22, 39, 47, 56, 68, 82, 100, 120, 150, 180, 220, 270, 330, 390, 470, 560,
680, 820, 1000, 1200, 1500, 1800, 2200, 2700, 3300, 3900, 4700, 5600, 6800, 8200, 10000,
12000, 15000, 18000, 22000, 27000, 33000, 39000, 47000, 56000, 68000, 82000, 100000, 120000,
150000, 180000, 220000, 270000, 330000, 390000, 470000, 560000, 680000,
820000, 1000000]
####################################################################################################
# Funktionsblock
####################################################################################################
# definiera en funktion som hämtar in och gör en beräkning av moståndet
def UserInput():
# Deklarera och tilldela 4 variabler
a, b, c, d = 0, 0, 0, 0
li = []
# ta in uppgifterna som behövs för att beräkna motståndet till lysdioden
print 'Vänligen ange volt och önskad ström i milliampere för din lysdiod.'
while True:
try:
a = float(raw_input('Inspänning i volt: '))
b = float(raw_input('Önskat spänningsfall över lysdioden: '))
li = CompVolt(a, b)
c = int(raw_input('Ange max ström i milliampere som din lysdiod tål: '))
break
except ValueError:
print 'Du har inte angett ett giltigt värde, endast tal kan anges. Försök igen.'
# Beräknar motståndet och skriver ut svaret i terminalen
d = (li[0] - li[1]) / (c / 1000.0)
print 'Motståndet som behövs blir: ', d, 'Ohm'
return d
# Definiera en funktion som kontrollerar att in och spänningsfallet inte är fel
def CompVolt(a, b):
li = []
if a < b:
while True:
try:
print 'Du har angett ett för stort värde på spänningsfallet, eller för litet på inspänningen.'
a = float(raw_input('Inspänning i volt: '))
b = float(raw_input('Önskat spänningsfall över lysdioden: '))
break
except ValueError:
print 'Du har inte angett ett giltigt värde, endast tal kan anges. Försök igen.'
else:
li.append(a)
li.append(b)
return li
# Definiera en funktion som jämför och tar fram ett motstånd ur standard serien
def FixedValue(Mot1, E12):
i = 0
while i < len(E12):
if E12[i] < Mot1:
i += 1
else:
return E12[i]
# Definiera en funktion som ger svaret i ohm, K-ohm eller M-ohm
def Kohm(Mot2):
i = 0
if Mot2 >= 10 and Mot2 <=999:
print 'Vi väljer ett motstånd ur E12 serien på ', Mot2, 'Ohm.'
elif Mot2 >= 1000 and Mot2 <= 9999:
print 'Vi väljer ett mostånd ur E12 serien på ', Mot2 / 1000.0, 'Kohm.'
elif Mot2 >= 10000 and Mot2 <= 99999:
print 'Vi väljer ett mostånd ur E12 serien på ', Mot2 / 10000.0, 'Kohm.'
elif Mot2 >= 100000 and Mot2 <= 999999:
print 'Vi väljer ett mostånd ur E12 serien på ', Mot2 / 10000.0, 'Kohm.'
elif Mot2 >= 1000000 and Mot2 <= 9999999:
print 'Vi väljer ett mostånd ur E12 serien på ', Mot2 / 10000.0, 'Kohm.'
else:
print 'Vi väljer ett mostånd ur E12 serien på ', Mot2 / 1000000.0, 'Mohm.'
####################################################################################################
# Huvudprogram
####################################################################################################
Mot1 = UserInput()
Mot2 = FixedValue(Mot1, E12)
Kohm(Mot2)