Dasar-Dasar Python (Basic 3)

Setelah mempelajari sintaks dasar bahasa Python kita tidak boleh melupakan salah satu komponen penting dalam sebuah program, yaitu input dan output. Input dan output ini tidak hanya dari keyboard dan layar saja. Tetapi meliputi semua proses transfer data secara umum. Proses input bisa berupa proses baca dari file yang terdapat dalam media penyimpan magnetik, yang kemudian bisa disimpan lagi pada media penyimpan tersebut.

Membaca Masukan

Python menyediakan dua fungsi bawaan untuk mengambil masukan, yaitu raw_input() dan input().
Sintaks kedua fungsi ini adalah,
raw_input([prompt])
input([prompt]) 
 
prompt akan dicetak ketika fungsi dijalankan.
Setiap masukan yang diterima oleh fungsi raw_input() dari standard input dianggap sebagai string. Untuk membuktikan hal ini jalankan interpreter Python dan ketikkan baris berikut, 

>>> raw_input("Nama Anda:") 
Nama Anda:Salman AS 
'Salman AS' 
>>>_ 

Coba lagi dengan memberikan masukan berupa bilangan,
 
>>> raw_input("Bilangan Anda:") 

Bilangan Anda:12 
'12' 
>>>_ 

Tampak di sini masukan benar-benar dianggap sebagai string. Perhatikan tanda petik yang mengapit keluaran interpreter. Karena input yang diberikan pada fungsi ini dianggap sebagai string maka tidak bisa kita operasikan dengan operator aritmetika. 

>>> x=raw_input("Bilangan I:") 
Bilangan I:12 
>>> y=raw_input("Bilangan II:") 
Bilangan II:3 
>>> print x+y 
123 
>>> print x*y 
Traceback (innermost last): File "<stdin>", line 1, in ? 
TypeError: can't multiply sequence with non-int 
>>> print x/y 
Traceback (innermost last): File "<stdin>", line 1, in ? 
TypeError: bad operand type(s) for / 
>>>_ 
 
Berbeda dengan raw_input(), fungsi input() akan mengembalikan bilangan sehingga bisa kita olah dengan operator aritmetika. Coba perhatikan, 

>>> x = input("Bilangan I:") 
Bilangan I:12 
>>> y = input("Bilangan II:") 
Bilangan II:3 
>>> print x+y 
15 
>>> print x*y 
36 
>>> print x/y 
4 
>>>_ 
 
Selain fungsi bawaan, distribusi Python standar juga menyediakan library untuk keperluan tertentu. Misalnya, meminta masukan password yang seharusnya masukan dari keyboard tidak boleh dicetak ke layar. Untuk keperluan ini sudah disediakan modul dengan nama getpass. 

>>> import getpass 
>>> getpass.getpass("Password:") 
Password: 
'satuduatiga' 
>>>_ 
 
Baris pertama berfungsi untuk membaca modul yang bernama getpass. Kemudian baris kedua memanggil fungsi getpass() yang terletak dalam modul getpass. Kebetulan di sini nama fungsi sama dengan nama modul di mana fungsi berada. Mungkin Anda akan bertanya-tanya, apa sih modul itu? Modul adalah file skrip Python yang berisi fungsi-fungsi yang sering kita pakai. Sebelum bisa kita gunakan file ini harus kita “impor” terlebih dahulu supaya skrip kita mengenali fungsi-fungsi yang terdapat dalam modul tersebut. Nama modul diambil dari nama file skrip modul tanpa akhiran .py. Fungsi lain yang terdapat dalam modul getpass adalah getuser(). Hasil dari fungsi ini adalah string yang diambil dari variabel lingkungan. 

>>> getpass.getuser() 
'salmanas' 
>>>_.

 

 Mencetak Ke Layar

Membahas bagaimana cara kita meminta masukan data tidak bisa terlepas bagaimana kita akan menampilkan data. Tanpa kita sadari kita sudah memakai perintah ini pada awal-awal pembahasan kita. Tapi pada bagian ini akan kita bahas agak lebih ditel. Perintah print akan melayani semua permintaan pencetakan ke layar. Baik yang sederhana maupun yang terformat. Dengan bantuan beberapa modul penanganan string, perintah print lebih baik lagi penampilannya. Mari kita mulai mengekplorasi perintah ini. Perintah print yang telah Anda gunakan belum menggambarkan kemampuan sesungguhnya. Kita dapat memakai perintah ini untuk menampilkan rangkaian string yang teratur rapi sesuai dengan kebutuhan kita. Perhatikan contoh yang diberikan di bawah ini. 

def kali(x, y): 
    return x*y 
for x in range(1,11): 
    for y in range(1,11): 
        print "%3d " % kali(x,y), 
    print 
 
Jika skrip ini dijalankan di layar akan dicetak tampilan berikut, 

$ python kali.py 
 1   2   3   4   5   6   7   8   9   10 
 2   4   6   8  10  12  14  16  18   20 
 3   6   9  12  15  18  21  24  27   30 
 4   8  12  16  20  24  28  32  36   40 
 5  10  15  20  25  30  35  40  45   50 
 6  12  18  24  30  36  42  48  54   60 
 7  14  21  28  35  42  49  56  63   70 
 8  16  24  32  40  48  56  64  72   80 
 9  18  27  36  45  54  63  72  81   90 
10  20  30  40  50  60  70  80  90  100
 
Tanpa adanya string format "%3d" maka tampilan di layar akan tampak berantakan.Terdapat beberapa string format yang bisa dipakai. Contoh string format ditunjukkan pada Tabel 1. Modul yang mendukung format pencetakan adalah modul string. Modul ini berisi fungsi-fungsi yang ada hubungannya dengan manipulasi string. Fungsi yang paling umum dipakai adalah fungsi center(), rjust(), dan ljust(). Mari kita coba bagaimana fungsi-fungsi ini beraksi. Cara paling mudah adalah melalui mode interaktif interpreter Python. 

>>> string.center("0", 10) 
'    0     ' 
>>> string.ljust("0", 10) 
'0         ' 
>>> string.rjust("0", 10) 
'         0' 
>>>_ 
 
Fungsi lain masih banyak dan bisa dibaca daftarnya dalam dokumentasi Python.   

Membaca Dari File

Akhirnya sampailah kita pada pembahasan operasi baca tulis ke file. Kita akan melakukan beberapa percobaan. Sebelumnya kita siapkan dahulu file teks normal dengan isi yang ditunjukkan di bawah ini. beri nama dumpfile.txt.
ini baris pertama ke-2 dan ketiga 
Aktifkan Python kemudian coba buka file, 

>>> file = open("dumpfile.txt") 
>>>_ 
 
Fungsi open mempunyai sintaks umum, 

open(filename[, mode[, buffering]]) 
 
berguna untuk membuka file sesuai dengan operasi yang ingin kita lakukan. Secara default mode adalah file dibuka untuk dibaca saja, yaitu mode diisi dengan "r". Mode yang lain yang bisa kita berikan adalah "w" dan "a". Berturut-turut berfungsi untuk menulis dan menambahkan. Untuk sementara parameter buffering kita tinggalkan lebih dahulu. Anda dapat mendalami lebih lanjut di lain waktu. 

Setelah proses pembukaan file tidak ada kesalahan kita dapat membaca dari file tersebut. Untuk membaca keseluruhan file bisa digunakan fungsi read() dalam objek file yang telah kita buka. Seperti berikut, 

>>> semua = file.read() 
>>> semua 
 
'ini baris pertama\012ke-2\012dan ketiga\012' 
 
 >>>_ 
 
Sedangkan untuk membaca beberapa karakter dari file bisa kita berikan argumen pada fungsi read() sebanyak karakter yang akan kita baca. Seperti ini, 

>>> sepuluh = file.read(10) 
>>> sepuluh 
'ini baris ' 
>>>_ 
 
Setelah proses pembacaan file penunjuk internal file akan bergeser sampai posisi terakhir proses baca dijalankan. Informasi ini bisa kita dapatkan dengan menggunakan fungsi tell().

>>> file.tell() 
10 
>>>_ 
 
Ini berarti penunjuk internal file sudah sampai pada karakter kesebelas, karena posisi dihitung mulai 0. Jika kita jalankan perintah untuk membaca lagi maka pembacaan akan dimulai dari posisi ini. Untuk mengembalikan penunjuk internal file ke posisi awal lagi bisa dilakukan dengan fungsi seek(). 

>>> file.seek(0) 
>>> file.tell() 
0 
>>>_ 
 
Misalkan kita ingin meletakkan penunjuk ke posisi tertentu, katakanlah karakter kelima. Perintah yang harus kita berikan adalah, 

>>> file.seek(4) 
>>> file.tell() 
4 
>>> file.read(5) 
'baris' 
>>>_ 
 
Beberapa informasi yang penting sehubungan dengan manipulasi file bisa kita dapatkan, seperti contoh berikut ini, 

>>> file.name #mencetak nama file 
'dumpfile.txt' 
>>> file.mode #file dibuka dengan mode ini 
'r' 
>>> file.closed #cek apakah file telah ditutup 
0 
>>> file.fileno() #mencetak file deskriptor yang dipakai 
3 
>>>_ 
 
Pembacaan data dari file tidak hanya bisa dilakukan per karakter tetapi bisa juga dibaca per baris dengan fungsi readline(). 

>>> file.seek(0) 
>>> satu = file.readline() 
>>> print satu 
 
 ini baris pertama 
 
 >>>_ 
 
Kita juga bisa membaca file semuanya sekaligus dan menyimpannya dalam sebuah list. 

>>> semua = file.readlines() 
>>> semua 
  ['ini baris pertama\012', 'ke-2\012', 'dan ketiga\012'] 
>>>_ 

Menyimpan Ke File

Baik, sejauh ini kita sudah melakukan eksperimen-eksperimen membaca file. Tentu saja kita juga ingin bisa menyimpan data yang telah selesai kita olah ke dalam file. Pseudo algoritmanya kira-kira begini,
  1. buka file untuk proses tulis,
  2. siapkan data yang akan disimpan,
  3. simpan data,
  4. tutup file.
Sebagai contoh, kita akan menyalin satu baris text dari file yang telah kita buat ke file yang lain. Implementasinya paling tidak seperti ini,
>>> asal = open("dumpfile.txt") 
>>> tujuan = open("hasil.txt", "w") 
>>> satu = asal.readline() 
>>> tujuan.write(satu) 
>>> asal.close() 
>>> tujuan.close() 
>>>_
 
Sekarang Anda bisa melihat apakah file hasil.txt berisi baris pertama dari file dumpfile.txt.
Jika kita ingin menyimpan string berbentuk list, kita bisa menggunakan fungsi writeline(). Sebagai contoh kita akan menyalin isi file dumpfile.txt ke file salinan.txt. 

>>> asal = open("dumpfile.txt") 
>>> tujuan = open("salinan.txt", "w") 
>>> isi = asal.readlines() 
>>> tujuan.writelines(isi) 
>>> asal.close() 
>>> tujuan.close() 
>>>_ 
 
Sebagai penutup diberikan contoh skrip untuk memberi nomor baris kode sumber. Ketik kode di bawah ini dan beri nama no-brs.py.

#!/usr/bin/python 
import sys 
file = open(sys.argv[1], "r") 
n = 0 
for i in file.readlines(): 
    n = n + 1 
    s = "00%s" % n 
    print "%s| %s" % (s[-3:],i[:-1])
 
Anda bisa menjalankan dari prompt sistem operasi dengan perintah, 

$ python no-brs.py namafile.asal 
 
Sekarang kira-kira Anda bisa atau tidak menyimpan hasil perkalian 10x10 yang ditunjukkan sebelumnya ke file? Tidak terlalu sulit bukan? Silakan mencoba. Saya tunggu tanggapan para pembaca.


Jangan lupa baca yang ini juga



0 comments:

Posting Komentar

PEDOMAN KOMENTAR
Ayo berpartisipasi membangun budaya berkomentar yang baik. Pantang bagi kita memberikan komentar bermuatan menghina atau spam.
Kolom komentar tersedia untuk diskusi, berbagi ide dan pengetahuan. Hargai pembaca lain dengan berbahasa yang baik dalam berekspresi. Setialah pada topik. Jangan menyerang atau menebar kebencian terhadap suku, agama, ras, atau golongan tertentu.

Bangun sharing ilmu dengan berkomentar disini :