.....
Globale Variablen können dir in größeren Projekten einen Strich durch die Rechnung machen wenn diese dann "falsch" oder nicht beabsichtigt überschrieben wird.
Dadurch kann es zu vielen Fehlern kommen.
Sinnvoll ist immer lokal zu arbeiten also kleiner Zugriffsradius. Sofern aber benötigt oder sinnvoller soviel wie benötigt.
Ich nutze Globals eigentlich nur wenn die variablen zum Beispiel bei pygame ein Surface ist und ich diesen ohne Probleme überall nutzen will. Eben gleiches gilt dann auch für die Parameter die bei laufzeit verändert werden sollen.
Wann und wie du diese nutzt musst du selber wissen und im Endeffekt gibt es da kein Richtig oder Falsch wenn es läuft. Bedenke aber wie bereits erwähnt bei größeren Projekten kann es dadurch Probleme geben.
wofür min max?
einfach alles miteinander addieren und für jede addition nen counter laufen lassen dann summe durch counter easy.
liste = [25,51]
sum = 0
for nr,add in enumerate(liste):
sum += add
sum = sum / (nr+1)
print(sum)
müsste so jetzt funktionieren.
Programmiersprachen:
c#(geht), Python(gut),java(meh)
Skriptsprachen:
Batch/CMD(seit ü 10 Jahren damit am arbeiten),GML(sehr gut),Lua(selten benutzt aber lief immer glatt)
Schau dir mal an welchen Inhalt die variable trägt.
Der Inhalt von sys.argv[0] ist immer der Dateiname somit klar das es nicht funktioniert wenn du dem Programm Kauderwelsch übergibst welches nicht versteht.
Also versuche es mit sys.argv[1] und darauf überprüfe aber erst ob die variable da es eine Liste ist überhaupt 2 lang ist.
if len(sys.argv) < 2:
sys.exit()
Überprüfe auch am besten nochmal ob es sich überhaupt um eine Zahl handelt.
Ja die gibt es:
auto-py-to-exe ist hier die Antwort und es wirklich sehr easy.
#cmd öffnen
pip install auto-py-to-exe
falls es nicht geht hier ein Tutorial zu Thema pip:
https://www.youtube.com/watch?v=fA2Y99-AB8g
Danach nochmal falls es beim ersten mal nicht klappen sollte.
Darauf gibst du in CMD einfach nur "auto-py-to-exe" ein und stellst alles ein was du brauchst.
Dafür noch ein Tutorial: https://www.youtube.com/watch?v=HYHHzh7dju4
Geht jetzt nicht direkt ums Thema aber..
ich hätte ich den Code noch einiges verkürzt um ein wenig Übersichtlichkeit zu schaffen:
alle Konstanten in eine Reihe,
das zweite print weg und eine neue Zeile mit eine Escape Sequenz machen "\n" ansonsten so:
f"""
Ich bin ein Text:
{IP}
{sys.argv}
Hier sparst du dir die Escape Sequenzen sofern du im Editor auch immer eine Zeile nach unten gehst.
"""
die imports in eine Reihe
sys.argv brauchst du eigentlich nicht extra in eine neue variable legen.
Und weil ich piki und Deutsch bin du hast "Phyton" geschrieben im ersten Bild auf dem ersten Task beim Ordner ist es sichtbar xD
List Index out of range bedeutet das der Platz in einer Liste nicht erreichbar ist.
Dementsprechend falls der User keine oder unzureichende Argumente angibt:
import sys
maxnr = 2
try:
for nr, i in enumerate(sys.argv):
chk = i #0 Ist IMMER der Dateipfad und Name
if nr == maxnr:
break
except:
print("Unzureichende Argumente!")
sys.exit()
import time
time.sleep(60)
time übernimmt alles in Sekunden dementsprechend 60 Sekunden Wartezeit und danach gehts dann weiter
Ganz einfach:
#Speichern
f = open("save.txt","a",encoding="utf-8")
for i in liste:
f.write(str(i) + ":")
f.close()
#Laden
liste = []
with open("save.txt",encoding="utf-8") as file:
for line in file:
liste.append(line.split("\n")[0])
Man könnte daran noch ordentlich was machen aber es läuft.
Hier hast du etwas Auswahl:
Tic Tac Toe (Mathematische Siegerermittlung) sowie einen leichten Bot. Meiner war 23 Zeilen lang. Der erste von vor einem halben Jahr bald 100
Mau Mau
Youtube Downloader
Youtube Playlistdownloader
Speech Recognitition Bot
Dateien schreiben und lesen in einem Programm
Audio Aufnahme Programm
Bildskalierer
webblocker
pong
zahlen erraten
quiz game
Je nach dem was du willst...
Pixelart oder Realistisch?
Soll das Projekt nur einen Tag brauchen oder den Rest eines normalsterblichen Lebens?
Aber ich empfehle immer mit Pygame zu arbeiten.
Im Grunde ist der Code dafür recht einfach wenn wir jetzt annehmen wir wollen nur 16 Farben von 0-9 und von A-F und nur einen Stift sowie einen Radierer.
Genaueres könnte ich dir sagen wenn ich etwas mehr Infos habe.
auto-py-to-exe wäre eine Möglichkeit das ganze umzusetzen.
Damit wäre es so nicht mehr möglich den Code zu bearbeiten und du brauchst dann auch nicht mehr Python installiert haben um es auszuführen.
Im letzten Punkt kann ich mich allerdings auch irren! Ich bin auch grade zu faul meinen Dampfbetriebenen Laptop aus dem Schrott zu holen.
Bei dem wirr warr kann auch nichts funktionieren.
Ich gebe dir ein paar Tipps also erstens fange lieber einmal komplett von vorne an. Grundlegende Kenntnisse für Python fehlen dir komplett und das du 300€ für einen Kurs ausgegeben hast naja war es wohl nicht Wert.
Es gibt auf Youtube eine Menge Tutorials die dich erstmal an das OOP herantasten lassen und dir einen groben Überblick geben.
Wenn du damit durch bist programmierst du aus eigener Hand erstmal andere Projekte nicht mit Pygame! Sondern ohne andere Libarys zu nutzen.
Beispielsweise einmal Tic Tac Toe oder Zahlen erraten. Da gibt es jede Menge Anfänger Projekte.
Ich glaube zwar nicht das dein Space Invaders stand jetzt was wird aber ich habe hier einmal in 20 lines of Code alles nötige zusammengefasst.
Trotzdem empfehle ich dir auch mal die Documentation von Pygame zu lesen:
import pygame as pg,sys
pg.init()
width , height , fps = 800 , 600 , 30
pg.display.set_caption("Testprogramm für Einsteiger.")
WIN = pg.display.set_mode((width,height))
clk = pg.time.Clock()
def draw_update():
WIN.fill((255,255,255))
pg.display.update()
def main():
run = True
while run:
clk.tick(fps)
draw_update()
for event in pg.event.get():
if event.type == pg.QUIT:
run = False
pg.quit()
sys.exit()
main()
Gutes Gelingen :D
list = {'Maier', 'Bauer', 'Moser', 'Martin'}
Hier könnte es sein das du eine Liste erstellen wolltest?
Listen werden in [Eckigen Klammern gesetzt.] Du hast dort ein Dictonary erstellt.
for i in range(0, 3)
Dort fehlt ein Doppelpunkt. An der If Abfrage bei name auch.
name = L[i]
Hier würde ich simpel einen Counter hochzählen lassen. Wenn er sofern der Name mit "M" anfängt und erst am Ende die Ausgabe machen.
Ich habe das ganze hier einfach mal nachgebaut so wie ich es machen würde:
l = ['Maier', 'Bauer', 'Moser', 'Martin']
count = -1
rng = 4
for i in range(rng):
print(i)
name = l[i]
if name[0] == 'M':
count +=1
if count == i:
print(f'Alle Namen fangen mit M an {count},{i}')
else:
print(f'Nicht alle Namen fangen mit M an {count},{i}')
So müsste es funktionieren. Je nach Länge der Liste musst du nur den Wert "rng" anpassen
Ich kann dir sagen:
Ich arbeite selbst derzeit mit python und pygame und ja das kannst du tun und das wäre auch durchaus empfehlenswert um eine Sprache noch besser kennenzulernen. Von meiner Seite ich programmiere seit 2 Wochen davon 5 Tage an dem Spiel und naja hab einiges gelernt unter anderem:
Optimierung, Kollisionserkennung und naja in meinem Fall habe ich tatsächlich das erste mal wirklich Klassen und Funktionen nutzen müssen.
Es ist durchaus Sinnvoll ja wenn allerdings mehr als ein kleines Indigame 2D,3D drin sein soll dann musst du bei python ordentlich ackern.
Da kommt es ganz darauf an was möchtest du für ein Spiel machen?
Also ich zum Beispiel arbeite grade an einem Mix aus Space Invaders und Flappy Bird und dafür reichts auf jeden Fall.
Aber selbst hier zum Beispiel sitzt die Framerate dank Cpu Limitation und nicht genug Erfahrung im Keller: