Meinung zum Programmcode

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
Lukas_25025
User
Beiträge: 13
Registriert: Sonntag 16. Mai 2021, 10:20

Hey Leute,
Ich hatte mal ein bisschen Langeweile und hab ein ziemlich sinnloses Programm geschrieben.
Da ich Python Anfänger bin, würde ich mich mal über eure Meinung zum Code freuen.
Unabhängig vom Sinn des Ganzen, wie ist der Code?

Code: Alles auswählen

from time import sleep

print('Hacking your computer is being prepared...')
for i in range(1, 5):
    print('...')
    sleep(0.5)

print('Successfuly penetrated the system...')
for i in range(1, 5):
    print('...')
    sleep(0.5)

print('Encrypt all datas...')
for i in range(1, 20):
    for j in [
       '%systemroot%\system32\imageres.dll',
        '%systemroot%\system32accessibilitycpl.dll',
        '%systemroot%\system32\ddores.dll',
        '%systemroot%\system32\shell32.dll',
        '%systemroot%\system32\pifmgr.dll',
        '%systemroot%\explorer.exe',
        '%systemroot%\system32\moricons.dll',
        '%systemroot%\system32\mmcndmgr.dll',
        '%systemroot%\system32\mmres.dll',
        '%systemroot%\system32netcenter.dll',
        '%systemroot%\system32netshell.dll'
    ]:
        print('Encrypt of', j)
        sleep(0.1)

print('All datas are encrypted...')
sleep(5)

print('You have to pay 1 Million Dollars to decrypt the datas.')
sleep(5)
input()
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

data ist bereits Mehrzahl. Datas gibt es also nicht. Range von 1 starten wenn man es nicht braucht ist unnötig kompliziert. range(4) statt range(1,5) ist klarer. Bei encrypt braucht man die Verlaufsform “encrypting”.

Und dann gehört natürlich kein Code auf die oberste Ebene. Sondern in eine Main-Funktion.
Lukas_25025
User
Beiträge: 13
Registriert: Sonntag 16. Mai 2021, 10:20

@ __deets__
Dann müsste es so stimmen, ja?

Code: Alles auswählen

from time import sleep
def main():
    print('Hacking your computer is being prepared...')
    for i in range(4):
        print('...')
        sleep(0.5)

    print('Successfuly penetrated the system...')
    for i in range(4):
        print('...')
        sleep(0.5)
    sleep(2)

    print('Encrypting all data...')
    sleep(2)
    for i in range(19):
        for j in [
           '%systemroot%\system32\imageres.dll',
            '%systemroot%\system32accessibilitycpl.dll',
            '%systemroot%\system32\ddores.dll',
            '%systemroot%\system32\shell32.dll',
            '%systemroot%\system32\pifmgr.dll',
            '%systemroot%\explorer.exe',
            '%systemroot%\system32\moricons.dll',
            '%systemroot%\system32\mmcndmgr.dll',
            '%systemroot%\system32\mmres.dll',
            '%systemroot%\system32netcenter.dll',
            '%systemroot%\system32netshell.dll'
        ]:
            print('Encrypting', j)
            sleep(0.1)

    print('All data are encrypted...')
    sleep(3)

    print('You have to pay 1 Million Dollars to decrypt the data.')
    sleep(5)
    input()

if __name__ == "__main__":
    main()
Benutzeravatar
Dennis89
User
Beiträge: 1556
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

wenn du 'range' benutzt um eine Schleifenlänge zu definieren und den Namen 'i' nicht benötigst, wird man inPython typischerweise ein Unterstrich als Name verwenden.
Dein 'input' am Schluss macht gar nichts.

Du kannst den Code dazu nutzen um mal mit Funktionen zu arbeiten. Es muss ja nicht alles in der 'main' Funktion stehen.

Dann kannst du deinen Code irgendwie zum Beispiel so aufbauen:

Code: Alles auswählen

#!/usr/bin/env python3

from random import choice
from time import sleep

DATA = [
    "%systemroot%\system32\imageres.dll",
    "%systemroot%\system32accessibilitycpl.dll",
    "%systemroot%\system32\ddores.dll",
    "%systemroot%\system32\shell32.dll",
    "%systemroot%\system32\pifmgr.dll",
    "%systemroot%\explorer.exe",
    "%systemroot%\system32\moricons.dll",
    "%systemroot%\system32\mmcndmgr.dll",
    "%systemroot%\system32\mmres.dll",
    "%systemroot%\system32netcenter.dll",
    "%systemroot%\system32netshell.dll",
]


def prepare_computer():
    for _ in range(4):
        print("...")
        sleep(0.5)
    return True


def search_for_data():
    for _ in range(4):
        print("...")
        sleep(0.5)
    return choice([True, False])


def encrypting_data():
    for _ in range(19):
        for file in DATA:
            print(f"Encrypting {file}")
            sleep(0.1)
    print("All data are encrypted...")


def blackmail_user():
    while True:
        payment = input("You have to pay 1 Million Dollars to decrypt the data: ")
        if int(payment) >= 1000000:
            print("Danke und Tschüss")
            break
        else:
            print("Sei nicht so geizig")


def main():
    print("Hacking your computer is being prepared...")
    if prepare_computer():
        print("Successfuly penetrated the system...")
        if search_for_data():
            print("Encrypting all data...")
            sleep(2)
            encrypting_data()
            blackmail_user()
        else:
            print("No data found")
    else:
        print("Cant not prepare the computer")


if __name__ == "__main__":
    main()

Durch die Zeile 30 sollte das Ergebnis des Codes nicht immer das gleiche sein.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Lukas_25025
User
Beiträge: 13
Registriert: Sonntag 16. Mai 2021, 10:20

@Dennis89
Da muss ich mich jetzt erstmal intensiver mit beschäftigen, bis ich den Code bis zum Ende verstanden habe, aber ich geb mir Mühe
Benutzeravatar
Dennis89
User
Beiträge: 1556
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

https://docs.python.org/3.9/tutorial/index.html
Diese Seite sollte dir dabei helfen.

Viel Spass
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten