Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele None- ja Binääritiedot | Ristikkäistyyppiset Vuorovaikutukset
Tietotyypit Pythonissa

bookNone- ja Binääritiedot

Todelliset ohjelmat käsittelevät usein puuttuvia arvoja ja raakaa binääridataa. Käytä None-arvoa kuvaamaan arvon puuttumista sekä bytes- tai bytearray-tyyppejä tiedostojen tai verkon binäärisisällön käsittelyyn. Opettele, milloin käyttää mitäkin ja kuinka muuntaa turvallisesti tekstin ja tavujen välillä.

None "ei arvoa" -tilanteisiin

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 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 bytes-etuliitteen 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 bytes-etuliitteen 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

Suggested prompts:

Can you explain when to use `None` versus other falsey values?

How do I safely handle default values when `0` or `""` are valid?

Can you show more examples of converting between text and bytes?

Awesome!

Completion rate improved to 3.45

bookNone- ja Binääritiedot

Pyyhkäise näyttääksesi valikon

Todelliset ohjelmat käsittelevät usein puuttuvia arvoja ja raakaa binääridataa. Käytä None-arvoa kuvaamaan arvon puuttumista sekä bytes- tai bytearray-tyyppejä tiedostojen tai verkon binäärisisällön käsittelyyn. Opettele, milloin käyttää mitäkin ja kuinka muuntaa turvallisesti tekstin ja tavujen välillä.

None "ei arvoa" -tilanteisiin

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 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 bytes-etuliitteen 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 bytes-etuliitteen 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