PYTHON - ΜΑΘΗΜΑ 7 - ΣΥΝΟΛΑ - Μέρος 3 από 8 - Ασκήσεις στις βασικές λειτουργίες ενός συνόλου

preview_player
Показать описание
ΠΕΡΙΕΧΟΜΕΝΑ ΒΙΝΤΕΟ:
1.1. Βασική Λειτουργικότητα Συνόλων (Ασκήσεις)
================================
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
1. Σύνολα (sets)
1.1. Βασική Λειτουργικότητα Συνόλων
1.2. Πράξεις και Μετρικές σε Σύνολα
1.3. Περιγραφικά Σύνολα
2. Project: Τρίλιζα
Рекомендации по теме
Комментарии
Автор

Σημαντική σημείωση για τους τυχαίους αριθμούς (αντικαθιστά την πρασινάδα κάτω δεξιά στη διαφάνεια):
Από την έκδοση 3.9 και μετά της Python όταν θέλουμε να έχουμε τυχαίους αριθμούς γράφουμε:
from random import randrange (μόνο αυτό το Import και κανένα άλλο, ούτε το seed, ούτε το datetime)
και έπειτα χρησιμοποιούμε την randrange όπως αναφέρεται στο βίντεο

Έτσι ο κώδικας της πρασινάδας, πρέπει να αντικατασταθεί με τον:


from random import randrange

x = randrange(10, 20)
print(x)

psounis
Автор

Πλέον που βγήκε η 3.10, δεν δουλεύει ούτε χωρίς την εντολή seed, και δεν είναι απλώς προειδοποίηση, αλλά δεν δουλεύει τελείως.
Έχω γράψει :
from random import randrange
x = randrange(0, 10)
print(x)
και μου βγάζει λάθος. Τι κάνουμε;

physics_and_discovery
Автор

DeprecationWarning: Seeding based on hashing is deprecated since Python 3.9 .. Τα ρεμάλια δεν το εκτιμούνε πλέον xD
Πως πρέπει να αρικοποιούμε τη φύτρα τυχαίων αριθμών?

apostolosmavropoulos
Автор

Υπερβολικά δύσκολη, αλλά νομίζω η παρακάτω λύση είναι αρκετά ικανοποιητική.
"ΕΓΚΕΦΑΛΙΚΗ ΒΛΑΒΗ"

from random import randrange

cnt = 0

while cnt < 10:
lotto = set()

first_pic = randrange(10, 20)
second_pic = randrange(10, 20)

third_pic = randrange(20, 40)
fourth_pic = randrange(20, 40)

fifth_pic = randrange(1, 10)
sixth_pic = randrange(40, 50)

lotto.add(first_pic)

while second_pic != first_pic:
lotto.add(second_pic)
break
else:
second_pic = randrange(10, 20)
lotto.add(second_pic)

lotto.add(third_pic)

while fourth_pic != third_pic:
lotto.add(fourth_pic)
break
else:
fourth_pic = randrange(10, 20)
lotto.add(fourth_pic)

while fifth_pic % 2 == 0:
lotto.add(fifth_pic)
break
else:
fifth_pic = randrange(1, 10)
lotto.add(fifth_pic)

while sixth_pic % 2 != 0:
lotto.add(sixth_pic)
break
else:
sixth_pic = randrange(40, 50)
lotto.add(sixth_pic)

if len(lotto) == 6:
print(lotto)
cnt += 1

🤩🤩🤩

magdalenerenita
Автор

Κ. Ψούνη έχω ένα πρόβλημα στην κατασκευή τυχαίων αριθμών. Ενώ το γράφω ακριβώς όπως εσείς (το έλεγξα 100 φόρες δεν έκανα κάποιο συντακτικό λάθος) στις 2 πρώτες γραμμές του from μου βγάζει error και δεν τρέχει με τίποτα.

michaelmesimeris
Автор

Στο ευρος 1-9 με ζυγο αριθμο, δε θα μπορουσαμε να γραψουμε (2, 10, 2)
Τους αριθμους 2, 4, 6, 8 μας δινει και παλι.
Βλεπω και δεν το εχει γραψει κανεις και αναρωτιεμαι αν ειναι λαθος η ετσι βγαζει καποιο bug.

GioZor
Автор

from random import randrange

count = 0

for _ in range(6):
column = []
while True:
random_number = randrange(1, 46)
if random_number not in column:
column.append(random_number)
count += 1
if count == 5:
break
random_x = randrange(1, 21)
print(column, end=" ")
print(random_x)

Λίγο άτοπο αλλά μπορείτε να μου πείτε που είναι το πρόβλημα σε αυτό το πρόγραμμα;
Ευχαριστώ..

ΔημήτριοςΜιχαλέττος
Автор

Εχω ενα προβλημα ενω το python tutor μου τρεχει κανονικα τον κωδικα του λοτο στο pycharm μου βγαζει αυτο το error: TypeError: The only supported seed types are: None,
int, float, str, bytes, and bytearray.
μηπως κανεις γιατι? ευχαριστω

filippaKYS
Автор

Είναι λάθος το εξής:
synolo_1 = {number for number in range(1, n+1)}
?

robert-evgheniosonofrei
Автор

Δάσκαλε κ εμένα μου βγάζει πρόβλημα.Γράφω κανονικά from random import seed, μεχρι το import ολα καλά όταν γραφω seed μαυρίζει.Δεν το έχω ονομάσει random. py. To ίδιο μου κάνει και αν γράψω μονο from random import randrange

Μου βγάζει αυτό
Unused import statement 'from random import seed'

anastazio
Автор

Αν δεν σας τρέχει η ραντ δοκιμάστε αυτό :
import random


column = set()

rand_number = random.randint(10, 20)
column.add(rand_number)

while True:
rand_number = random.randint(10, 20)
if rand_number not in column:
column.add(rand_number)
break

print(column)

ΒινςΜοργκαν
Автор

excercise1
N = 5

my_set = {number for number in range(N)}
print(my_set)
set_square = set()
for number in range(N):
num_square = number**2
tuple_square = (number, num_square)
set_square.add(tuple_square)
print(set_square)

dimitrisftth
Автор

from random import randrange

for i in range(10):
sets = set()

while len(sets) < 2:
sets.add(randrange(10, 20))

while len(sets) < 4:
sets.add(randrange(20, 40))

while len(sets) < 5:
rand_number = randrange(1, 9)
if rand_number % 2 == 0:
sets.add(rand_number)

while len(sets) < 6:
rand_number = randrange(40, 50)
if rand_number % 2 != 0:
sets.add(rand_number)

print(sets)

panagiotistsirkas
Автор

Όσες φορές και ΝΑΤΟ κάνω μου βγάζει error συγκεκριμένα Importerror: cannot import name seed ακόμα και copy paste έκανα τον κώδικα από το github το ίδιο...

kosni
Автор

from random import randrange

x = randrange(1, 50)

column = {x}

for i in range(5):
while x in column:
x = randrange(1, 50)
column.add(x)

print(column)

panagiotistsikos
Автор

Καλησπέρα δάσκαλε!
Έχω αντιγράψει τόσες φορές τον κώδικα της 2ης άσκησης αλλά μου εμφανίζει error στην κονσόλα
Και δεν γνωρίζω που έχω κάνει λάθος
(Μάλλον αντιμετωπίζω παρόμοιο πρόβλημα και με έναν άλλο χρήστη κάτω στα σχόλια)
Μήπως γνωρίζετε τι πρέπει να κάνω ή σε ποιο σαητ να ψάξω για την λύση;

notariga
Автор

Παραθέτω τον κώδικά μου. Οποιοδήποτε σχόλιο καλοδεχούμενο.

for i in range(10):
synolo = set()
for times in range(0, 2):
synolo.add(randrange(10, 19))
synolo.add(randrange(20, 39))
while True:
number = randrange(1, 9)
if number % 2 == 0:
synolo.add(number)
break
while True:
arithmos = randrange(40, 49)
if arithmos % 2 != 0:
synolo.add(arithmos)
break
print(synolo)

tehbrozpotatoz
Автор

Καλησπέρα κύριε Ψούνη. Ήθελα να ρωτήσω, αν στον κώδικά σας γίνει αυτη η μικρή αλλαγή στο πως 'καθαρίζει' το set, γιατί το προγραμμά μας δεν λειτουργεί; :
from random import seed
from random import randrange
from datetime import datetime # all 3 at the beginning

seed(datetime.now()) # once, before randint call
column = set()
i = 0
columns = []
while True:
column.clear()

# 10-19

rand_number = randrange(10, 20)
column.add(rand_number)

while True:
rand_number = randrange(10, 20)
if rand_number not in column:
column.add(rand_number)
break

# 20-39

rand_number = randrange(20, 40)
column.add(rand_number)

while True:
rand_number = randrange(20, 40)
if rand_number not in column:
column.add(rand_number)
break

# 1-9 EVEN

rand_number = 2 * randrange(1, 5)
column.add(rand_number)

# 41-49 ODD

rand_number = randrange(41, 49+1, 2)
column.add(rand_number)

if column not in columns:
columns.append(column)
i += 1
if i==10:
break


for column in columns:
print(column)

spyrous
Автор

Κύριε Ψούνη καλησπέρα. Το παρακάτω όταν το βάζω να τρέξει έχει ως αποτέλεσμα να μην εμφανίζεται τίποτα στην κονσόλα.
Μήπως μπορείτε να μου υποδείξετε το λάθος (ή λάθη);
Για την άσκηση 2:

from random import seed
from random import randrange
from datetime import datetime

seed(datetime.now())

luckies = []
i = 0
while True:
lucky = set()

x = randrange(10, 20)
lucky.add(x)
while True:
x= randrange(10, 20)
if x not in lucky:
lucky.add(x)
break

x = randrange(20, 40)
lucky.add(x)

while True:
x = randrange(20, 40)
if x not in lucky:
lucky.add(x)
break

x = randrange(2, 9, 2)
lucky.add(x)

x = randrange(41, 50, 2)
lucky.add(x)


if lucky not in luckies:
luckies.append(lucky)
i =+1
if i ==10:
break


for lucky in luckies:
print(lucky)

avengeratheart
Автор

Kαθε ημερα και ενας καινουριος τροπος να παιδεψεις τον εαυτο σου!
Οριστε οι δικες μου προσσεγγισεις για τις δυο ασκησεις!
Ασκηση 1:
N = 5
my_set = set()
for i in range(1, N+1):
my_set.add(tuple([i, i**2]))
print(my_set)


Ασκηση 2:
lotto_list = []
for i in range(10):
column = set()
x = randrange(10, 20)
y = randrange(10, 20)
while True:
if x == y:
x = randrange(10, 20)
y = randrange(10, 20)
else:
column.add(x)
column.add(y)
break

x = randrange(20, 40)
y = randrange(20, 40)
while True:
if x == y:
x = randrange(20, 40)
y = randrange(20, 40)
else:
column.add(x)
column.add(y)
break

x = randrange(1, 10)
while True:
if x % 2 != 0:
x = randrange(1, 10)
else:
column.add(x)
break

x = randrange(40, 50)
while True:
if x % 2 == 0:
x = randrange(40, 50)
else:
column.add(x)
break
lotto_list.append(column)
print(lotto_list)

for i in (lotto_list):
print(i, end='')
print('')

konstantinostzaferis