Re: Neuling sucht Rat
Verfasst: Freitag 5. April 2013, 21:50
@BlackJack: *Der* Kalkül. Auch wenn's komisch klingt. 

Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
import random
def tabellenkopf():
print("{0:15}{1:15}{2:15}{3:15}{4:15}".format("Tag","KM Stand","KM Stand","KM in eine","Gesamt KM"))
print("{0:15}{1:15}{2:15}{3:15}{4:15}".format(" ","Fahrtbeginn", "Fahrtende", "Richtung"," "))
def erzeugenTabelle(kmStand, arbeitsTage):
zuschussStrecke = 0
for i in range(1,arbeitsTage+1,1):
fahrtStreckeGesamt = random.randint(80,83)
fahrtStreckeEinfach = fahrtStreckeGesamt/2
ChancePrivat = random.randint(1,4)
if ChancePrivat == 1:
privatStrecke = random.randint(5,25)
else:
privatStrecke = 0
print("{0:15}{1:15}{2:15}{3:15}{4:15}".format(i, kmStand, kmStand+fahrtStreckeGesamt, fahrtStreckeEinfach, fahrtStreckeGesamt))
kmStand = fahrtStreckeGesamt + kmStand + privatStrecke
zuschussStrecke += fahrtStreckeEinfach
return zuschussStrecke
def berechnungZuschuss(zuschussStrecke):
zuschussJeKM = 0.17
zuschuss = zuschussStrecke * zuschussJeKM
print("Der Zuschuss beträgt {0:5.2f} Euro".format(zuschuss))
#Hauptprogramm
x=0
while x==0:
kmStand = input("Kilometerstand am Ende des letzten Monats: ")
try:
kmStand = int(kmStand)
x=1
except:
print("Falsche Eingabe")
continue
x==1
while x==1:
arbeitsTage = input("Wieviel Tage wurden diesen Monat gearbeitet: ")
try:
arbeitsTage = int(arbeitsTage)
x=0
except:
print("Falsche Eingabe")
continue
tabellenkopf()
zuschussStrecke = erzeugenTabelle(kmStand, arbeitsTage)
berechnungZuschuss(zuschussStrecke)
Code: Alles auswählen
def tabellenkopf():
print("{0:15}{1:15}{2:15}{3:15}{4:15}".format("Tag","KM Stand","KM Stand","KM in eine","Gesamt KM"))
print("{0:15}{1:15}{2:15}{3:15}{4:15}".format(" ","Fahrtbeginn", "Fahrtende", "Richtung"," "))
Code: Alles auswählen
def erzeugenTabelle(kmStand, arbeitsTage):
zuschussStrecke = 0
for i in range(1,arbeitsTage+1,1):
fahrtStreckeGesamt = random.randint(80,83)
fahrtStreckeEinfach = fahrtStreckeGesamt/2
ChancePrivat = random.randint(1,4)
if ChancePrivat == 1:
privatStrecke = random.randint(5,25)
else:
privatStrecke = 0
print("{0:15}{1:15}{2:15}{3:15}{4:15}".format(i, kmStand, kmStand+fahrtStreckeGesamt, fahrtStreckeEinfach, fahrtStreckeGesamt))
kmStand = fahrtStreckeGesamt + kmStand + privatStrecke
zuschussStrecke += fahrtStreckeEinfach
return zuschussStrecke
Code: Alles auswählen
def berechnungZuschuss(zuschussStrecke):
zuschussJeKM = 0.17
zuschuss = zuschussStrecke * zuschussJeKM
print("Der Zuschuss beträgt {0:5.2f} Euro".format(zuschuss))
Code: Alles auswählen
#Hauptprogramm
x=0
while x==0:
kmStand = input("Kilometerstand am Ende des letzten Monats: ")
try:
kmStand = int(kmStand)
x=1
except:
print("Falsche Eingabe")
continue
x==1
while x==1:
arbeitsTage = input("Wieviel Tage wurden diesen Monat gearbeitet: ")
try:
arbeitsTage = int(arbeitsTage)
x=0
except:
print("Falsche Eingabe")
continue
Code: Alles auswählen
>>> ueberschriften = ["Tag","KM Stand","KM Stand","KM in eine","Gesamt KM"]
>>> kopfzeile = ''.join('{:15}'.format(text) for text in ueberschriften)
>>> print(kopfzeile)
Tag KM Stand KM Stand KM in eine Gesamt KM
Code: Alles auswählen
def gib_kopfzeile(ueberschriften):
return ''.join('{:15}'.format(text) for text in ueberschriften)
print(gib_kopfzeile(["Tag","KM Stand","KM Stand","KM in eine","Gesamt KM"]))
Code: Alles auswählen
>>> print((len(ueberschriften) * '{:15}').format(*ueberschriften))
Tag KM Stand KM Stand KM in eine Gesamt KM
Code: Alles auswählen
>>> print(*map('{:15}'.format, ueberschriften), sep='')
Tag KM Stand KM Stand KM in eine Gesamt KM
Code: Alles auswählen
def gib_kopfzeile_aus(ueberschriften, spaltenbreite=15):
vorlage = '{{:{}}}'.format(spaltenbreite)
print(*map(vorlage.format, ueberschriften), sep='')
Code: Alles auswählen
from itertools import zip_longest, chain
import random
def input_int(prompt):
"""Input an int"""
while True:
try:
return int(input(prompt))
except ValueError:
print("Falsche Eingabe")
def str_table(header, data, column_width=15):
"""Convert table to string representation"""
header_lines = [text.split('\n') for text in header]
head = zip_longest(*header_lines, fillvalue='')
template = "{{:{}}}".format(column_width)*len(header)
return '\n'.join(template.format(*line)
for line in chain(head, data))
def create_table(km_stand, arbeits_tage):
result = []
zuschuss_strecke = 0
for tag in range(1,arbeits_tage+1):
fahrtstrecke_gesamt = random.randint(80,83)
fahrtstrecke_einfach = fahrtstrecke_gesamt/2
privatstrecke = random.randint(5,25) if random.randint(1,4)==1 else 0
result.append((tag, km_stand, km_stand+fahrtstrecke_gesamt, fahrtstrecke_einfach, fahrtstrecke_gesamt))
km_stand += fahrtstrecke_gesamt + privatstrecke
zuschuss_strecke += fahrtstrecke_einfach
return result, zuschuss_strecke
def calc_zuschuss(zuschuss_strecke):
return 0.17 * zuschuss_strecke
HEADER = ("Tag","KM Stand\nFahrtbeginn","KM Stand\nFahrtende","KM in eine\nRichtung","Gesamt KM")
def main():
km_stand = input_int("Kilometerstand am Ende des letzten Monats: ")
arbeits_tage = input_int("Wieviel Tage wurden diesen Monat gearbeitet: ")
data, zuschuss_strecke = create_table(km_stand, arbeits_tage)
zuschuss = calc_zuschuss(zuschuss_strecke)
print(str_table(HEADER, data))
print("Der Zuschuss betraegt {0:5.2f} Euro".format(zuschuss))
if __name__=='__main__':
main()
Code: Alles auswählen
with open('datei','w') as output:
output.write(str_table(HEADER, data))
Code: Alles auswählen
import csv
with open('datei.csv','w') as output:
csv_out = csv.writer(output)
csv_out.writerow(HEADER)
csv_out.writerows(data)
Du hast halt noch nicht die Erfahrung, um zu wissen, dass es auch anders geht. Zum einen muss man ja erstmal die Standardbibliothek von Python sowie dessen Sprachmittel in ausreichendem Umfang kennen. Und zum anderen ist auch die "Programmier-Denke", sowie die Fähigkeit, möglichst idiomatischen Code in der jeweiligen Sprache (anders ausgedrückt: "sprachtypischen" Code) zu schreiben, eine reine Trainingssache, wenn du so willst.Tengel hat geschrieben:Also hab ich mal wieder die schlechteste Möglichkeit getroffen ja -.-" ....is auch ein Talent
Code: Alles auswählen
import sqlite3
#Verbindung zur Datenbank erzeugen
connection = sqlite3.connect("firma.db")
#Datensatzcursor erzegen
cursor = connection.cursor()
#Tabelle erzeugen
sql = "Create Table personen("\
"name Text,"\
"vorname Text,"\
"personalnummer INTEGER PRIMARY KEY,"\
"gehalt FLOAT,"\
"geburtstag TEXT)"
cursor.execute(sql)
#Datensatz erzeugen
sql = "Insert INTO personen VALUES('Maier',"\
"'Hans',6714, 3500,'15.03.1962')"
cursor.execute(sql)
connection.commit()
#Datensatz erzeugen
sql = "Insert INTO personen VALUES('Schmitz',"\
"'Peter', 81343, 3750, '12.04.1958')"
cursor.execute(sql)
connection.commit()
connection.close()
Code: Alles auswählen
import sqlite3
connection = sqlite3.connect("firma.db")
cursor = connection.cursor()
cursor.execute("""CREATE TABLE personen (
name TEXT,
vorname TEXT,
personalnummer INTEGER PRIMERY KEY,
gehalt FLOAT,
geburtstag DATE
)""")
INSERT_PERSON = """INSERT INTO personen (
name, vorname, personalnummer, gehalt, geburtstag
) VALUES (:name, :vorname, :personalnummer, :gehalt, :geburtstag)"""
cursor.executemany(INSERT_PERSON, [
{'name':'Maier', 'vorname':'Hans', 'personalnummer': 6714,
'gehalt': 3500, 'geburtstag':'15.03.1962'},
{'name':'Schmitz', 'vorname':'Peter', 'personalnummer': 81343,
'gehalt': 3750, 'geburtstag':'12.03.1958'},
])
connection.commit()
connection.close()
Genau so ist es. Daher habe ich das gefühl dass je dicker ein Buch wird, desto wertloser, weil dann alles mögliche an Quatsch besprochen wird und vieles davon zweifelhafter Qualität weils reingehamstert wird. Da lobe ich mit K&R oder The D Programming Language, gerade letzteres geht echt in die Tiefe aber bleibt immer relevant. Ich denke so 300-400 Seiten ist das Optimum. Den Vogel abgeschossen aht Programming Python, wo die damals aktuelle Fassung Grail besprochen hat, einen Browser der damals schon seit ca. 10 Jahren tot war. Einfach aus der vorherigen Ausgabe übernommen, ohne zu schauen ob es relevant ist.Sirius3 hat geschrieben:solche Bücher sind meistens so aufgebaut, dass sie alles ein bisschen abdecken. Dabei wird meist leider mehr Wert auf Quantität statt auf Qualität gesetzt, weil man auf dem Umschlag eine sehr lange Liste an Themen aufführen kann.
PHP-Bücher machen das auch so!!!1!Sirius3 hat geschrieben:Warum man für ein Internet-Kapitel in Python Apache braucht müsste mir mal der Autor noch erklären???