Weiter Python in C-Sprache

Einführung

Überraschenderweise scheint es einige Leute zu geben, die B4 geworden sind und nur C als Programmiersprache verwenden können. Nun, es ist wahr, dass die Klasse sich nur öffentlich mit C-Sprache befasst, und natürlich ist es natürlich. Es wäre jedoch sehr ineffizient, jedes Mal die Sprache C zu verwenden, um eine kleine Berechnung oder einen kleinen Algorithmus zu implementieren. Deklariere eine Variable ~, sicherer Speicher ~, oh, ich habe das Semikolon vergessen. Es ist mühsam.

Ich denke, Python ist ein guter Weg, um ein Prototyp-Programm zu erstellen. Um ehrlich zu sein, ich weiß nicht viel über andere, aber ich denke, Python ist vorerst in Ordnung.

Ich bin überhaupt kein Meister von Python, aber vorerst ist es notwendig und ausreichend, ein Programm mit den Kenntnissen, die ich in C-Sprache gemacht habe, richtig zu schreiben.

Da mir im Adventskalender nichts zum Schreiben einfällt, habe ich beschlossen, einen einführenden Python-Artikel für diejenigen zu schreiben, die die C-Sprache durchlaufen haben. Das Ziel ist hauptsächlich B3 oder weniger und nicht B3 oder weniger. Übrigens habe ich bisher nur Python2-Serien verwendet, aber ich dachte, wenn ich mich hier mit Python3-Serien beschäftige, wäre dies meine eigene Studie, also habe ich mich für Python3-Serien entschieden.

Umgebung

Ah, öffnen Sie das Terminal mit Ubuntu 16.04 LTS und sagen Sie, dass es schwierig ist, eine Umgebung aufzubauen.

Ich meine,

Python 3.5.2 (default, Nov 17 2016, 11:45:14)


[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.

Es wird sein. Da es sich im Eingangsannahmezustand befindet, stoppen wir es vorerst mit Strg-D. (Dies wird als interaktive Shell bezeichnet und in diesem Artikel nicht erwähnt.)

Tatsächlich ist Python 3 bereits in Ubuntu. Du hast es geschafft. (Übrigens, wenn Sie "Python" anstelle von "Python3" machen, funktioniert Python2.)

Ich bin eine andere Person als Ubuntu, aber ich glaube nicht, dass ich mir Sorgen mache, weil Leute, die normalerweise anderes Linux verwenden, starke Leute sind. Oder besser gesagt, lesen Sie diesen Artikel nicht. Es ist peinlich. Für Windows-Benutzer können Sie die Software von der offiziellen Python herunterladen, und ich denke, es wäre schön, Bash unter Ubuntu unter Windows oder VMware zu verwenden, um Ubuntu virtuell zu installieren. Es könnte für andere Zwecke verwendet werden. Mac Person? Ich habe einen Mac, also überzeugen Sie sich selbst auf dem Mac vor Ihnen. (Ich weiß nicht, ob es von Anfang an mit Ubuntu kommen wird.)

Harova

Lassen Sie uns das erste berühmte Programm sofort zum Laufen bringen. Erstellen Sie die folgende Datei, indem Sie sie entsprechend benennen, z. B. print.py mit vim oder emacs.

print.py


print("Fuck eeic")

An der Kommandozeile

$ python3 print.py


Wenn ich es tue

Es wird sein. Es ist wirklich einfach. Kompilieren gibt es nicht. Semikolon? Sie sollten mit einem Zeilenumbruch raten. Ich werde das Speichern oder Ausführen von Dateien nicht mehr erwähnen, also gehen wir auf die gleiche Weise weiter und weiter.

Variable

In Python müssen Sie keine Variablen deklarieren. Bitte geben Sie einfach an, was Sie ersetzen möchten. Sie können sogar von einer Zeichenfolge in eine Ganzzahl umwandeln. Wenn Sie einen Fehler machen, wird beim Ausführen der Programmierung ein Fehler angezeigt. Tun Sie dies vorerst und fördern Sie Ihren Geist.

calc.py


a = "3"
b = 2
c = int(a) / b
print(a, b, c)

3 2 1.5

Im Gegensatz zur C-Sprache und im Gegensatz zu Python2 scheint Python3 Ganzzahlen / Ganzzahlen als Brüche zu verwenden. Ich irre mich oft, deshalb bin ich dankbar. Wenn Sie den Operator ein wenig ändern und c = int (a) // b setzen, ist dies wie üblich ein ganzzahliger Wert.

Steueranweisung

if, for und while. while ist relativ gleich, aber if ist ein wenig und for unterscheidet sich von der Oita C-Sprache.

Auf jeden Fall ist "Einzug" der einzigartigste. In der Sprache C wird der Bereich durch Klammern angegeben, in Python wird der Steuerungsbereich durch : und Einzug angezeigt.

control.py


a = True
if a != True and a == False:
    print(1)
elif a == None:
    print(2)
else:
    print(3)

print(range(10))

sum = 0
for i in range(10):
    sum += i
print(sum)

sum = 0
i = 0
while True:
    sum += i
    i += 1
    if i >= 10:
        break
print(sum)
3
range(0, 10)
45
45

Es gibt "if", "else" und ein anderes "elif". Es ist eine Abkürzung für sonst, wenn, aber es ist ein bisschen komisch. Zum ZustandandUnd natürlichorAus diesem Grund C's&&Wann||Es ist ein Ersatz für. Ich habe es nicht bemerkt, bis ich einen Kommentar bekam, aber in Python&&Wann||Ist nicht vorhanden. Hinweis.

for funktioniert, weil ich es nicht verstehe für i in range (10):. Wenn ich "Bereich (10)" drucke, bekomme ich eine bessere Vorstellung von "Bereich (0, 10)", aber vorerst ist "i" von 0 bis 9 (10-1). Es ist für eine Schleife mit der Ganzzahl von ausgelegt. Ja, ich weiß es nicht.

Ergänzung. Wie Sie im Kommentar erwähnt haben, lautet "print (list (range (10)))" [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] "und dann Sie können sehen, dass es sich um eine "Liste" handelt. In Python2 können Sie diese Liste mit "print (range (10))" abrufen, ohne sie in die Liste umzuwandeln, und das hier vorgestellte for ist der gleiche Vorgang wie "for" unter Verwendung der Liste (wird auch als nächstes behandelt). Das ist sehr leicht zu verstehen, hat sich aber in Python3 leider geändert. Dies ist keine schlechte Sache, es ist ein Upgrade in Bezug auf die Speicherverwaltung. In diesem Artikel gehe ich davon aus, dass ich genug Verstand habe, um mich zu bewegen, also versuche ich nur, es wie oben richtig zu erklären. Wenn Sie mehr wissen möchten, googeln Sie bitte mit "range xrange" oder "Python 2 3 different".

Das Inkrement ist "sum + = 1", aber beachten Sie, dass es nicht "sum ++" sein kann.

Ich denke, "while" bleibt gleich. break ist dasselbe wie C-Sprache. Obwohl nicht im Code geschrieben, ist "continue" auf die gleiche Weise wie die C-Sprache verfügbar.

Listen und Wörterbücher

Anstelle von Arrays in C verfügt Python über Listen und Strukturen anstelle von Wörterbüchern. Nein, anstelle einer Struktur ist eine Klasse. Aber vorerst werde ich das Wörterbuch vorstellen, da das Wörterbuch ausreicht, um das Programm richtig zu schreiben.

list_dict.py


lst = [1, 2, 3]
print(lst[1])

lst.append(4)
print(lst)

lst.remove(2)
print(lst)

for neko in lst:
    print(neko)


dct = {'year':2016, 'month':12, 'day':6}
print(dct['year'])

dct['hour'] = 0
print(dct)

del dct['month']
print(dct)
2
[1, 2, 3, 4]
[1, 3, 4]
1
3
4
2016
{'year': 2016, 'day': 6, 'hour': 0, 'month': 12}
{'year': 2016, 'day': 6, 'hour': 0}

Python benötigt kein Malloc, um mit Listen (Arrays) zu arbeiten. Python verwaltet es für Sie. Ich bin schlau.

Es gibt einige erstmalig notatorische funktionale Dinge wie ".append ()" und ".remove ()" für Listenvariablen, aber dies ist so genannte objektorientiert und kann nur für Objekte verwendet werden, die als Listen bezeichnet werden. .. Es ist wie "Anhängen (lst, 2)". Mach dir keine Sorgen, schluck es, es ist einfach nicht in Ordnung. Der Inhalt der Liste wird als Elemente bezeichnet, aber durch Anhängen wird das Element am Ende der Liste hinzugefügt und durch Entfernen wird das angegebene Element entfernt (genau genommen wird das Element gelöscht, das dem Anfang der Liste am nächsten liegt und dem angegebenen Wert entspricht). Es ist eine Operation.

Ich benutze eine Liste, um die Operation "für neko in lst:" durchzuführen, die vielleicht etwas ungewohnt ist. Dies ist eine Operation, die neko nacheinander Elemente aus der Liste mit dem Namen lst zuweist und die Schleife dreht. Wenn "lst = [1, 3, 4]", ist "1" für "neko" in der ersten Woche, "3" für "neko" in der zweiten Woche und "neko" für die dritte Woche. 4 ist der Schleife zugeordnet und umgeht diese.

Ich denke, dass es einfach ist, die Eingabe des Anfangswertes und das Hinzufügen und Löschen von Elementen im Wörterbuch zu verstehen. Nachdem ich mir die ".remove ()" in der Liste angesehen habe, fühlt es sich wie "del" an, aber hmm, ich frage mich, was das ist. Nun, was soll ich löschen wollen? del ist ein ziemlich allgemeiner Zweck, der auch verwendet wird, wenn Sie andere Variablen löschen möchten.

Listen und Wörterbücher können alles als Element sein, dh nicht nur Zahlen und Zeichenketten, sondern auch Listen in Listen, Wörterbücher in Wörterbüchern, Wörterbücher in Listen und so weiter. Wenn Sie es gut verwenden können, können Sie die meisten Daten damit bearbeiten.

Funktion

Erstellen Sie Ihre eigene Lieblingsfunktion. Das Meisterstück der Funktion ist Swap.

swap.py


def swap(a, b):
    tmp = a
    a = b
    b = tmp
    return a, b

a = "neko"
b = "inu"

print(a, b)
a, b = swap(a, b)
print(a, b)
neko inu
inu neko

Auch hier geben Sie den Bereich mit : und Einrückung an.

In der Sprache C wird der Austausch durch Übergeben eines Zeigers und Manipulieren des Referenzziels des Zeigers realisiert. In verschiedenen losen Pythons kann der Rückgabewert der Funktion jedoch flexibel manipuliert werden, sodass selbst ein solcher geeigneter Code ordnungsgemäß funktioniert. Ich werde. Tatsächlich ist Swap nur so, dass mir kein Funktionsbeispiel einfällt, sodass ich mir nicht die Mühe machen muss, eine Funktion zu erstellen. Dies kann mit "a, b = b, a" erfolgen.

Wenn Sie jedoch zu viel schreiben, können Sie verletzt werden.

list_reverse.py


def list_reverse(lst):
    lst.reverse()
    return 0

def add(a):
    a += 1
    return 0

lst = [1, 2, 3, 4, 5]
lst2 = lst
print(lst)
list_reverse(lst)
print("lst :", lst)
print("lst2:", lst2)

a=1
add(a)
print(a)
[1, 2, 3, 4, 5]
lst : [5, 4, 3, 2, 1]
lst2: [5, 4, 3, 2, 1]
1

Ich habe eine nutzlose Funktion "list_reverse ()" erstellt, die absichtlich die Operation ".reverse ()" ausführt, um die Reihenfolge der Liste in der Funktion zu ändern. Es ist wirklich nutzlos, wenn Sie nur den Wert übergeben.

Ich denke jedoch, dass die ursprüngliche Liste nicht nur dadurch beeinflusst wird, dass die Liste an die Funktion übergeben und die Reihenfolge in der Funktion umgekehrt wird. Die ursprüngliche Liste ist ebenfalls betroffen und die Reihenfolge ist umgekehrt. Dies liegt daran, dass die Liste grundsätzlich wie ein Zeiger behandelt wird. Da Sie auf die Funktion verweisen, wirkt sich die Funktionsweise der Funktion auf die ursprüngliche Liste aus.

Es gibt eine Zuweisung mit lst2 = lst, aber dies ist auch keine Kopie des Wertes. Da die Liste grundsätzlich als Referenz übergeben wird, sind diese beiden Listen synchronisiert und identisch. Das "lst2", das nicht mit diesem Beweis in Verbindung gebracht werden sollte, ist ebenfalls in umgekehrter Reihenfolge.

Andererseits hat die Variable "a" keine Auswirkung, selbst wenn sie durch die Funktion "add ()" inkrementiert wird. Dies liegt daran, dass es als Wert (wie) übergeben wird.

Wenn ich nachschaue, scheint es, dass alle von ihnen als Referenz übergeben werden. Wenn der Wert geändert wird, scheint er in (1) [Typ, der das Referenzziel ändert] und (2) [Typ, der plötzlich einen anderen Bereich sichert und das Referenzziel ändert] unterteilt zu sein. Ich dachte, es wäre ein Schmerz, aber es ist sicherlich richtig in Bezug auf die Speicherverwaltung. Referenz: Übergabe als Wert und Übergabe als Referenz in Python

import Python scheint viele Bibliotheken zu haben. Ich bin damit nicht vertraut, aber wenn ich nach einer solchen Funktion suche, denke ich, dass es eine Bibliothek gibt und sie gut gepflegt ist.

In der Sprache C war es "#include <>", in Python ist es "import".

import.py


import copy

def list_reverse(lst):
    lst.reverse()
    return 0

lst = [1, 2, 3, 4, 5]
lst2 = copy.deepcopy(lst)
print(lst)
list_reverse(lst)
print("lst :", lst)
print("lst2:", lst2)
[1, 2, 3, 4, 5]
lst : [5, 4, 3, 2, 1]
lst2: [1, 2, 3, 4, 5]

import copy und lst2 = copy.deepcopy (lst). Ich habe .deepcopy () aus copys Haus verwendet. Wie Sie der Ausgabe entnehmen können, wird "lst2" dieses Mal nicht mit "lst" synchronisiert, da nur der Wert von "lst" mit ".deepcopy ()" chan kopiert wurde. Du hast es geschafft.

abschließend

Ich glaube, ich habe die Grundlagen von Halos, Variablen, Steueranweisungen, Listen und Wörterbüchern, Funktionen und Importen angesprochen. Es gibt viele Teile, die ich nicht angesprochen habe, wie komplexe Zahlen in Bezug auf Variablen und Schalter in Bezug auf Steueranweisungen ~~ (es gab keinen Schalter in Python !!). Trotzdem können Sie, wenn Sie eine Person sind, die die gesamte C-Sprache beherrscht, googeln, wenn Sie der Meinung sind, dass diese Funktion nicht verfügbar ist. Es gibt sowieso.

Wie eingangs erwähnt, habe ich es in der Hoffnung geschrieben, dass Menschen, die vorerst nur die C-Sprache berührt haben, insbesondere diejenigen, die B3 oder niedriger sind, die Möglichkeit haben, Python zu berühren. Wenn Sie jede Unterrichtsaufgabe in C-Sprache ausführen, haben Sie keinen Körper, oder? Es muss nicht Python sein, daher sollten Sie andere schnelle Schreibsprachen berühren. Ich dachte, es wäre gut, wenn ich Python3 studieren könnte, aber im Grunde gab es nur einen Unterschied beim Drucken, also machte es doch nicht viel Sinn.

Heutzutage kann ich immer noch keine objektorientierte Programmierung schreiben. Ich werde einen prozeduralen Typ schreiben und die Situation übertreffen. Trotzdem kann ich (wahrscheinlich) etwas tun, das Forschung zu sein scheint, und ich denke, dass das, was ich dieses Mal geschrieben habe, ein wenig nützlich sein wird, um etwas zu tun, das Forschung zu sein scheint.

Trotzdem habe ich einen uninteressanten Artikel geschrieben. Oh, und ich hoffe, es wird die Hürden für den Adventskalender senken.

(Danke für den Korrekturkommentar)

Recommended Posts

Weiter Python in C-Sprache
C-API in Python 3
Erweitern Sie Python in C ++ (Boost.NumPy)
Binäre Suche in Python / C ++
ABC166 in Python A ~ C Problem
Löse ABC036 A ~ C mit Python
So verpacken Sie C in Python
Löse ABC037 A ~ C mit Python
Schreiben Sie einen C-Sprach-Unit-Test in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Python C ++ Notizen
Plink in Python
Konstante in Python
Python, openFrameworks (c ++)
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Löse ABC175 A, B, C mit Python
Algorithmus in Python (ABC 146 C Dichotomie
Implementieren Sie den FIR-Filter in Python und C.
Schreiben Sie die O_SYNC-Datei in C und Python
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
Führen Sie Python in C ++ unter Visual Studio 2017 aus
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python