Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: aporia python

aporia python 7 Χρόνια 8 Μήνες πριν #4299

  • tzo22
  • Το Άβαταρ του/της tzo22
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 3
Δεν καταλαβαινω το 2ο ερωτημα :unsure: :unsure: η ασκηση ειναι:΄Εστω ότι η μεταβλητή myList αναφέρεται σε κάποια λίστα. (i) Γράψτε τις γραμμές του
κώδικα στον οποίο τυπώνονται (ένα σε κάθε γραμμή) τα στοιχεία της λίστας σε αντίστροφη
σειρά μέσω του “%”. (ii) Κάντε το ίδιο τυπώνοντας (πάλι ένα σε κάθε γραμμή και σε
αντίστροφη σειρά) μόνο κάθε τρίτο στοιχείο της λίστας.λυση:
mylist=range(101,113)
for i in range(len(mylist))[::-1]:
print 'the element of mylist with index %i is %i' %(i,mylist)
the element of mylist with index 11 is 112
the element of my list with index 10 is 111
the element of mylist with index 9 is 110
8 109
7 108
6 107
5 106
4 105
3 104
2 103
1 102
0 101 (για συντομια το γραφω ετσι)

l3=[]
for i in range(len(mylist)):
if i%3 == 0:
l3.append(i)
for i in l3[::-1]:
print 'the element of mylist with index %i is %i' %(i,mylist)
the element of mylist with index 9 is 110
6 107
3 104
0 101
αυτο που δεν πολυκαταλαβαινω ειναι το 2ο ερωτημα...εχω καταλαβει μονο την λογικη του να παρω μια κενη λιστα και να βαλω μεσα το καθε τριτο στοιχειο της λιστας mylist.any idea? :)
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

aporia python 7 Χρόνια 8 Μήνες πριν #4325

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Το πρώτο κομμάτι το έκανες σωστά μόνο που ξέχασες στην print το εξής:
print 'the element of mylist with index %i is %i' %(i,mylist[i])

Ως δεύτερο όρισμα πρέπει να δώσεις το "τωρινό" στοιχείο της λίστας αλλά όχι την ίδια την λίστα.

Το δεύτερο ερώτημα σου λέει να κάνεις πάλι το ίδιο αλλά να μην τυπώσεις όλα τα στοιχεία της λίστα
αλλά κάθε τρίτο στοιχείο.

Αυτό σημαίνει εάν:
mylist = [1,2,3,4,5,6,7,8,9,10]

Τότε ο αντίστροφος πίνακας θα είναι:
mylist = [10,9,8,7,6,5,4,3,2,1]

Και εσύ πρέπει να τυπώσεις:
8
5
2

Σκέψου πως να το κάνεις.
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

aporia python 7 Χρόνια 8 Μήνες πριν #4327

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
tzo22
είσαι φαντάζομαι ο tzo21 του insomnia :)
Το όλο θέμα θέλει προσοχή
το ότι γράφεις
mylist=range(101,113)
δεν σημαίνει ότι το mylist είναι λίστα
>>> type(mylist)
<class 'range'>
 
>>> mylist[0]=100
Traceback (most recent call last):
  File "<pyshell#52>", line 1, in <module>
    mylist[0]=100
TypeError: 'range' object does not support item assignment
Για να γίνει ένα range lista πρέπει να το κάνεις εσύ
mylist=list(range(101,113))
Η αντιστροφή της λίστας δεν απαιτείται για να πάρεις αντίστροφα στοιχεία
μπορείς να το κάνεις μειώνοντας τον δείκτη
ή μπορείς να κάνεις αντιστροφή με mylist.reverse() ή τακτική [::-1] χρησιμοποιείται συνήθως σε immutables
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

aporia python 7 Χρόνια 8 Μήνες πριν #4329

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Ένας τρόπος για να λυθούν τα προβλημάτα που είναι πιο python είναι:
>>> for i in reversed(range(101,113)):
	i
 
 
112
111
110
109
108
107
106
105
104
103
102
101
>>> for i in reversed(range(101,113,3)):
	i
 
 
110
107
104
101
 
ή με λίστες
>>> mylist=list(range(101,113))
>>> for i in reversed(mylist):
	i
 
 
112
111
110
109
108
107
106
105
104
103
102
101
>>> for i in reversed (mylist[::3]):
	i
 
 
110
107
104
101
>>> 
Επιπρόσθετα οι ασκήσεις αυτές είναι αρκετά παλιές για τύπωση όλοι χρησιμοποιούν το .format() ενώ η python 3.6 έχει εισάγει το f'string'. Κουράζεσαι δηλαδή να μάθεις κάποια πράγματα τα οποία έχουν ξεπεραστεί εδώ και αρκετό καιρό.
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

aporia python 7 Χρόνια 8 Μήνες πριν #4333

  • tzo22
  • Το Άβαταρ του/της tzo22
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 3
απλα αν παρω αντιστροφη λιστα το αποτελεσμα θα ναι
the element with index 0 is 112
...
the element with index 11 is 101 γΙτι αλλαζει και η σειρα των δεικτων
ενω εγω θελω να παρω σαν αποτελεσμα
the elemet with index 11 is 112
...
the element with index 0 is 101
το i δλδ με μπερδευει τρ ελπιζω να μην εχει κολλησει απλα το μυαλο μου και να λεω βλακειες
:blush: :blink: :blush:
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

aporia python 7 Χρόνια 8 Μήνες πριν #4334

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Όχι
docs.python.org/3/library/functions.html...ht=reversed#reversed
το reversed(mylist) επιστρέφει ένα iter με ανεστραμμένα τα στοιχεία της λίστας τον οποίο και καταναλώνεις απευθείας με το for.
>>> mylist=list(range(101,113))
>>> for i in reversed(mylist):
	mylist.index(i),i
 
 
(11, 112)
(10, 111)
(9, 110)
(8, 109)
(7, 108)
(6, 107)
(5, 106)
(4, 105)
(3, 104)
(2, 103)
(1, 102)
(0, 101)
>>> reversed(mylist)
<list_reverseiterator object at 0x00000207956216A0>
>>> mylist
[101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112]
Όπως βλέπεις το mylist έμεινε όπως ήταν.
Αν όμως χρησιμοποιήσεις
>>> mylist.reverse()
>>> mylist
[112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101]
Η λίστα άλλαξε
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.358 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου