2011-01-14 7 views
2

Ich habe gekämpft, um 2 sehr kleine Logik-Anwendungen in Python zu erstellen. Ich bin sehr neu im Programmieren und könnte definitiv einige Ihrer Anleitungen verwenden, da dies für jemanden mit Erfahrung möglicherweise sehr einfach wäre.Brauchen Sie Anleitung mit Logik-Programmierung in Python

Das erste ist ein kleines Programm, das statistische Gleichungen basierend auf in das Programm eingegebenen Zahlen berechnen und Ergebnisse in eine kleine Tabelle ausgeben soll. Hier ist die PDF der Aufgabe:

http://xboxflashing.com/cw2010.pdf

ich es geschafft haben, alle, aber die allerletzte Teil der Aufgabe zu tun 1 - alles funktioniert gut, außer ich bin nicht sicher, wie etwa zur Festlegung der Bereiche zu gehen. Ich hatte ein if/elif-Setup, das zu einem count (um zu zählen, wie viele in dem Bereich sind) hinzugefügt wurde - dann wurde die Zählung unter den Tabellenüberschriften angezeigt, aber das angezeigte Ergebnis kam immer falsch heraus. Daher gehe ich davon aus, dass ich den falschen Weg gehe oder die Dinge möglicherweise überkompliziere.

Irgendwelche Ratschläge, wie man das angeht, würden sehr geschätzt werden.

Zweitens ist die Pendelaufgabe verrückt. Ich habe sehr begrenzte Erfahrung mit Python und habe Probleme, meinen Kopf herumzulegen, wie ich den Code für das festlegen soll, was gefragt wird.

Wenn Sie mich auf die Dinge führen könnten, wäre das erstaunlich und eine große Hilfe für mich. Ich bin nicht auf der Suche nach den tatsächlichen Antworten - ich kann die Syntax dafür in meinen Lehrbüchern selbst finden, ich brauche nur wirklich Hilfe, wie man beginnt, die Lösung zu setzen. Jede Hilfe zu Aufgabe zwei wäre für mich von großem Vorteil.

Vielen Dank für Ihre Zeit.

Wenn Sie weitere Informationen benötigen - lassen Sie es mich wissen.

+2

Wie immer, zeigen Sie bitte zuerst den falschen Code bitte. Das Lesen von 50-Zeilen-Code ist für mich viel einfacher als 5-Seiten-Papier. – Kabie

+0

Bitte zeigen Sie Ihren Code. Auf diese Weise müssen wir nicht von Grund auf neu programmieren. – systemovich

+0

Entschuldigung, ich habe jetzt den Code hinzugefügt. –

Antwort

1

Wie wäre es damit?

n = int(raw_input("How many numbers?")) 
nums = [] 
for i in range(n): 
    nums[i] = float(raw_input("Enter %i th numnber >" %i)) 
s = sum(nums) 
s2 = sum(map(lambda x:x*x,nums)) 
mu = s/n 
mu2 = s2/n 
sigma = (mu2-mu)**(0.5) 
error_in_mean = sigma/(n)**(0.5) 

print "x_i\tx_i-mu\t(x_i-mu)/sigma" 
for x in nums: 
    print "%f\t%f\t%f" %(x,x-mu,(x-mu)/sigma) 

absdiff = map(lambda x:abs(x-mu),nums) 
n_0 = sum(map(lambda x:(x<=sigma) , absdiff)) 
n_1 = sum(map(lambda x:(x>sigma)and(x<=2*sigma) , absdiff)) 
n_2 = sum(map(lambda x:(x>2*sigma)and(x<=3*sigma) , absdiff)) 
n_3 = sum(map(lambda x:(x>3*sigma) , absdiff)) 

print "Within 1 sigma: ",n_0 
print "Between 1 and 2 sigma: ",n_1 
print "Between 2 and 3 sigma: ",n_2 
print "Beyond 3 sigma: ",n_3 
print "Within 1 sigma: ",n_0 
+0

Hallo, vielen Dank für Ihre Bemühungen, aber diese Syntax scheint viel komplexer als die Arbeit, die ich studiert habe. Ich glaube, es muss den einfachsten Python-Code verwenden, den Sie erhalten können, wie bei meinem oben gezeigten Versuch mit Task1. Entschuldigung, ich hätte diesen Code früher hinzufügen sollen. –

+0

Warum der Downvote? – highBandWidth

+0

Ich habe Sie nicht wirklich abgelehnt, es muss jemand anderes gewesen sein. Ich konnte nicht herausfinden, warum ich mich nicht wählen lasse (ich bin eingeloggt, sage aber, dass ich mich anmelden muss, um abzustimmen). –

1

Für das erste Problem, eine einfache Implementierung ohne Schnickschnack:

numbers = []  
n = int(raw_input("Enter the amount of numbers: ")) 
for i in range(n): 
    num = float(raw_input("Enter number %d: " % d)) 
    numbers.append(num) 

# Calculate the statistical values here 

within_1_stddev = 0 
within_2_stddev = 0 
within_3_stddev = 0 
outside_3_stddev = 0 

for num in numbers: 
    if (avg - stddev) <= num < (avg + stddev): 
     within_1_stddev += 1 
    elif (avg - 2 * stddev) < num <= (avg - stddev) or (avg + stddev) <= num < (avg + 2 * stddev): 
     within_2_stddev += 1 
    elif (avg - 3 * stddev) < num <= (avg - 2 * stddev) or (avg + 2 * stddev) <= num < (avg + 3 * stddev): 
     within_3_stddev += 1 
    else: 
     outside_3_stddev += 1 

# Output here 

Für die zweiten, dann ist es nicht ganz einfach - ich irgendwie pyplotlib mich, dass es aus dem einfachen Grunde nicht mag kann manchmal sehr überwältigend sein. Sicher kann es fast alles, aber ... :)

# Imports here 

# Make a small menu here that sets the initial variables, with raw_input and 
# a simple if-else structure, I guess? 

timesteps = [] 
omegas = [] 
thetas = [] 

# Here goes the code from the PDF, but inside the loop add something like 
    timesteps.append(t) 
    omegas.append(omega) 
    thetas.append(theta) 

# Now you have the time, omega and theta in corresponding indexes at the 
# timesteps, omegas and thetas variables. 

# Do the plot here (consult the tutorial as suggested in the PDF) 
# pyplot.show() (if I remember the name correctly) might be quite helpful here 
+0

Hallo, Ihr Code für Task1 sieht sehr vielversprechend aus.Ich werde versuchen, dies umzusetzen, wenn ich morgen früh im Labor bin. Leider habe ich nicht die Möglichkeit, das Programm zu Hause zu testen - aber es sieht GENAU aus, wonach ich suche! Wie für den Code für Task2, das hilft mir auch ein bisschen zu verstehen, und ich werde versuchen, etwas Code für das morgen im Labor zu erstellen, und komme zurück zu Ihnen, wenn ich nicht mit etwas kommen kann. Vielen Dank für Ihre Zeit –

+0

Gern geschehen! :) – Shadikka

+0

@Daren P FYI, können Sie schreiben und führen Sie Python-Code mit Ihrem Browser: http://codepad.org/ :) – Bolo