<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jetzt lerne ich programmieren &#187; BackRaw</title>
	<atom:link href="http://www.jlip.de/author/backraw/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jlip.de</link>
	<description>oder so ähnlich...</description>
	<lastBuildDate>Thu, 29 Oct 2009 13:03:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Variablen und Datentypen in Python</title>
		<link>http://www.jlip.de/variablen-und-datentypen-in-python/</link>
		<comments>http://www.jlip.de/variablen-und-datentypen-in-python/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 13:09:22 +0000</pubDate>
		<dc:creator>BackRaw</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jlip.de/?p=165</guid>
		<description><![CDATA[Da das erste Beispielprogramm doch ein wenig zu kompliziert für wirkliche Anfänger war, starte ich einen neuen Versuch mit Variablen und Datentypen. Datentypen Dies sind Typen, mit denen man in Python arbeiten kann, zu ihnen gehören: int Integer &#8211; Ganzzahl int() -> Konvertierung zu einer Ganzzahl float Floating Number &#8211; Fließkommazahl, Dezimalzahl float() -> Konvertierung [...]]]></description>
			<content:encoded><![CDATA[<p>Da das erste Beispielprogramm doch ein wenig zu kompliziert für wirkliche Anfänger war, starte ich einen neuen Versuch mit Variablen und Datentypen.</p>
<p><span id="more-165"></span></p>
<p><strong>Datentypen</strong></p>
<p>Dies sind Typen, mit denen man in Python arbeiten kann, zu ihnen gehören:</p>
<ul>
<li>int
<ul>
<li>Integer &#8211; Ganzzahl
<ul>
<li>int() -> Konvertierung zu einer Ganzzahl</li>
</ul>
</li>
</ul>
</li>
<li>float
<ul>
<li>Floating Number &#8211; Fließkommazahl, Dezimalzahl
<ul>
<li>float() -> Konvertierung zu einer Dezimalzahl</li>
</ul>
</li>
</ul>
</li>
<li>str
<ul>
<li>String &#8211; Zeichenkette
<ul>
<li>str() -> Konvertierung zu einer Zeichenkette</li>
</ul>
</li>
</ul>
</li>
<li>list
<ul>
<li>Liste
<ul>
<li>list() oder []</li>
</ul>
</li>
</ul>
</li>
<li>dict
<ul>
<li>Dictionary &#8211; in anderen Sprachen bekannt als Array
<ul>
<li>dict() oder {}</li>
</ul>
</li>
</ul>
</li>
<li>bool
<ul>
<li>Boolscher Wert
<ul>
<li>bool() -> True oder False</li>
</ul>
</li>
</ul>
</li>
<li>tuple
<ul>
<li>Unveränderbare Liste
<ul>
<li>tuple() -> Konvertierung zu einer unveränderbaren Liste</li>
</ul>
</li>
</ul>
</li>
<li>set
<ul>
<li>Liste ohne Duplikate, Slicing, Indexing
<ul>
<li>set()</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>Beispiele<br />
</strong></p>
<pre lang="python"># int
a = 1

# float
a = 1.0

# str
a = '1'
# oder
a = 'Ich bin BackRaw'

# list
a = ['hi', 'how', 'are', 'you']

# Slicing:
a.remove('hi') # -> a ist jetzt:
['how', 'are', 'you']

# Indexing:
a[0] = 'lol' # -> a ist jetzt:
['lol', 'are', 'you']

a.pop(0)
# oder
del a[0]

# -> a ist jetzt:
['are', 'you']

# 0 ist in Python immer das erste, Python zählt nicht so wie wir es kennen:
    # 1, 2, 3, 4 - sondern:
    # 0, 1, 2, 3
    # wobei 0 das erste, 1 das zweite, 2 das dritte und 3 das vierte Element ist

# Dictionary:
a = {'name':'BackRaw',
     'age':16,
     'real age':16.8,
     'his list':['hello world', "I'm BackRaw"],
     'his dict':{'a':'Bessy'}
     }

# Man kann in Dicts alle möglichen Datatypen definieren, auslesen, und verändern...
a['name']          # -> 'BackRaw'
a['age']           # -> 16
a['his list']      # -> ['hello world', "I'm BackRaw"]
a['his list'][0]   # -> 'hello world'
a['his dict']      # -> {'a':'Bessy'}
a['his dict']['a'] # -> 'Bessy'

a['name'] = 'NOOB!'
a['name']          # -> 'NOOB!'

# bool
a = True
bool(a) # -> True

a = False
bool(a) # -> False

a = 1
bool(a) # -> True

a = -1
bool(a) # -> True

a = 0
bool(a) # -> False

# tuple
a = ['1', 's', 'hallo', 'lol']
tuple(a)
('1', 's', 'hallo', 'lol')

# Sets möchte ich erst gar nicht näher erklären, da ich sie persönlich nicht benutze.
# Ich bevorzuge Lists gegenüber Sets, da sie Slicing und Indexing unterstützen.

# Konvertierung von Strings:
a = '1'
int(a) # -> 1

a = '1.0'
float(a) # -> 1.0</pre>
<p><strong> Variablen</strong></p>
<p>Sie sind lediglich Platzhalter, man kann sie definieren, auslesen und verändern. Python ist deswegen für mich eine sehr einfache Sprache, da man die Variablen nicht mit den Typen deklarieren muss.</p>
<p>Ein kleines Beispiel in C/C++:</p>
<pre lang="cpp">int a = 3;
string b = "Hallo!";
double c = 1.0;
// double ist das selbe wie float in Python.</pre>
<p>Jetzt in Python:</p>
<pre lang="python">a = 3
b = 'Hallo!'
c = 1.0</pre>
<p>Auffallend ist auch, dass man bei Python kein Semikolon (;) am Ende eines Befehls braucht.</p>
<p>Ich hoffe dies hat euch weitergeholfen =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jlip.de/variablen-und-datentypen-in-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Das erste Programm in Python</title>
		<link>http://www.jlip.de/das-erste-programm-in-python/</link>
		<comments>http://www.jlip.de/das-erste-programm-in-python/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 16:23:03 +0000</pubDate>
		<dc:creator>BackRaw</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jlip.de/?p=115</guid>
		<description><![CDATA[Hierfür braucht ihr zuerst einen guten Python-Editor. Ich bevorzuge eclipse, da es sehr umfangreich ist (und man muss ihn nicht einmal installieren). Jetzt erstellt ihr irgendwo eine Python-Datei: Rechtsklick &#8211; Neu Textdokument &#8211; diese Datei umbenennen zu: erstes-programm.py Danach zieht ihr diese Datei in eclipse, sodass ihr sie dort bearbeiten könnt. Euer erstes Programm sieht [...]]]></description>
			<content:encoded><![CDATA[<p>Hierfür braucht ihr zuerst einen guten Python-Editor. Ich bevorzuge <a href="http://www.eclipse.org/downloads/"><strong>eclipse</strong></a>, da es sehr umfangreich ist (und man muss ihn nicht einmal installieren).</p>
<p>Jetzt erstellt ihr irgendwo eine Python-Datei: Rechtsklick &#8211; Neu Textdokument &#8211; diese Datei umbenennen zu: erstes-programm.py</p>
<p><span id="more-115"></span></p>
<p>Danach zieht ihr diese Datei in eclipse, sodass ihr sie dort bearbeiten könnt. Euer erstes Programm sieht dann so aus (bitte nicht kopieren, sonst merkt ihr euch die einzelnen Befehle nicht):</p>
<ul>
<li>
<pre lang="python">""" Der erste Befehl ist meistens "import"
    er bewirkt das Importieren von Libraries: """
import os

""" os - Operating System - Aufgaben,
    die etwas mit dem OS zu tun haben (CMD-Befehle usw) """

def firstFunction(arg):
    # die untere Funktion ist NICHT vorhanden,
       # wenn man nicht os importiert hat.
    # zuerst wird die Lib (Library) aufgerufen,
       # dann nach einem Punkt die Funktion/Klasse,
          # die in der Lib enthalten ist.
    # arg ist in diesem Beispiel 'help'
    os.system(arg)

""" man definiert eine Funktion mit "def"

Python ist Case-Sensitive, das bedeutet,
    firstFunction ist etwas anderes als firstfunction !!

"arg" steht für "argument",
    man kann diesen Parameter ruhig umbenennen, wenn man will.

os.system - die system-Funktion von OS. """

# Aufrufen der Funktion:
firstFunction('help')

# Dies wird die System-Funktion "help" aufrufen, wie wenn man es in CMD ausführen würde.</pre>
</li>
</ul>
<p>Die 3 Anführungszeichen &#8220;&#8221;" am Anfang und am Ende sind Docstrings.<br />
Doc &#8211; Dokumentation, String &#8211; Zeichenkette. Sie dienen auch zum Kommentieren, sind aber eher (wie der Name schon sagt) zum Dokumentieren mancher Befehle gedacht.</p>
<p>Fast hätte ich&#8217;s vergessen: In Python braucht man KEIN Semikolon (;) am Ende eines Befehls! Man sollte es lieber NIE verwenden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jlip.de/das-erste-programm-in-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Merkmale von ESP</title>
		<link>http://www.jlip.de/merkmale-von-esp/</link>
		<comments>http://www.jlip.de/merkmale-von-esp/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 15:30:12 +0000</pubDate>
		<dc:creator>BackRaw</dc:creator>
				<category><![CDATA[EventScripts Python]]></category>

		<guid isPermaLink="false">http://www.jlip.de/?p=89</guid>
		<description><![CDATA[Die unten beschriebenen Merkmale sollte man besten auswendig lernen (das Wissen der verschiedenen ES-Funktionen ist Vorassetzung dafür): es.dbgmsg anstatt print: es.dbgmsg gibt die Debug-Meldung an die Server-Console aus, print an den Python-Interpreter (in dem Fall auch an die Server-Console, man sollte aber dennoch lieber es.dbgmsg nutzen) &#8211; Syntax von es.dbgmsg: es.dbgmsg(0, 'Meldung hier') es.getplayerprop/es.setplayerprop anstatt [...]]]></description>
			<content:encoded><![CDATA[<p>Die unten beschriebenen Merkmale sollte man besten auswendig lernen (das Wissen der verschiedenen ES-Funktionen ist Vorassetzung dafür):</p>
<p><span id="more-89"></span></p>
<ul>
<li>es.dbgmsg anstatt print:
<ul>
<li>es.dbgmsg gibt die Debug-Meldung an die Server-Console aus, print an den Python-Interpreter (in dem Fall auch an die Server-Console, man sollte aber dennoch lieber es.dbgmsg nutzen) &#8211; Syntax von es.dbgmsg:
<pre lang="python">es.dbgmsg(0, 'Meldung hier')</pre>
</li>
</ul>
</li>
<li>es.getplayerprop/es.setplayerprop anstatt playerlib:
<ul>
<li>Sobald ihr über etwas stolpert, was ihr nach eurem jetzigen Wissen nur mit playerlib schafft, versucht es erst mit es.setplayerprop/es.getplayerprop:
<ul>
<li>
<pre lang="python">health = es.getplayerprop(userid, 'CBasePlayer.m_iHealth')
# anstatt:
health = playerlib.getPlayer(userid).get('health')
# oder:
es.setplayerprop(userid, 'CBasePlayer.m_iHealth', 100)
# anstatt:
playerlib.getPlayer(userid).set('health', 100)</pre>
</li>
</ul>
<p>es.getplayerprop/es.setplayerprop sind direkter und schneller als die playerlib-Methode, die playerlib-Methode ist dagegen einfacher gestaltet, mehr nicht (sie macht das Gleiche mit es.setplayerprop).#</li>
</ul>
</li>
<li>Da wir schon bei es.setplayerprop/es.getplayerprop sind:
<ul>
<li>es.getplayerprop gibt IMMER einen Integer zurück (Ganzzahl). Da in Python ein Integer von 0 auch als <span style="color: #993366;">False</span>, und ein Integer von 1 aufwärts bzw. -1 abwärts als <span style="color: #993366;">True</span> zählt, braucht man hier in manchen fällen kein == (equals to), einfach mit if bzw if not / else:
<pre lang="python"># True (Health Points):
if es.getplayerprop(userid, 'CBasePlayer.m_iHealth'):
    es.msg('Health: More or Less than 0!')

# False (Health Points):
else:
    es.msg('Health: == 0!')

# Anmerkung: Ob der Spieler tot ist, wird NICHT mit den Health-Points überprüft:
if es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'):
    es.msg("He's dead!")
else:
    es.msg("He's alive!")</pre>
</li>
</ul>
</li>
</ul>
<p>Das wär&#8217;s erstmal =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jlip.de/merkmale-von-esp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Voraussetzungen für EventScripts Python (ESP)</title>
		<link>http://www.jlip.de/voraussetzungen-fur-eventscripts-python/</link>
		<comments>http://www.jlip.de/voraussetzungen-fur-eventscripts-python/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 15:14:25 +0000</pubDate>
		<dc:creator>BackRaw</dc:creator>
				<category><![CDATA[EventScripts Python]]></category>

		<guid isPermaLink="false">http://www.jlip.de/?p=82</guid>
		<description><![CDATA[Ihr müsst die folgenden Menüpunkte unbedingt befolgen, um mit EventScripts Python zu starten: Python-Tutorials durchlesen, lernen und einpregen (ich werde darauf aufbauen und keine weiteren Funktionen/Klassen (außer die von ESP) erklären) Einen Source Dedicated Server (SRCDS) installieren EventScripts und installieren (ES ist linux- und windowskompatibel): Downloaden (die für euch geeignete Version, Source oder Orange Box) [...]]]></description>
			<content:encoded><![CDATA[<p>Ihr müsst die folgenden Menüpunkte unbedingt befolgen, um mit EventScripts Python zu starten:</p>
<ul>
<li><a href="http://www.jlip.de/ka/python/">Python-Tutorials</a> durchlesen, lernen und einpregen (ich werde darauf aufbauen und keine weiteren Funktionen/Klassen (außer die von ESP) erklären)</li>
</ul>
<ul>
<li><a href="http://forums.eventscripts.com/viewtopic.php?t=17875">Einen Source Dedicated Server (SRCDS) installieren</a></li>
</ul>
<ul>
<li>EventScripts und installieren (ES ist linux- und windowskompatibel):</li>
</ul>
<ol>
<li><a href="http://mattie.net/cs/">Downloaden</a> (die für euch geeignete Version, Source oder Orange Box) des entsprechenden Releases (Link oben)</li>
<li>Den Release nach <strong>./cstrike</strong> entpacken oder auf den Server hochladen (in <strong>./cstrike</strong> sollte nun ein Ordner namens &#8220;addons&#8221; erscheinen)</li>
<li>Server neustarten (<strong>quit</strong> in die Server-Console eingeben und Enter)</li>
<li>Prüfen der Installation: gebt in der Server-Console <strong>eventscripts_ver</strong> ein. Sollte die Meldung &#8220;Unknown Command: eventscripts_ver&#8221; erscheinen, folgt den Schritten der Installation nochmals.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.jlip.de/voraussetzungen-fur-eventscripts-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello World</title>
		<link>http://www.jlip.de/hello-world/</link>
		<comments>http://www.jlip.de/hello-world/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 13:26:43 +0000</pubDate>
		<dc:creator>BackRaw</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jlip.de/?p=74</guid>
		<description><![CDATA[Zuerst braucht ihr das Python-Paket, das ihr hier bekommt (Linux-Anwender müssen die Schritte des Downloads nicht folgen, da bei den meisten Linux-Distrubition bereits ein geeigneter Release enthalten ist). Ihr solltet den für eure Architektur geeigneten Release downloaden, also z.B. bei einem 64-Bit Bertriebssystem, den amd64-Release downloaden, ganz wichtig: die für dieses Tutorial gedachte Version ist [...]]]></description>
			<content:encoded><![CDATA[<p>Zuerst braucht ihr das Python-Paket, das ihr <a href="http://python.org/download/">hier</a> bekommt (Linux-Anwender müssen die Schritte des Downloads nicht folgen, da bei den meisten Linux-Distrubition bereits ein geeigneter Release enthalten ist). Ihr solltet den für eure Architektur geeigneten Release downloaden, also z.B. bei einem 64-Bit Bertriebssystem, den amd64-Release downloaden, ganz wichtig: die für dieses Tutorial gedachte Version ist <strong>2.5/2.6</strong>.</p>
<p>Nachdem ihr das Paket installiert habt, ruft ihr die Python IDLE auf. Bei Windows startet ihr sie über das Startmenü. Bei Linux müsst ihr in einem Terminal &#8220;python&#8221; eingeben.</p>
<p><span id="more-74"></span></p>
<p>Wenn sich das Fenster geöffnet hat, könnt ihr schon anfangen, schreibt diesen Code in das Fenster nach den drei &gt;&gt;&gt;:</p>
<pre lang="python">print 'Hello World'</pre>
<p>Drückt Enter. Der Befehl <span style="color: #339966;">print</span> erzeugt eine Bildschirmausgabe, &#8216;Hello World&#8217; sollte in einer neuen Zeile erscheinen.</p>
<p><strong> &#8220;&lt;Text&gt;&#8221; und &#8216;&lt;Text&gt;&#8217;</strong>:</p>
<ul>
<li>&#8220;&lt;Text&gt;&#8221; und &#8216;&lt;Text&gt;&#8217; sind &#8220;untereinander kompatibel&#8221;, d.h. man kann einen Text entweder so gestalten:
<pre lang="python">"Hello 'World'"</pre>
<p>oder so:</p>
<pre lang="python">'Hello "World"'</pre>
</li>
<li>keine Geschwindigkeitsbegrenzungen oder dergleichen</li>
</ul>
<p>Damit wäre das erste Programm fertig geschrieben.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jlip.de/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einführung in Python</title>
		<link>http://www.jlip.de/einfuhrung-in-python/</link>
		<comments>http://www.jlip.de/einfuhrung-in-python/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 13:07:02 +0000</pubDate>
		<dc:creator>BackRaw</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jlip.de/?p=59</guid>
		<description><![CDATA[Python wurde im Jahre 1990 als Nachfolger der Lehrsprache ABC entwickelt und ursprünglich für das Betriebssystem Amoeba gedacht. Heutige Ziele von Python schnell und einfach übersichtlicher Quellcode (Python ist Open-Source) die einfachsten (mit einem Zeichen) Kommata mit # viele Libraries (Bibliotheken), die (meist kompliziertere) Aufgaben für euch übernehmen Außerdem ist Python (in der Version 2.5) [...]]]></description>
			<content:encoded><![CDATA[<p>Python wurde im Jahre 1990 als Nachfolger der Lehrsprache ABC entwickelt und ursprünglich für das Betriebssystem Amoeba gedacht.</p>
<p><span style="text-decoration: underline;"><strong>Heutige Ziele von Python</strong></span></p>
<ul>
<li>schnell und einfach</li>
<li>übersichtlicher Quellcode (Python ist Open-Source)</li>
<li>die einfachsten (mit einem Zeichen) Kommata mit <strong>#<br />
</strong></li>
<li>viele Libraries (Bibliotheken), die (meist kompliziertere) Aufgaben für euch übernehmen</li>
</ul>
<p><span id="more-59"></span></p>
<p>Außerdem ist Python (in der Version 2.5) eine als Scriptsprache gedachte, eingebettete Programmiersprache von <a href="http://www.mattie.net/">Mattie&#8217;s EventScripts</a> (<a href="http://forums.eventscripts.com/portal.php">Forum</a>). Mit diesen Plugin lässt sich auf die leichteste Weise Spielveränderungen der Source- und Orange-Box-Spiele von VALVe ändern &#8211; dazu zählen:</p>
<ul>
<li>Counter-Strike: Source</li>
<li>Day of Defeat: Source</li>
<li>Team Fortress 2</li>
<li>Half-Life 2 Mods, z.B. &#8220;<span>Age of Chivalry&#8221;, &#8220;Eternal Silence&#8221;, &#8220;ZombieMod: Source (Situation Outbeark)&#8221;, und weitere&#8230;</span></li>
<li><span>es wird gehofft, dass Left 4 Dead auch bald unterstützt wird (aber das hat nichts mit &#8220;zu hohen Ansprüchen des Spiels&#8221; oder dergleichen zu tun, sondern Mattie Casper hat einfach zu wenig Zeit dafür&#8230;</span></li>
</ul>
<p>Aussage von Mattie: &#8220;Ich werde EventScripts nicht auf die Python-Version 3 (Python 3000) upgraden, da es weder für erfahrene, noch für neu hinzugekommene EventScripts-Coder wirkliche Vorteile bringen würde.&#8221; (Kann vom Original-Post abweichen).</p>
<p><strong>Anmerkung</strong>: Python ist objektorientiert, das heißt, es kann von Klassen gebrauch machen <img src='http://harun2.alfahosting.org/jlip.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jlip.de/einfuhrung-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
