Vorschlag zur besseren gegenseitigen Hilfe (OOP nutzen)
Verfasst: Mittwoch 25. Januar 2006, 15:08
Vorschlag zur besseren gegenseitigen Hilfe (OOP nutzen)
Grüße,
mir als programmierer, entwickler geht es oft so, dass ich gerne gewisse Sachen umsetzen würde, aber ich meist an den vielen kleinen problemen scheitere, in die das große Problem zerfällt.
So musste ich mir vor kurzem überlegen, wie ich es hinbekommen, aus einer Liste unbekannter Länge und unbekannten Inhalts von Zahlen, wie ich daraus bestimmte Zahlen herausfiltere. Herausgekommen ist das hier:
Es kann ja nun durchaus sein, dass dieser befehl schon exestiert und ich mir vergeblich Mühe gemacht habe, aber eh ich erst poste und die antworten abwarte und auswerte, schreib ich mir eben lieber selber schnell eine lösung. vielleicht geht es anderen auch so und ich fände es dumm, wenn jeder das gleiche Problem lösen müsste.
Ich möchte daher einen Anstoß geben, dass jeder vielleicht versucht etwas offener und allgemeiner zu programmieren, so könnten wir gegenseitig überschneidende Probleme schneller lösen. Eine Art pool für Probleme einfacher Art aufbauen.
Wenn ich nicht erst lang nachdenken muss über irgend ein kleines Problem, weil das eben schon im "pool" gelöst ist, kann ich mich schon wieder um ein anderes kümmern und so dem pool wieder etwas hinzufügen.
Hier noch die Klasse in der die Funktion zu finden ist:
cu, qweet
Grüße,
mir als programmierer, entwickler geht es oft so, dass ich gerne gewisse Sachen umsetzen würde, aber ich meist an den vielen kleinen problemen scheitere, in die das große Problem zerfällt.
So musste ich mir vor kurzem überlegen, wie ich es hinbekommen, aus einer Liste unbekannter Länge und unbekannten Inhalts von Zahlen, wie ich daraus bestimmte Zahlen herausfiltere. Herausgekommen ist das hier:
Code: Alles auswählen
def filter_number_from_list(trend_list, number_to_filter):
# EXAMPLE
# 1) INPUT: trend_list = [5, 0, -3, -1, 4, 0, 6, 4], number_to_filter = 0
# 2) OUTPUT: trend_list = [5, -3, -1, 4, 6, 4]
# INIT
number_to_filter_counter = 0
# FILTER
for i in trend_list:
if i == number_to_filter:
number_to_filter_counter += 1
for i in range(number_to_filter_counter):
trend_list.remove(number_to_filter)
# RETURN
return trend_list
Ich möchte daher einen Anstoß geben, dass jeder vielleicht versucht etwas offener und allgemeiner zu programmieren, so könnten wir gegenseitig überschneidende Probleme schneller lösen. Eine Art pool für Probleme einfacher Art aufbauen.
Wenn ich nicht erst lang nachdenken muss über irgend ein kleines Problem, weil das eben schon im "pool" gelöst ist, kann ich mich schon wieder um ein anderes kümmern und so dem pool wieder etwas hinzufügen.
Hier noch die Klasse in der die Funktion zu finden ist:
Code: Alles auswählen
class make_calculations:
# new_random_numbers: INPUT A LIST OF INTEGERS. EX: [1, 1, -1, 1, -1]
# connect_how_many: INPUT THE INTEGERS: 1 OR 2
def __init__(self, new_random_numbers, connect_how_many):
# INPUT
self.new_random_numbers = new_random_numbers
self.connect_how_many = connect_how_many
# /INPUT
# OUTPUT
self.trend_list = []
# /OUTPUT
def connect_trends_of_same_direction_together(self, list_of_positive_and_negative_integers):
# EXAMPLE
# 1) INPUT: list_of_positive_and_negative_integers = [1, -1, 5, 4, 3, -1, -6, -5]
# 2) OUTPUT: trend_list = [1, -1, 12, -12]
# INIT
trend_direction = ''
up_trend_length = 0
down_trend_length = 0
trend_list = []
# CONNECTING
for i in range(len(list_of_positive_and_negative_integers)):
if (trend_direction != 'DOWN'):
if (list_of_positive_and_negative_integers[i] > 0):
up_trend_length += list_of_positive_and_negative_integers[i]
trend_direction = 'UP'
elif (trend_direction == 'UP'):
trend_list.append(up_trend_length)
up_trend_length = 0
trend_direction = 'DOWN'
if (list_of_positive_and_negative_integers[i] < 0):
down_trend_length += list_of_positive_and_negative_integers[i]
trend_direction = 'DOWN'
elif (trend_direction == 'DOWN'):
trend_list.append(down_trend_length)
down_trend_length = 0
trend_direction = 'UP'
elif (trend_direction != 'UP'):
if (list_of_positive_and_negative_integers[i] < 0):
down_trend_length += list_of_positive_and_negative_integers[i]
trend_direction = 'DOWN'
elif (trend_direction == 'DOWN'):
trend_list.append(down_trend_length)
down_trend_length = 0
trend_direction = 'UP'
if (list_of_positive_and_negative_integers[i] > 0):
up_trend_length += list_of_positive_and_negative_integers[i]
trend_direction = 'UP'
elif (trend_direction == 'UP'):
trend_list.append(up_trend_length)
up_trend_length = 0
trend_direction = 'DOWN'
if trend_direction == 'UP':
trend_list.append(up_trend_length)
elif trend_direction == 'DOWN':
trend_list.append(down_trend_length)
# RETURN
return trend_list
def connect_trends(self, connect_how_many, trend_list):
# connect_how_many ONLY FOR VALUES: 1 OR 2
# EXAMPLE
# 1) INPUT: connect_how_many = 2, trend_list = [5, -3, -1, 4, 6, 4]
# 2) OUTPUT: new_trend_list = [2, 3, 10]
# INIT
old_trend_list_is = ''
if len(trend_list) % 2 == 1:
old_trend_list_is = 'UNEVEN'
trend_list.pop()
else:
old_trend_list_is = 'EVEN'
# CONNECT THE TRENDS
new_trend_list = []
new_current_trend = 0
for i in range(len(trend_list)/connect_how_many):
new_current_trend = 0
for j in range(connect_how_many):
new_current_trend += trend_list[connect_how_many*i + j]
new_trend_list.append(new_current_trend)
# RETURN
return new_trend_list
def filter_number_from_list(self, trend_list, number_to_filter):
# EXAMPLE
# 1) INPUT: trend_list = [5, 0, -3, -1, 4, 0, 6, 4], number_to_filter = 0
# 2) OUTPUT: trend_list = [5, -3, -1, 4, 6, 4]
# INIT
number_to_filter_counter = 0
# FILTER
for i in trend_list:
if i == number_to_filter:
number_to_filter_counter += 1
for i in range(number_to_filter_counter):
trend_list.remove(number_to_filter)
# RETURN
return trend_list
def do_action(self):
# CONNECTS ALL -1s AND 1s (1, 1, 1 --> 3, -1, -1, -1 --> -3)
self.trend_list = self.connect_trends_of_same_direction_together(self.new_random_numbers)
# CONNECTS TWO DIFFERENT TRENDS ex(2, -3) --> -1
self.trend_list = self.connect_trends(self.connect_how_many, self.trend_list)
# IF ZERO APPEARS IT GETS FILTERED
self.trend_list = self.filter_number_from_list(self.trend_list, 0)
# if TWO POSITIVE TRENDS ARE IN A ROW
# then THEY ARE GETTING CONNECTED TO ONE
self.trend_list = self.connect_trends_of_same_direction_together(self.trend_list)