11. Variables dan tipe data — Solusi pekerjaan rumah

File solusi .py ada di exercises/11/homework/solutions/. Penjelasan di bawah menjabarkan cara berpikirnya.

Soal 1 — Data karakter

Soal. Deklarasikan empat variable dengan tipe yang tepat dan cetak masing-masing dengan label.

Cara berpikir. Empat deklarasi, empat baris print. Cocokkan tipe dengan nilai: string untuk name, bilangan bulat untuk level dan hit_points, boolean untuk alive. Setiap label adalah string biasa, digabungkan dengan f-string atau dilewatkan sebagai argumen kedua ke print.

Solusi yang dikerjakan.

name = "Keiko"
level = 7
hit_points = 95
alive = True

print(f"Name: {name}")
print(f"Level: {level}")
print(f"Hit points: {hit_points}")
print(f"Alive: {alive}")

F-string mengonversi boolean True ke teks True secara otomatis, jadi tidak perlu langkah konversi tambahan.

Bentuk koma juga bekerja:

print("Alive:", alive)

Kesalahan umum.

  • Memberi tanda kutip pada True atau False. Itu menjadikannya string, sehingga uji type() pada soal berikutnya melaporkan str bukan bool.
  • Menulis true atau false dengan huruf kecil. Python akan memunculkan NameError karena true bukan nama yang dikenal.

Soal 2 — Pemeriksa tipe

Soal. Cetak type(x).__name__ dari lima nilai.

Cara berpikir. Lima pemanggilan print, masing-masing membungkus type().__name__ di sekitar sebuah literal; tidak perlu variable.

Solusi yang dikerjakan.

print(type("world").__name__)
print(type(42).__name__)
print(type(3.14).__name__)
print(type(False).__name__)
print(type(None).__name__)

Outputnya adalah:

str
int
float
bool
NoneType

Kesalahan umum.

  • Menggunakan type(x) tanpa .__name__. Itu mencetak <class 'str'> bukan kata sederhana str. Keduanya mendeskripsikan hal yang sama, tapi .__name__ lebih bersih untuk ditampilkan.
  • Membungkus pemanggilan dalam tanda kutip: print("type(42).__name__"). Itu mencetak teksnya secara harfiah. Tanpa tanda kutip, Python menjalankannya dan mencetak nama tipe.

Soal 3 — Ganti nama dan reassign

Soal. Ganti nama tiga variable yang namanya kurang baik, cetak, reassign, cetak lagi.

Cara berpikir. Ini tentang membaca kode. Nilai-nilai di starter memberi petunjuk tentang makna setiap variable: a = "Sword of Light" adalah nama item, jadi ganti namanya menjadi item_name. Kemudian reassign dan cetak.

Solusi yang dikerjakan. Diberikan starter:

a = "Sword of Light"
b = 12
c = True

Penulisan ulang yang masuk akal:

item_name = "Sword of Light"
item_level = 12
is_equipped = True

print("Before:", item_name, item_level, is_equipped)

item_name = "Shield of Ages"
item_level = 5
is_equipped = False

print("After: ", item_name, item_level, is_equipped)

Kesalahan umum.

  • Memberi nama variable dengan reserved word seperti False atau None. Python memunculkan SyntaxError karena nama-nama itu punya makna khusus.

Tantangan — Misteri None

Soal. Assign None ke sebuah variable, konfirmasi tipenya, lalu assign nilai dan konfirmasi tipe berubah.

Cara berpikir. Assign None langsung: treasure = None. Cetak type(treasure).__name__, set treasure = "Gold Coin", lalu cetak tipenya lagi.

Solusi yang dikerjakan.

# None is Python's way of saying "there is no value here at all".
# It is not the same as 0 or "" or False. It is the absence of a value.
# A variable can be assigned None explicitly to show it has no
# meaningful value yet.

treasure = None
print("Before assignment:", type(treasure).__name__)   # NoneType

treasure = "Gold Coin"
print("After assignment: ", type(treasure).__name__)   # str

Kesalahan umum.

  • Menulis none dengan huruf kecil. Python memunculkan NameError; ejaan yang benar adalah None dengan huruf N kapital.
  • Mengira None sama dengan False. Keduanya berbeda tipe. Konsep terkait namun terpisah tentang "truthy dan falsy" akan datang di Bab 16 tentang if.

Selesai?

Selanjutnya — Strings — menggali lebih dalam tipe yang paling banyak kamu gunakan. Lalu angka, input keyboard, dan mini-project Bagian 3.