Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele None ja binaarinen data | Ristikkäiset Tyyppivuorovaikutukset
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Tietotyypit Pythonissa

bookNone ja binaarinen data

Todelliset ohjelmat käsittelevät usein puuttuvia arvoja ja raakaa binääridataa. Käytä None-arvoa ilmaisemaan arvon puuttumista ja bytes- tai bytearray-tyyppejä käsittelemään tiedostoista tai verkoista saatua binäärisisältöä. Opettele, milloin käyttää mitäkin ja kuinka muuntaa turvallisesti tekstin ja tavujen välillä.

None arvon puuttumiselle

None on yksittäinen erityisobjekti, joka tarkoittaa "ei mitään tässä".

12345678910111213
# Basic checks result = None email = None print("result is None:", result is None) # True print("email is None:", email is None) # True # Identity checks are the reliable way if result is None: print("No result yet") if email is not None: print("Email present") else: print("Email missing")
copy

None on epätosi, mutta niin ovat myös 0 ja "". Suosi is None -tarkistusta, kun todella tarkoitat "puuttuvaa arvoa".

123
value = 0 print("not value:", not value) # True - but 0 is a valid value print("value is None:", value is None) # False - correctly distinguishes 0 from missing
copy

Oletusarvot ja vararatkaisut

1234567891011
x = None safe_or = x or "unknown" # replaces any falsey value safe_none_only = "unknown" if x is None else x print("x=None, x or 'unknown':", safe_or) # 'unknown' print("x=None, None-only fallback:", safe_none_only) # 'unknown' x = 0 safe_or = x or "unknown" safe_none_only = "unknown" if x is None else x print("x=0, x or 'unknown':", safe_or) # 'unknown' - maybe not desired print("x=0, None-only fallback:", safe_none_only) # 0 - preserves valid zero
copy

Funktiot ja parametrit

12345678910111213
def find_user(name): # returns None if not found return None def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" user = find_user("Ada") print("user is None:", user is None) # True print(add_tag("hello")) # "[general] hello" print(add_tag("hello", tag="news")) # "[news] hello"
copy

bytes ja bytearray binääridatalle

Tekstiä varten käytetään str-tyyppiä, joka sisältää Unicode-merkkejä. Binääridataa varten käytetään bytes- tai bytearray-tyyppiä, jotka sisältävät raakoja tavuarvoja välillä 0–255.

123456789
# Creating binary data b1 = b"hello" # bytes literal b2 = bytes([72, 105]) # b"Hi" buf = bytearray(b"abc") # mutable buf[0] = 65 # now b"Abc" print("b1:", b1, type(b1)) # b'hello' <class 'bytes'> print("b2:", b2, type(b2)) # b'Hi' <class 'bytes'> print("buf:", buf, type(buf)) # bytearray(b'Abc') <class 'bytearray'>
copy

Tekstin ja tavujen muuntaminen: koodaus ja dekoodaus

1234567
text = "café" data = text.encode("utf-8") # to bytes back = data.decode("utf-8") # back to str print("text:", text, type(text)) # café <class 'str'> print("data:", data, type(data)) # b'caf\xc3\xa9' <class 'bytes'> print("back:", back, type(back)) # café <class 'str'>
copy

Tekstin ja tavujen yhdistäminen – ei sallittua ilman muunnosta

123456789
# Non-valid operation with explicit error print try: bad = b"ID:" + "123" # bytes + str - not allowed except TypeError as e: print("TypeError when mixing bytes and str:", e) # Correct combination ok = b"ID:" + "123".encode("utf-8") print("combined bytes:", ok) # b'ID:123'
copy

Pituudet voivat vaihdella

123
ch = "é" print("len('é') as str:", len(ch)) # 1 character print("len('é' encoded):", len(ch.encode("utf-8")))# 2 bytes
copy

Tiedostot

# Binary files yield bytes
# with open("example.png", "rb") as f:
#     blob = f.read()

1. Mikä tarkistus tunnistaa puuttuvan arvon oikein?

2. Mikä rivi yhdistää tekstin ja tavuprefiksin oikein?

3. Mikä väite on oikea?

question mark

Mikä tarkistus tunnistaa puuttuvan arvon oikein?

Select the correct answer

question mark

Mikä rivi yhdistää tekstin ja tavuprefiksin oikein?

Select the correct answer

question mark

Mikä väite on oikea?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookNone ja binaarinen data

Pyyhkäise näyttääksesi valikon

Todelliset ohjelmat käsittelevät usein puuttuvia arvoja ja raakaa binääridataa. Käytä None-arvoa ilmaisemaan arvon puuttumista ja bytes- tai bytearray-tyyppejä käsittelemään tiedostoista tai verkoista saatua binäärisisältöä. Opettele, milloin käyttää mitäkin ja kuinka muuntaa turvallisesti tekstin ja tavujen välillä.

None arvon puuttumiselle

None on yksittäinen erityisobjekti, joka tarkoittaa "ei mitään tässä".

12345678910111213
# Basic checks result = None email = None print("result is None:", result is None) # True print("email is None:", email is None) # True # Identity checks are the reliable way if result is None: print("No result yet") if email is not None: print("Email present") else: print("Email missing")
copy

None on epätosi, mutta niin ovat myös 0 ja "". Suosi is None -tarkistusta, kun todella tarkoitat "puuttuvaa arvoa".

123
value = 0 print("not value:", not value) # True - but 0 is a valid value print("value is None:", value is None) # False - correctly distinguishes 0 from missing
copy

Oletusarvot ja vararatkaisut

1234567891011
x = None safe_or = x or "unknown" # replaces any falsey value safe_none_only = "unknown" if x is None else x print("x=None, x or 'unknown':", safe_or) # 'unknown' print("x=None, None-only fallback:", safe_none_only) # 'unknown' x = 0 safe_or = x or "unknown" safe_none_only = "unknown" if x is None else x print("x=0, x or 'unknown':", safe_or) # 'unknown' - maybe not desired print("x=0, None-only fallback:", safe_none_only) # 0 - preserves valid zero
copy

Funktiot ja parametrit

12345678910111213
def find_user(name): # returns None if not found return None def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" user = find_user("Ada") print("user is None:", user is None) # True print(add_tag("hello")) # "[general] hello" print(add_tag("hello", tag="news")) # "[news] hello"
copy

bytes ja bytearray binääridatalle

Tekstiä varten käytetään str-tyyppiä, joka sisältää Unicode-merkkejä. Binääridataa varten käytetään bytes- tai bytearray-tyyppiä, jotka sisältävät raakoja tavuarvoja välillä 0–255.

123456789
# Creating binary data b1 = b"hello" # bytes literal b2 = bytes([72, 105]) # b"Hi" buf = bytearray(b"abc") # mutable buf[0] = 65 # now b"Abc" print("b1:", b1, type(b1)) # b'hello' <class 'bytes'> print("b2:", b2, type(b2)) # b'Hi' <class 'bytes'> print("buf:", buf, type(buf)) # bytearray(b'Abc') <class 'bytearray'>
copy

Tekstin ja tavujen muuntaminen: koodaus ja dekoodaus

1234567
text = "café" data = text.encode("utf-8") # to bytes back = data.decode("utf-8") # back to str print("text:", text, type(text)) # café <class 'str'> print("data:", data, type(data)) # b'caf\xc3\xa9' <class 'bytes'> print("back:", back, type(back)) # café <class 'str'>
copy

Tekstin ja tavujen yhdistäminen – ei sallittua ilman muunnosta

123456789
# Non-valid operation with explicit error print try: bad = b"ID:" + "123" # bytes + str - not allowed except TypeError as e: print("TypeError when mixing bytes and str:", e) # Correct combination ok = b"ID:" + "123".encode("utf-8") print("combined bytes:", ok) # b'ID:123'
copy

Pituudet voivat vaihdella

123
ch = "é" print("len('é') as str:", len(ch)) # 1 character print("len('é' encoded):", len(ch.encode("utf-8")))# 2 bytes
copy

Tiedostot

# Binary files yield bytes
# with open("example.png", "rb") as f:
#     blob = f.read()

1. Mikä tarkistus tunnistaa puuttuvan arvon oikein?

2. Mikä rivi yhdistää tekstin ja tavuprefiksin oikein?

3. Mikä väite on oikea?

question mark

Mikä tarkistus tunnistaa puuttuvan arvon oikein?

Select the correct answer

question mark

Mikä rivi yhdistää tekstin ja tavuprefiksin oikein?

Select the correct answer

question mark

Mikä väite on oikea?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3
some-alt