2016-06-28 9 views
-2

Sorry, ich bin ein bisschen ein Anfänger mit Programmierung, aber ich bekomme einen Float Division Fehler in einer einfachen Schleife, die ich nicht sicher bin, wie zu korrigieren.Vermeidung von Null-Float-Division in Schleifen - Python

ist hier ein Code in Python 2,7

import random 

N = 100 
A = [] 
p = 0 
q = 0 

k = 1 
while k<=N: 
    x = random.random() 
    if x<= 0.5: 
     p+= 1 
    else: 
     q+=1 
    y = p/q 
    A.append(y) 
    k+=1 

diesen Code Lauffehler eine Null-Division gibt. was ich nicht korrigieren kann. Kann mir jemand sagen, wie ich das korrigieren kann?

+0

Sie setzen 'q' auf Null und nach dem ersten Zufall kleiner oder gleich 0,5 haben Sie Division durch Null - einfach. – Artur

+0

Hey Jungs Danke für die Hilfe, was ich herausgefunden habe ist, dass das Ersetzen von y = p/q mit y = p/(q + 0.000001) das Problem löst. Obwohl es sich ein bisschen wie Betrug anfühlt, funktioniert es! –

Antwort

0

Sie erhalten Null Division Fehler, weil dieses Codes

if x <= 0.5: 
    p+=1 
else: 
    q+=1 
y= p/q 

Sie haben q = 0 so initialisiert, wenn while-Schleife ersten Mal ausgeführt wird, und wenn x < = 0,5, dann wird p erhöht werden, aber q wird gleich Null und im nächsten Schritt teilen Sie p durch q (was Null ist). Sie müssen vor der Division eine Prüfbedingung eingeben, damit der Nenner nicht Null ist. Sie können es auf folgende Weise korrigieren.

if x <= 0.5: 
    p+=1 
else: 
    q+=1 
if (q == 0): 
    print "Denominator is zero" 
else: 
    y= p/q 

Dies ist nur eine Lösung, da ich nicht weiß, was Sie in Ihrem Code zu tun versuchen.