Drucken bestimmte Zeile in python?
Habe ich diesen code so weit.
Eingabe einer Zahl, und es sollten die Lesen, die bestimmte Linie in der packages.txt
- Datei und drucken Sie es in der python-shell.In dem code unten, wenn Sie geben Sie "3" in es wird zum Beispiel print-Zeile 1-3, die ich nicht wollen, es zu tun.
which = input('Which package would you like?: ')
with open('packages.txt') as f:
i = 0
for line in f:
if i == (int(which)):
break
i += 1
print (line)
- Können Sie erklären, warum druckt er Linien 1-3? (Wenn Sie können, dann sind Sie ein guter Weg, um das problem zu lösen! 🙂 )
- Ich denke, dass python vielleicht liest Zeile von 0 bis (die) und druckt Sie? oder bin ich hier falsch? 😛
- Ja, das ist das, was passiert, aber warum passiert das? (Welcher Teil des Codes bedeutet, dass jede Zeile bis zu
which
gedruckt? Wo funktioniert die Python die Zeilen Durchlaufen und wo findet die print-Anweisung auftreten?) - gut, geben Sie eine Nummer, die ich bekommt auf diese Zahl eingestellt und es wird gedruckt bis f wird auf 0 gesetzt? ich denke, dass das problem in "i += 1"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke über den Fluss der code und wenn
print (line)
aufgerufen wird.Können Sie sehen, die 2 sehr wichtige Unterschiede zwischen diesem code und bei dir?
f
ändert sich nicht, es ist die Datei.i
verändert, dass das, was die Liniei += 1
tut, das addiert 1 zu dem Wert voni
.f
eine Zeile zu einem Zeitpunkt.i
ist zu verfolgen, welche Zeile wir auf.for
ist eine Schleife, das heißt, es wiederholt sich. Wenn Sie dieprint
Registerkarten unterhalb derfor
das bedeutet, dass jedes mal, wenn wir gehen durch die Schlaufe, die print passieren wird. Allerdings wollen wir nur einmal drucken, und wir wollen, dass Druck kommen, wenn wir bekommen, um zu der Linie, die der Benutzer in derwhich
variable.with
tut. Wir sind gerade mit deri
variable zu verfolgen, wo wir sind. Wenn wir uns auf die Rechte Linie (wenn unser Zähler ist die gleiche wie diewhich
variable), die wirbreak
. Dann außerhalb derfor
- und außerhalb derwith
wirprint
.for
.track
,counter
oderline_number
sind eine gute Wahl.i += 1
ist nur ein Kürzel füri = i + 1
, was bedeutet, dass wir die Inkrementierungi
. In einigen Sprachen, die Sie verkürzen, es noch weiter zui++
ich denke mal, weil es so eine häufige operation.Können Sie
enumerate
überf
um den index der Zeile und drucken Sie es, wenn Sie mitwhich
. Ich nahm an, dies ist eine Hausaufgaben-Frage, also nicht darum, vollständigen code hier 🙂Können Sie einfach, dies zu tun:
lines = open('packages.txt').readlines()
Nun können Sie erraten, den rest.