Seite 3 von 3

Re: zahl die auf 5 endet überspringe

Verfasst: Sonntag 8. Januar 2012, 14:41
von nomnom
Hyperion hat geschrieben:(Welcher Basic-Dialekt klappte hier ganz gut für das Syntax-Highlighting? Vergesse ich immer wieder)
BlitzBasic und FreeBasic, denke ich. Das Forum benutzt doch GeSHi?

Edit: Und QBasic/QuickBasic und sdlBasic.

Re: zahl die auf 5 endet überspringe

Verfasst: Sonntag 8. Januar 2012, 14:50
von Hyperion
nomnom hat geschrieben:BlitzBasic und FreeBasic, denke ich. Das Forum benutzt doch GeSHi?

Edit: Und QBasic/QuickBasic und sdlBasic.
"locobasic" wars :-)

Re: zahl die auf 5 endet überspringe

Verfasst: Sonntag 8. Januar 2012, 14:52
von BlackJack
@Hyperion: Ich nehme immer ``locobasic`` bei GeSHi, denn das ist auch so ein „altes” BASIC aus der 8-Bit-Ära; Locomotive BASIC vom Amstrad CPC. Die Syntaxhervorhebung für moderne BASICs funkioniert bei diesen alten Dialekten nicht immer so gut.

Edit: Mist, zu langsam. :-)

Re: zahl die auf 5 endet überspringe

Verfasst: Sonntag 8. Januar 2012, 14:55
von Hyperion
BlackJack hat geschrieben: Edit: Mist, zu langsam. :-)
Hehe... hatte nen alten Beitrag von Dir gesucht, gefunden und per "Edit" reingeguckt. War auch in so nem "problemthread" :-D (Artikel 5 GG wird da aufgeführt... herrlich!)

Re: zahl die auf 5 endet überspringe

Verfasst: Sonntag 8. Januar 2012, 15:20
von BlackJack
Ich glaube einen Ansatz, der nur mit einer Modulo-Operation aus kommt, hatten wir noch nicht (in Pascal dieses mal):

Code: Alles auswählen

Program Skip5;
Var i : Byte;
Begin
    For i := 1 To 19 Do If i MOD 10 <> 5 Then WriteLn(i);
End.

Re: zahl die auf 5 endet überspringe

Verfasst: Sonntag 8. Januar 2012, 15:31
von Hyperion
Ich hätte da auch noch was:

Code: Alles auswählen

In [12]: from itertools import cycle

In [38]: cycler = cycle((1, 1, 1, 1, 2, 1, 1, 1, 1))

In [39]: c = 0

In [40]: while c < 20:
    c += cycler.next()
    print c,
   ....:     
   ....:     
1 2 3 4 6 7 8 9 10 11 12 13 14 16 17 18 19 20
:mrgreen:

Re: zahl die auf 5 endet überspringe

Verfasst: Sonntag 8. Januar 2012, 16:18
von nomnom
BlackJack hat geschrieben:Ich glaube einen Ansatz, der nur mit einer Modulo-Operation aus kommt, hatten wir noch nicht
nomnom hat geschrieben:

Code: Alles auswählen

>>> for i in range(1, 21):
...     if i % 10 != 5:
...             print i
...
:P

Re: zahl die auf 5 endet überspringe

Verfasst: Sonntag 8. Januar 2012, 16:21
von BlackJack
@nomnom: Ach verdammt, da hatte ich nicht aufgepasst. :oops:

Re: zahl die auf 5 endet überspringe

Verfasst: Donnerstag 12. Januar 2012, 10:52
von korkak
nur um das mal als programmierneuling zu verstehen, die beste lösung(oder am verständlichsten für einen anfänger :wink: ) kam doch jetzt von /me mit "endswith" oder?
wenn ich das so laufen lasse wird doch alles mit einer 5 am ende ausgelassen so wie der TE es wollte:

Code: Alles auswählen

for i in range(1, 31):
    if not str(i).endswith('5'):
        print i

Re: zahl die auf 5 endet überspringe

Verfasst: Donnerstag 12. Januar 2012, 12:56
von EyDu
@korkak: Die meisten würden wohl nomnoms Lösung bevorzugen, da sie sehr intuitiv ist und ohne unnötige Konvertierungen auskommt:

Code: Alles auswählen

for i in range(1, 21):
    if i % 10 != 5:
        print i

Re: zahl die auf 5 endet überspringe

Verfasst: Donnerstag 12. Januar 2012, 13:44
von korkak
@Eydu

jetzt verstehe ich es auch, um endswith zu benutzen muss man die zahl erst in einen string umwandeln, was offensichtlich nicht so gern gesehen wird.
von modulo hatte ich zwar bereits schonmal gehört aber nicht kapiert wieso ihr das hier einsetzt. jetzt hab ich nachgelesen und rausgefunden das bei Division durch 10, der Rest die letzte Ziffer ist und alles ergibt einen sinn.

wieder was gelernt, cooles forum :P