
### Apa itu Input dan Output?
###
**Input :**
adalah data yang dimasukkan pengguna ke dalam program saat program berjalan.

Dalam Python, input berarti:
program menerima informasi dari luar (manusia → keyboard).
Jika program tidak bisa menerima input:
* Nilainya akan terkesan kaku
* Tidak fleksibel
* Tidak bisa digunakan secara berulang
**Output :**
adalah hasil yang dikeluarkan program ke pengguna.

Fungsi yang digunakan :
```
print()
```
Hasil yang dikeluarkan biasanya berupa :
* Teks
* Angka
* Isi variabel
* Hasil operasi perhitungan (aritmatika)
Tanpa output:
* Program bekerja di belakang layar
* Pengguna tidak tahu apa yang terjadi dengan program yang sedang berjalan
### Fungsi input() di Python
Bentuk Dasar :
```
input()
```
Fungsi input ini hampir tidak pernah digunakan atau berjalan sendirian, karena :
* Nilai hasil input tidak disimpan
* Hasilnya akan hilang
Bentuk yang Benar (Wajib) adalah dengan menggabungkan fungsi input ini dengan fungsi lain semisal dengan variabel agar nilai hasil input dapat ditampung atau disimpan dalam variabel.
Contoh :
```
nama = input("Masukkan nama : ")
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/4cfK2f2dcgFvD)
Penjelasan :
* "Masukkan nama : " → output string(str) sementara berupa (pertanyaan)
* input() → Menerima jawaban pengguna
* nama = → Menyimpan jawaban ke variabel
### Tipe Data Hasil Input dan Permasalahannya
Ini bagian yang sering bikin error tapi sering diremehkan.
:::success
**❗ Fakta penting :**
input() SELALU menghasilkan data bertipe string(str), walaupun yang dimasukkan angka.
:::
Contoh:
```
umur = input("Masukkan umur: ")
print(type(umur))
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/9puQguWp3YjIO)
Hasilnya:
```
<class 'str'>
```
:::info
**📃 FYI (For Your Information):**
Karena fungsi input() selalu menghasilkan tipe data String(Str), masalah muncul saat menggabungkan hasil input dengan tipe data lain.
:::
Misal :
```
umur = input("Masukkan umur: ")
hasil = umur + 5
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/1wj5Qv5c1Ta7t)
:::warning
**Kenapa error?**
Karena :
* Hasil nilai variabel umur → tipe data : string(str)
* Nilai 5 → tipe data : integer(int)
Python tidak bisa menggabungkan dua tipe data yang berbeda.
:::
### Casting (Konversi Tipe Data) dalam Python
Solusi dari masalah dua tipe data yang tidak bisa digabungkan adalah dengan menggunakan fungsi **casting**
:::success
**Casting = konversi/mengubah tipe data**
:::
Fungsi casting umum :
* int() → Mengubah tipe data ke bilangan bulat
* float() → Mengubah tipe data ke bilangan desimal
* str() → Mengubah tipe data ke teks
Contoh benar:
```
umur = int(input("Masukkan umur: "))
hasil = umur + 5
print(hasil)
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/1Uz7m2athZS6r)
### Multiple Argument - Menampilkan Output dengan Tanda Koma (,)
:::success
**Multiple Argument (,)** : pemisah beberapa argumen dalam print() dengan spasi otomatis.
:::
Contoh:
```
nama = "Budi"
umur = 16
print("Nama :", nama, "Umur :", umur)
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/9GwS4WgpFNAUG)
Hasil:
```
Nama : Budi Umur : 16
```
:::info
📌 **Kelebihan koma :**
* Bisa menggabungkan dua atau lebih tipe data yang berbeda
* Python otomatis akan memberikan spasi dari antar argumen dalam print()
:::
### Output dengan Concatenation (Penggabungan String)
:::success
**Concetanation** : menggabungkan string(str) menjadi satu
:::
Contoh :
```
nama = "Fajar"
print("Nama saya" + nama)
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/7X1bKC7y4QGUb)
Semua isi dalam string itu dianggap teks termasuk spasi yang terlihat kosong.
Maka ketika ingin menggabungkan lebih dari 1 string dalam print() harus diberi spasi secara manual.
Contoh :
```
nama = "Fajar"
print("Nama saya " + nama)
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/7cfK2dVwCg429)
### Perbedaan Penggunaan , dan + dalam Output
| Aspek | Koma (,) | Plus (+) |
| -------- | -------- | -------- |
| Istilah dalam Python | Multiple Argument | Concetanation|
| Penggunaan Tipe Data | Bisa semua tipe Data : Integer(Int), float, String(Str), Boolean(Bool)| Hanya String|
| Otomatis spasi | ✅ Ya | ❌ Tidak|
| Perlu casting | ❌ Tidak |✅ Ya |
| Fungsi dalam print() | Untuk memisahkan argumen menggunakan spasi |Menggabungkan argumen menjadi satu kesatuan |
### Alur Logika Input → Proses → Output

Berikut adalah contoh implementasi fungsi input() ke dalam program sederhana untuk menghitung luas persegi panjang :
```
# Input
panjang = int(input("Masukkan panjang: "))
lebar = int(input("Masukkan lebar: "))
# Proses
luas = panjang * lebar
#Output
print("Luas persegi panjang adalah", luas)
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/9etTYne6E8hVr)
Strukturnya jelas :
* **Input** → ambil data
* **Proses** → olah data : menghitung hasil dari panjang dikali lebar
* **Output** → Menampilkan hasil proses atau olah data
Mini project kasir sederhana menggunakan fungsi input():
```
# Input data :
nama_barang = input("Masukkan nama barang: ")
harga = int(input("Masukkan harga barang: ")) # casting tipe data string(str) ke tipe data integer(int)
jumlah = int(input("Masukkan jumlah beli: ")) # casting tipe data string(str) ke tipe data integer(int)
# Proses data :
total = harga * jumlah
# Output data (menggunakan concatenation) :
print("=== STRUK PEMBELIAN ===")
print("Nama Barang : " + nama_barang)
print("Harga : Rp " + str(harga)) # casting tipe data integer(int) ke tipe data string(str)
print("Jumlah : " + str(jumlah)) # casting tipe data integer(int) ke tipe data string(str)
print("Total Bayar : Rp " + str(total))
```
[<kbd>👉🏻 Klik untuk mempraktekkan>></kbd>](https://www.programiz.com/online-compiler/93eNa0nXpJC8G)