Anfänger Programm ...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
BaIs
User
Beiträge: 5
Registriert: Sonntag 27. September 2009, 10:33

hallo ich bin jetzt neu bei python und außer schul informatik mit delphi auch neu beim programmieren.. um in python reinzukommen und ein programm anfang der villeicht später mal bei einem richtigen programm hilft habe ich folgendes geschrieben:

Code: Alles auswählen

keys = ['afhgf','fdgkj','öjhfg','pofdj','agjsa','mefja','üfjse','asägn','eefjs','asfne','pfjsn','nfoef','sopef','ncpee','spfns']
list = []
num = 1
y= raw_input('Anzahl: ')
x= raw_input('Objekt: ')
while num <= y:
    list.append(x+str(num))
    num +=1

pairs = {}
zaehler= 0

for i in list:
    key = keys[zaehler]
    zaehler = zaehler+1
    pairs[i] = key
das problem ist das es sich aufhängt beim starten.
wahrscheinlich bei der while schleife wenn ich den breakpoint richtig gesetzt habe.

aber warum?

das programm soll eine liste erstellen mit objekten wie z.b einem PC und jedem dieser PCs dann einen key zuordnen. Objekt und Anzahl werden von user eingegeben.

hoffe ich bin hier in der rubrik richtig .. :D
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Eig. bist du in der falschen rubrik!

Code: Alles auswählen

while num <= y:
    list.append(x+str(num))
    num +=1
num = Eine Integer (Ganzzahl)
y = Usereingabe mit raw_input => String

Deswegen wird die Schleife nicht funktionieren, um einen String in eine Integer zu verwandeln:

Code: Alles auswählen

y = int(y)
//EDIT: noch was:
Der funktionierende Code:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

keys = ['afhgf','fdgkj','öjhfg','pofdj','agjsa','mefja','üfjse','asägn','eefjs','asfne','pfjsn','nfoef','sopef','ncpee','spfns']
list = []
num = 1
y= raw_input('Anzahl: ')
y = int(y)
x= raw_input('Objekt: ')
while num <= y:
    list.append(x+str(num))
    num +=1

pairs = {}
zaehler= 0

for i in list:
    key = keys[zaehler]
    zaehler = zaehler+1
    pairs[i] = key

print 'Die Liste:', list
print 'Das Dict:', pairs
Du verwendest in deiner Liste 'keys' ö, ü, ä etc verwendest, dazu musst du im Header das richtige encodeing wählen:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
Ich versteh zwar den Sinn von dem Code nicht aber naja, für irgendwas wird er schon gut sein

Ach die Ausgabe

Code: Alles auswählen

Anzahl: 10
Objekt: Test
Die Liste: ['Test1', 'Test2', 'Test3', 'Test4', 'Test5', 'Test6', 'Test7', 'Test
8', 'Test9', 'Test10']
Das Dict: {'Test1': 'afhgf', 'Test3': '\xc3\xb6jhfg', 'Test2': 'fdgkj', 'Test5':
 'agjsa', 'Test4': 'pofdj', 'Test7': '\xc3\xbcfjse', 'Test6': 'mefja', 'Test9':
'eefjs', 'Test8': 'as\xc3\xa4gn', 'Test10': 'asfne'}
the more they change the more they stay the same
BlackJack

@BaIs: Das mit dem falschen Typ beim Vergleich hat Dir Dav1d ja schon gesagt.

In Python sollte man in Schleifen keine Zähler "von Hand" hochzählen, dafür gibt es ``for``-Schleifen und `xrange()` oder `enumerate()`.

Das was Du da `keys` bzw. `key` nennst, wird im Programm als Wert und nicht als Schlüssel verwendet. Das ist verwirrend.

`list` ist ein Name, der schon vergeben ist, den sollte man nicht überschreiben.

Ansonsten kommt man auch ohne "äussere" Schleifen aus:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8


def main():
    values = ['afhgf', 'fdgkj', 'öjhfg', 'pofdj', 'agjsa', 'mefja', 'üfjse',
              'asägn', 'eefjs', 'asfne', 'pfjsn', 'nfoef', 'sopef', 'ncpee',
              'spfns']

    object_count = int(raw_input('Anzahl: '))
    object_name = raw_input('Objekt: ')
    a_list = [object_name + str(n + 1) for n in xrange(object_count)]

    pairs = dict(zip(a_list, values))
    
    print a_list
    print pairs


if __name__ == '__main__':
    main()
BaIs
User
Beiträge: 5
Registriert: Sonntag 27. September 2009, 10:33

hallo vielen dank für die hilfe ..
ja das programm hat noch keinen großen sinn aber ich habe es zur übung benutzt...
später wenn ich mehr erfahrung mit python habe wage ich mich an ein projekt das die windows xp lizenzen der computer verwaltet und dann bei opsi einfügt ( opsi sagt hier villeicht einigen was) .. naja aber bis dahin wirds wohl noch was dauern :roll:

folgendes verstehe ich jedoch noch nicht ..

Code: Alles auswählen

if __name__ == '__main__':
    main()
was überprüft das programm hier? und wenn es gleich ist dann führt es die function aus oder??
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Einfach mal nach googlen. Bei mir reichte schon ``if __n`` für die autovervollständigung :)
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
BaIs
User
Beiträge: 5
Registriert: Sonntag 27. September 2009, 10:33

ok vielen dank habe es auch gefunden ...
dachte es wäre etwas spezifisches im programm und keine allgemeine methode .. :lol:
Antworten