Sunday 29 March 2015

7.1.Slice, dan Matrix pada List

Masih seperti string, List memiliki index dan dapat dipotong. Sedangkan matrik merupakan multidimensi array. 


  1. >>> slist=[1,2,3,4,5,6,7,8,9]
  2. >>> slist[1]
  3. 2
  4. >>> slist[-3]
  5. 7
  6. >>> slist[1:4]
  7. [2, 3, 4]
  8. >>> len(slist)
  9. 9
  10. >>> slist[:5]
  11. [1, 2, 3, 4, 5]
  12. >>> slist[4:]
  13. [5, 6, 7, 8, 9]
  14. >>> 


dan untuk matriknya:


  1. >>> smatrik=[1,2,3],[4,5,6],[7,8,9]
  2. >>> smatrik[1]
  3. [4, 5, 6]
  4. >>> smatrik[1][1]
  5. 5
  6. >>> smatrik[0]
  7. [1, 2, 3]
  8. >>> smatrik[0][0]
  9. 1
  10. >>> len(smatrik)
  11. 3
  12. >>> len(smatrik[1])
  13. 3
  14. >>> smatrik[1][0]
  15. 4
  16. >>> 

dan matrik smatrik untuk lebih jelasnya gambarannya adalah sebagai berikut:


Index 0 1 2

0 1 2 3 smatrik[0]
1 4 5 6 smatrik[1]
2 7 8 9 smatrik[2]

Untuk smatrik [0], 
smatrik[0][0] = 1
smatrik[0][1] = 2
smatrik[0][2] = 3

Untuk smatrik [1], 
smatrik[1][0] = 4
smatrik[1][1] = 5
smatrik[1][2] = 6

Untuk smatrik [2], 
smatrik[2][0] = 7
smatrik[2][1] = 8
smatrik[2][2] = 9



List dapat diganti atau dimodifikasi, juga dapat dipotong isi dari list tersebut, kita dapat mengganti list menurut index-nya.

  1. >>> pList=['satu','dua','tiga']
  2. >>> pList
  3. ['satu', 'dua', 'tiga']
  4. >>> pList[0]='tujuh'
  5. >>> pList
  6. ['tujuh', 'dua', 'tiga']
  7. >>> pList[:2]=['5Lima','6enam']
  8. >>> pList
  9. ['5Lima', '6enam', 'tiga']
  10. >>> 


Pada baris ke 4 kita mengganti nilai pList pada index 0, yang semula 'satu' menjadi 'tujuh'.
Dan pada baris ke 7 kita mengganti nilai pList dari index 0 sampai index 1 menjadi '5Lima' dan '6enam'.
Dengan list ini kita juga bisa mensisipi diantara index dalam list.

  1. >>> pList
  2. ['5Lima', '6enam', 'tiga']
  3. >>> pList[1:2]
  4. ['6enam']
  5. >>> pList[1:2]=['2','3']   #mengganti dan mensisipi nilai baru
  6. >>> pList
  7. ['5Lima', '2', '3', 'tiga']
  8. >>> pList[:1]=[]           #menghapus index 0
  9. >>> pList
  10. ['2', '3', 'tiga']
  11. >>> 


Contoh diatas kita mensisipi 2 nilai yang baru pada index 1 (Baris ke 5), yang semula index 1 bernilai '6enam' menjadi '2' ditambah nilai baru yaitu '3', sehingga pList index ke 2 yang awalnya bernilai 'tiga' menjadi '3', dan nilai 'tiga' menjadi index ke 3. 

Bila kita ingin menambahkan nilai-nilai lain dibelakang list, kita bisa mempergunakan list.extend() atau list.append() untuk menambahkan .

  1. >>> pList.extend(['5','6','7','8'])
  2. >>> pList
  3. ['2', '3', 'tiga', '5', '6', '7', '8']
  4. >>> pList.append('10')   
  5. >>> pList
  6. ['2', '3', 'tiga', '5', '6', '7', '8', '10']
  7. >>> 



7.List

List pada Python merupakan kumpulan objek yang teratur. Tidak seperti string, lists bisa memuat objek, yaitu: strings, numbers, juga list yang lain. List juga dapat diubah tempatnya dengan offsets dan slices, yang merupakan metode list itu sendiri. 

Offsets dan slices ini merupakan list.offsets dan list.slices, pada string juga ada slice, tapi slice pada string merupakan str.slice.

Cara yang biasa untuk pengoperasian lists adalah sebagai berikut:

  1. pp= [] sebuah list kosong
  2. pp= ['ab', 'cd', 12, 1.25, 'budi', [ tt, yy, uu ] ] 
  3. pp= list('hallo')
  4. pp= list ( range (-1,5))
Untuk memanipulasinya (misalkan kita punya variable pp=[1,2,3]:
  1. pp[index]
  2. len(pp)
  3. pp*2
  4. for a in pp:print(a)
  5. pp.append(2) #menambahkan angka 2 diakhir list
  6. pp.extend([1,2,3]) #menambahkan baris angka diakhir list
  7. pp.insert(2,50) # mengganti index 2 dengan 50
  8. pp.count(2) #menghitung banyaknya angka 2 pada list
  9. pp.sort() #mensortir dari yang kecil ke besar
  10. pp.reverse() #mensortir dari yang besar ke kecil
  11. p.clear() # menghapus semua isi list
  12. pp.pop(2) # menghapus index 2
  13. pp.remove(3) #menghapus satu angka 7 pada list.
  14. del pp[3]
  15. dan lain-lain

Pada dasarnya penggunaan list mirip dengan string, misalnya:

  1. >>> pp=[1,2,3,4,5,'a','b','c']
  2. >>> len(pp)
  3. 8
  4. >>> pp*2
  5. [1, 2, 3, 4, 5, 'a', 'b', 'c', 1, 2, 3, 4, 5, 'a', 'b', 'c']
  6. >>> pp
  7. [1, 2, 3, 4, 5, 'a', 'b', 'c']
  8. >>> oo=['ii','tt','ff','ss','ee']
  9. >>> pp+oo
  10. [1, 2, 3, 4, 5, 'a', 'b', 'c', 'ii', 'tt', 'ff', 'ss', 'ee']
  11. >>> 2 in pp
  12. True
  13. >>> 2 in oo
  14. False
  15. >>> for x in pp:
  16. print(x, end='*')

  17. 1*2*3*4*5*a*b*c*
  18. >>> 

6.3.4. Format Expression pada Base Dictionary

Format Expression juga bisa mempergunakan dictionary.
  1. >>> dd={'nama':'Budi', 'umur':20}
  2. >>> 'Seorang pria bernama %(nama)s dan berumur %(umur)d'%(dd)
  3. 'Seorang pria bernama Budi dan berumur 20'
  4. >>>
  5. >>> aa='ketika %(nama)s berumur %(umur)d'
  6. >>> aa%dd
  7. 'ketika Budi berumur 20'
  8. >>> 

Kita perhatikan pada baris 2 ( 'Seorang pria bernama %(nama)s dan berumur %(umur)d'%(dd) ). Pada expresinya variablenya ada ditengah-tengah %(variable)s dan %(variable)d

6.3.3.Format Expresi pada String

String formatting expression: 'x %s y'  % (nilai s).
'x %s' x disini adalah variable dan tidak ada nilainya hanya variable saja, dan variable ini akan digantikan dengan nilai x yang ada dibelakangnya % (nilai s). 
  1. >>> 'halo %s pagi' %('selamat')
  2. 'halo selamat pagi'
  3. >>> 
Dan bisa menggunakan lebih dari 1 %s untuk menbuat string.
  1. >>> 'halo %s %s, hari %s %s bukan'%('selamat','pagi', 'yang','indah')
  2. 'halo selamat pagi, hari yang indah bukan'
  3. >>> 
Kita juga bisa menggunakan angka dengan menggunakan %d sebagai indikatornya bila ingin lebih specifik.
  1. >>> '%d hari %d kali sarapan %s'%(1,2,'pagi')
  2. '1 hari 2 kali sarapan pagi'
  3. >>> a='malam'
  4. >>> b='ronda'
  5. >>> c='dingin'
  6. >>> d=10
  7. >>>'%s ini giliran %s,%s ini %s sekali dan baru jam %d' %(a,b,a,c,d)
  8. 'malam ini giliran ronda,malam ini dingin sekali dan baru jam 10'
  9. >>> 
Penggunaan %s juga dapat digunakan untuk menunjukan angka, pada kenyataannya %s dapat digunakan untuk semua type.
  1. >>> '%s, %s, dan %s' % ( 1,2,[ 3.14, 0.254, 7 ] )
  2. '1, 2, dan [3.14, 0.254, 7]'
  3. >>> 
Tipe kode yang dapat digunkan pada string % adalah:

Kode (%)

s
String mengunakan str()
r
String menggunakan repr()
c
Karakter (integer atau string)
d/u
Decimal base 10
i
integer
o
Octa integer
x/X
Hexa integer
e/E
Exponen floating point
f/F
Floating point
g/G
Floating point e/E atau f/F

Secara garis besar stuktur format seperti:

%[(nama)][flags][width][.precision]typecode

Mabokkan lihatnya?
nama adalah nama untuk index dari dictionary yang ada disebelah kanan.
flags adalah spesifikasi dari garis kiri(-), tanda nomor(+), kosong sebelum angka positip dan (-) untuk negatip, dan nol (0).
width adalah minimum panjang text penganti.
precision adalah  menampilkan angka desimal pada floating-point.

Friday 27 March 2015

6.3.2.Konversi String

Kadang kala kita memerlukan string untuk dijumlahkan, mungkin sekarang belum tahu apa penyebabnya kita memerlukan string untuk dijumlahkan. Dengan python tidak bisa itu (menjumlahkan string dengan angka).
  1. >>> a='15'
  2. >>> a+15
  3. Traceback (most recent call last):
  4.   File "<pyshell#35>", line 1, in <module>
  5.     a+15
  6. TypeError: Can't convert 'int' object to str implicitly
  7. >>> 

Tapi jangan khawatir, python punya solusinya yang mudah.
  1. >>> int(a)+15
  2. 30
  3. >>> 

Begitu juga sebaliknya kita bisa mengkonversikan angka ke string.
  1. >>> b=20           # variable integer b=20
  2. >>> c=str(b)      # variable c = konversi variable int menjadi string
  3. >>> type(c)        # data type var c
  4. <class 'str'>
  5. >>> c
  6. '20'
  7. >>> 

Juga dengan perintah repr() mengkonversikan menjadi string tapi dalam bentuk baku dengan tanda petiknya.
  1. >>> print(str('helloSTR'),repr('helloREPR'))
  2. helloSTR 'helloREPR'
  3. >>> 
contoh lain mengkonversikan data:
  1. >>> str(1.25), float('.0000004')
  2. ('1.25', 4e-07)
  3. >>> 

String pada baris 1 (str(1.25),float('0.0000004')), str(1.25) adalah mengkonversikan float menjadi string, dan float('0.0000004') adalah mengkonversikan string '0.0000004' menjadi float.

Karakter juga dapat dikonversikan kedalam int, begitupun sebaliknya.
  • >>> a='z'              # var a = string 'z'
  • >>> b=ord(a)       # var b =  karakter dari var a menurut byte nya
  • >>> b                    # cetak var b
  • 122
  • >>> type(b)          # tipe data var b
  • <class 'int'>
  • >>> c=chr(b)        # var c = karakter dari b
  • >>> c                     # cetak var c
  • 'z'
  • >>> type(c)           #tipe data var c
  • <class 'str'>
  • >>> 

6.3.1. Indexing dan Slicing

Index dan slice pada string dapat dilakukan karena string memiliki keteraturan pada karakternya. Bila variabel a = 'kapal ikan' akan tetap sama letak posisinya, mulai dari index 0 = 'k', index 1='a', index 2='p' dan seterusnya. Index mulai dari angka 0 dan berakhir dengan panjang string dikurang 1. 

Index string pada python bisa positip atau negatif. contohnya, bila variabel a='xyz' :

Index=
-3
-2
-1
0
1
2
Var a=
x
y
z
x
y
z

  1. >>> a[-3],a[-2],a[-1], a[0], a[1], a[2]
  2. ('x', 'y', 'z', 'x', 'y', 'z')
  3. >>> print(a[0],a[1],a[2],a[-1],a[-2],a[-3])
  4. x y z z y x
  5. >>> 

Sedangkan 'slice' adalah pemotongan dari string.

  1. >>> print(a)                # variable a='raja minyak dari medan'
  2. raja minyak dari medan
  3. >>> len(a)                    #panjang variable a 
  4. 22
  5. >>> a[3:]                      # cetak variable a mulai dari index 3
  6. 'a minyak dari medan'
  7. >>> a[6:20]                  #cetak variable a mulai dari index 6 sampai index 20
  8. 'inyak dari med'
  9. >>> a[:15]                   #cetak variable a dari awal sampai index 15
  10. 'raja minyak dar'
  11. >>> 


index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
r a j a
m i n y a k
d a r i
m e d a n

Sepertinya ada yang salah dari slice ini bukan? pada saat kita ingin memotong dari index 6 sampai index 20 (seperti pada baris ke 7) ternyata yang tercetak adalah 'inyak dari med', kurang hurup a pada index ke 20 nya bukan? Table index diatas kurang tepat, python tidak memetakan index seperti itu tetapi seperti:

0     1     2      3     4      5      6      7      8     9      10    11    12   13    14    15   16    17    18    19   20  21
r a j a

m i n y a k
d a r i
m e d a n
-22-21  -20  -19  -18   -17  -16  -15   -14  -13   -12  -11  -10   -9    -8    -7     -6     -5    -4     -3     -2 -1

Python menbuat index tepat digaris pemisah antar karakter, sehingga saat pyhon membaca index ke 20, karakter index 20 belum terbaca oleh python, tetapi disitulah pembacaan index berakhir.

Dan bila kita menggunakan index negatif:
  1. >>> a[:-5]
  2. 'raja minyak dari '
  3. >>> a[-10:-3]
  4. 'dari me'
  5. >>> 
Pemotongan (slice) bisa dengan melompat-lompat:

  1. >>> a[0:20:2]
  2. 'rj iykdr e'
  3. >>> a[::3]
  4. 'raiadien'
  5. >>> 
Format pemotongan(slice) pada string adalah 
namaVariable[index awal : index akhir : lompatan]


Dengan lompatan ini maka string dapat dibalik urutannya :
  1. >>> a[::-1]
  2. 'nadem irad kaynim ajar'
  3. >>> 

6.3. Kemampuan String

Kita ingat sebentar apa yang bisa string lakukan untuk kita. 

  • >>> a='123'
  • >>> b='abc'
  • >>> c='  '
  • >>> a
  • '123'
  • >>> b
  • 'abc'
  • >>> c
  • ' '
  • >>> len(a),len(b),len(c)  # len() menghitung banyaknya karakter string
  • (3, 3, 1)
  • >>> a+c+b                       # '+' menyambungkan string
  • '123 abc'
  • >>> a*2+c+b*2                #'*' menggandakan string
  • '123123 abcabc'
  • >>> len(a*2+c+b*2)
  • 13
  • >>> 

Misalnya kita ingin menbuat garis putus-putus sebanyak 50 buah :

  • >>> d='----...------------'         # cara susah
  • >>> d
  • '----...------------'
  • >>> e='-'
  • >>> f=e*50                             # cara lebih baik
  • >>> f
  • '--------------------------------------------------'
  • >>> 
Untuk memsisipi sebuah atau lebih karakter pada sebuah string, kita bisa menggunakan statement 'for':

  1. >>> a='masih ngantuk nih'
  2. >>> for i in a:print(i, end='*')        #tekan tombol enter 2x 

  3. m*a*s*i*h* *n*g*a*n*t*u*k* *n*i*h*
  4. >>> for i in a:print(i, end='--')            #tekan tombol enter 2x

  5. m--a--s--i--h-- --n--g--a--n--t--u--k-- --n--i--h--
  6. >>> 
Pada baris ke 2 'for i in a'  berarti for(i=0 ; i<=len(a) ; i++) dan print(i,end='*') python mengartikan i merupakan string yang setiap karakternya diakhiri dengan '*'.

Untuk mengetahui sebuah atau lebih karakter pada string diatas :

  1. >>> 'a' in a
  2. True
  3. >>> 's' in a
  4. True
  5. >>> 
Contoh diatas, kita mencari apakah ada karakter 'a' dan 's' pada string a, dan hasilnya ada.

String juga memiliki metode-metode yang memudahkan kita memanipulasi string.

Metode


str.capitalize() Menbuat string dan karakter pertama akan diberikan hurup besar.
str.casefold() Membuat string dan biasanya digunakan untuk membandingkan secara caseless. Sebagai contoh hurup jerman 'ß ' yang ekuivalen dengan 'ss', akan dikonversikan menjadi 'ss'


>>> b='ß'
>>> b
'ß'
>>> b.casefold()
'ss'
>>>
str.center(width[,karakter]) Menjadikan string berada ditengah-tengah, dan diapit oleh karakter. Spasi adalah karakter defaut bila tidak diisi.


Width adalah panjang string yang akan dibuat, width => string.
Karakter adalah karakter yang akan mengisi disisi kiri dan kanan string tersebut.


>>> a
'hello'
>>> a.center(20,'*')
'*******hello********'
>>>
str.count(sub[,start[,end]]) Menghitung karakter dari sebuah string.


Sub = satu atau lebih karakter yang akan dihitung.
Start = awal index string
end = akhir index string


>>> a
'hello'
>>> a.count('l',4,10)
0
>>> a.count('l',0,5)
2
>>> a.count('el',0,5)
1
>>>
str.encode(encoding="utf-8", errors="strict")
Mengkonversi string dengan pemetaan karakter yang lain.
'strict' merupakan default.
str.endswith(suffix[,start[,end]])
Menghasilkan boolean 'true' atau 'false'.
Suffix = akhiran dari string.
start = index awal dari string.
end = index akhir dari string.


>>> a
'hello'
>>> suf
'll'
>>> a.endswith(suf,0,3)
False
>>> a.endswith(suf,0,4)
True
>>>
str.expandtabs(tabsize=8)
Mengganti semua escape sequence \t dengan spasi.


>>> a='hallo\tselamat\tpagi'
>>> a
'hallo\tselamat\tpagi'
>>> a.expandtabs(5) #ganti \t dengan 5 spasi
'hallo selamat pagi'
>>>
str.find(sub[,start[,end]])
Mencari satu atau lebih karakter dari string. Menghasilkan -1 bila pencaharian gagal, dan index string bila pencarian berhasil.


>>> a
'almanak aladin alturun'
>>>
>>> a.find('al')
0
>>> a.find('lm')
1
>>> a.find('zz')
-1
>>> a.find('adin')
10
>>>
str.format(*args,**kwargs)
>>> '{0} sangat {1} bila {2} {3}'.format('Jakarta','macet','jam',7)
'Jakarta sangat macet bila jam 7'
>>>
str.index(sub[,start[,end]])
Seperti str.find, tapi menghasilkan error bila karakter tidak ditemukan.
>>> a.index('adin')
10
>>> a.index('zz')
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
a.index('zz')
ValueError: substring not found
>>>
str.isalnum()
Menghasilkan 'true' bila karakter string adalah alphanumeric dan setidaknya terdapat satu karakter, dan 'false' bila sebaliknya.
>>> dd='c'
>>> dd.isalnum()
True
>>> dd='8'
>>> dd.isalnum()
True
>>> dd=''
>>> dd.isalnum()
False
>>>
str.isalpha()
Menghasilkan 'true' bila string merupakan alphabet dan setidaknya terdapat satu karater, dan 'false' bila sebaliknya.
>>> dd='hello 12'
>>> dd.isalpha()
False
>>> dd='hello'
>>> dd.isalpha()
True
>>>
str.isdecimal()
Menghasilkan 'true' bila string merupakan angka decimal dan setidaknya terdapat satu karater, dan 'false' bila sebaliknya.
str.isdigit()
Menghasilkan 'true' bila string merupakan digit dan setidaknya terdapat satu karater, dan 'false' bila sebaliknya.
str.isidentifier()
Menghasilkan 'true' bila string merupakan identifier, dan 'false' bila sebaliknya.
str.islower()
Menghasilkan 'true' bila string merupakan karakter string semuanya hurup kecil dan setidaknya terdapat satu karater, dan 'false' bila sebaliknya.
str.isnumeric()
Menghasilkan 'true' bila string merupakan karakter numerik dan setidaknya terdapat satu karater, dan 'false' bila sebaliknya.
str.isprintable()
Menghasilkan 'true' bila string dapat dicetak atau kosong, dan 'false' bila sebaliknya.
str.isspace()
Menghasilkan 'true' bila string merupakan spasi dan setidaknya terdapat satu karater, dan 'false' bila sebaliknya.
str.istitle()
Menghasilkan 'true' bila string merupakan titlecased dan setidaknya terdapat satu karater, dan 'false' bila sebaliknya.
>>> dd= 'halo jakarta'
>>> dd.istitle()
False
>>> dd='Hallo jakarta'
>>> dd.istitle()
False
>>> dd='Halo Jakarta'
>>> dd.istitle()
True
>>>
str.isupper()
Menghasilkan 'true' bila string merupakan hurup kapital dan setidaknya terdapat satu karater, dan 'false' bila sebaliknya.
str.join(iterable)


str.ljust(width[,fillchar])


str.lower()
Mengkonversikan string menjadi hurup kecil.
str.lstrip([chars])
Menghapus karakter awal.
>>> dd
'Halo Jakarta'
>>> dd.lstrip('Hjk')
'alo Jakarta'
>>> dd.lstrip('Ha')
'lo Jakarta'
>>>


Thursday 26 March 2015

6.2.Triple Tanda Petik

Triple tanda petik adalah ''' (untuk satu tanda petik (')) dan """ (untuk double tanda petik (")), yang merupakan 'block string' atau beberapa baris untuk data text, selanjutnya masih sama seperti string. 

  • >>> a='''hello
  • hello
  • helloooo
  • semua'''
  • >>> a
  • 'hello\nhello\nhelloooo\nsemua'
  • >>> print(a)
  • hello
  • hello
  • helloooo
  • semua
  • >>> 
Ini hanyalah bila kita ingin membuat beberapa baris text sehingga tidak perlu bersusah payah mensisipkan \n disetiap barisnya, juga memudahkan kita untuk membacanya. 

6.1. Escape sequences

Escape sequences kita telah menggunakannya, yaitu suatu kode didalam sebuah string yang diawali dengan tanda ' \ ' dan dilanjutkan dengan kode karakternya. Escape sequences diperlukan untuk membuat sebuah string memiliki sebuah format text terlihat lebih baik. Tanpa escape sequences, string akan menjadi sebuah kalimat yang membosankan dan panjang (tidak ada garis baru). Escape sequences ada karena untuk penulisannya pada string karakter tersebut tidak ada pada keyboard.


Ada beberapa escape sequence yang perlu diperhatikan:

Escape Sequence

\\
Backslash (\)
\'
Single petik (')
\"
Double petik (")
\a
ASCII Bell (BEL)
\b
ASCII Backspace (BS)
\f
ASCII Formfeed (FF)
\n
ASCII Linefeed (LF) / baris baru
\r
ASCII Carriage Return (CR)
\t
ASCII Horizontal Tab (TAB)
\v
ASCII Vertical Tab (VT)
\ooo
Character with octal value ooo
\xhh
Character with hex value hh


  • >>> a='selamat \\ pagi \' semua \" apa \a kabar\bHari \fyang \nindah bukan \t? sudah \tdapat \vinspirasi belum?'
  • >>> print(a)
  • selamat \ pagi ' semua " apa kabar Hari yang 
  • indah bukan ? sudah dapat inspirasi belum?
  • >>> len(a)
  • 94

Tidak semua yang ada pada python IDLE tercetak dengan baik disini, tapi kurang lebihnya sama.


Lalu bagaimana dengan alamat file yang ada di komputer seperti 'c:\nomor\tujuh.txt' misalnya? disana ada \n yang membuat garis baru dan \t yang merupakan tabulasi. 



  • >>> baca=open('c:\satu\tujuh.txt')
  •   
  • SyntaxError: invalid syntax
  • >>> 


Terjadi error pada perintah!, sekarang kita coba dengan double '\' :


  • >>> baca=open('c:\\satu\\tujuh.txt')
  • Traceback (most recent call last):
  •   File "<pyshell#30>", line 1, in <module>
  •     baca=open('c:\\satu\\tujuh.txt')
  • FileNotFoundError: [Errno 2] No such file or directory: 'c:\\satu\\tujuh.txt'
  • >>> 

Disini juga terjadi error, tapi ini karena file tidak ditemukan, hehehe... kita coba bikin file dan foldernya sekarang.


  • >>> baca=open('c:\\satu\\tujuh.txt')
  • >>> 


Tidak terjadi apa-apa bukan? setidaknya tidak ada error yang muncul. Lalu apa yang terjadi disana? Python membuka file tujuh.txt, karena tidak ada perintah apa-apa lagi, jadi Python hanya membuka saja. Sekarang kita berikan perintah read() pada variable baca.


  • >>> baca.read()
  • 'sdfsd'
  • >>> 


Isi file tujuh.txt yang saya punya adalah 'sdfsd'. 

Cara lainnya adalah:


  • >>> baca=''       # menbuat baru variable baca
  • >>> baca=open(r'c:\satu\tujuh.txt')   # ada penambahan hurup 'r' 
  • >>> baca.read()
  • 'sdfsd'
  • >>> 

Monday 23 March 2015

6.String

Ketika kita bercerita tentang text, maka di kepala kita terbayang hurup, angka, simbol seperti kita menulis sms yang panjang tapi dibuat singkat. Tapi, komputer tidak menanggapinya demikiaan, komputer menggunakan bit dan byte. Semua yang kita lihat disini juga merupakan bit dan byte, jadi apa yang kita lihat pada blog ini, tidak sama dengan apa yang dilihat oleh komputer. 

Pemetaan karakter yang paling sering digunakan adalah ASCII karena pemetaanya merupakan pemetaan dari bahasa ingris. Dan bahasa karakter bahasa ingris dan bahasa indonesia tidak jauh berbeda. ASCII memiliki 128 karakter, dari 0 sampai 127.


Bin
Octal
Dec
Hex
Print form[a]
000 0000
000
0
00
000 0001
001
1
01
000 0010
002
2
02
000 0011
003
3
03
000 0100
004
4
04
000 0101
005
5
05
000 0110
006
6
06
000 0111
007
7
07
000 1000
010
8
08
000 1001
011
9
09
000 1010
012
10
0A
000 1011
013
11
0B
000 1100
014
12
0C
000 1101
015
13
0D
000 1110
016
14
0E
000 1111
017
15
0F
001 0000
020
16
10
001 0001
021
17
11
001 0010
022
18
12
001 0011
023
19
13
001 0100
024
20
14
001 0101
025
21
15
001 0110
026
22
16
001 0111
027
23
17
001 1000
030
24
18
001 1001
031
25
19
001 1010
032
26
1A
001 1011
033
27
1B
001 1100
034
28
1C
001 1101
035
29
1D
001 1110
036
30
1E
001 1111
037
31
1F
010 0000
040
32
20
010 0001
041
33
21
!
010 0010
042
34
22
"
010 0011
043
35
23
#
010 0100
044
36
24
$
010 0101
045
37
25
%
010 0110
046
38
26
&
010 0111
047
39
27
'
010 1000
050
40
28
(
010 1001
051
41
29
)
010 1010
052
42
2A
*
010 1011
053
43
2B
+
010 1100
054
44
2C
,
010 1101
055
45
2D
-
010 1110
056
46
2E
.
010 1111
057
47
2F
/
011 0000
060
48
30
0
011 0001
061
49
31
1
011 0010
062
50
32
2
011 0011
063
51
33
3
011 0100
064
52
34
4
011 0101
065
53
35
5
011 0110
066
54
36
6
011 0111
067
55
37
7
011 1000
070
56
38
8
011 1001
071
57
39
9
011 1010
072
58
3A
:
011 1011
073
59
3B
;
011 1100
074
60
3C
<
011 1101
075
61
3D
=
011 1110
076
62
3E
>
011 1111
077
63
3F
?
100 0000
100
64
40
@
100 0001
101
65
41
A
100 0010
102
66
42
B
100 0011
103
67
43
C
100 0100
104
68
44
D
100 0101
105
69
45
E
100 0110
106
70
46
F
100 0111
107
71
47
G
100 1000
110
72
48
H
100 1001
111
73
49
I
100 1010
112
74
4A
J
100 1011
113
75
4B
K
100 1100
114
76
4C
L
100 1101
115
77
4D
M
100 1110
116
78
4E
N
100 1111
117
79
4F
O
101 0000
120
80
50
P
101 0001
121
81
51
Q
101 0010
122
82
52
R
101 0011
123
83
53
S
101 0100
124
84
54
T
101 0101
125
85
55
U
101 0110
126
86
56
V
101 0111
127
87
57
W
101 1000
130
88
58
X
101 1001
131
89
59
Y
101 1010
132
90
5A
Z
101 1011
133
91
5B
[
101 1100
134
92
5C
\
101 1101
135
93
5D
]
101 1110
136
94
5E
^
101 1111
137
95
5F
_
110 0000
140
96
60
`
110 0001
141
97
61
a
110 0010
142
98
62
b
110 0011
143
99
63
c
110 0100
144
100
64
d
110 0101
145
101
65
e
110 0110
146
102
66
f
110 0111
147
103
67
g
110 1000
150
104
68
h
110 1001
151
105
69
i
110 1010
152
106
6A
j
110 1011
153
107
6B
k
110 1100
154
108
6C
l
110 1101
155
109
6D
m
110 1110
156
110
6E
n
110 1111
157
111
6F
o
111 0000
160
112
70
p
111 0001
161
113
71
q
111 0010
162
114
72
r
111 0011
163
115
73
s
111 0100
164
116
74
t
111 0101
165
117
75
u
111 0110
166
118
76
v
111 0111
167
119
77
w
111 1000
170
120
78
x
111 1001
171
121
79
y
111 1010
172
122
7A
z
111 1011
173
123
7B
{
111 1100
174
124
7C
|
111 1101
175
125
7D
}
111 1110
176
126
7E
~
111 1111
177
127
7F


Pada python 3.x ini string memiliki tiga (3) tipe, yaitu:
  1. str digunakan oleh ASCII dan Unicode.
  2. bytes digunakan untuk data binier dan,
  3. bytearray yang merupakan variasi dari bytes.

String merupakan bagian dari hampir semuanya yang bisa dikodekan sebagai text atau bytes, symbol dan kata, sebuah text file (sebuah file yang berisi text), alamat internet, dan lain-lain.

Pada python, string memiliki karakter pembacaan dari kiri ke kanan dan tidak dapat ditukar penempatan karakternya. 

String bisa diisi dengan kosong, a=''
Single (')atau double (") tanda petik tidak ada bedanya. Tapi bila diawali dengan single tanda petik harus diakhiri dengan single juga, begitu juga sebaliknya, jadi bila kita ingin menuliskan sebuah string budi's , maka tulis dengan double tanda petik ("). 

  • >>> a="budi's"
  • >>> a
  • "budi's"
  • >>> print(a)
  • budi's
  • >>> b='budi"s'
  • >>> b
  • 'budi"s'
  • >>> print(b)
  • budi"s
  • >>> 
Pada dasarnya penggunaan single atau double petik tergantung pada pengguna, dan sangat subjektif. Saya pribadi lebih prefer menggunakan single petik. 

String yang lain adalah unicode (saya tidak suka topik ini) merupakan tool yang berguna untuk beberapa programer, misalnya untuk domain internet. Unicode juga sering kita jumpai di halaman-halaman web, pada email, FTP, HTML, XML, JSON, dan sebagainya. Unicode juga bisa menjadi sesuatu yang sangat berat untuk memulai (jadi kita yang punya masalah dengan unicode, kita tidak sendiri lho), dan banyak juga yang melewatkan topik ini. Jadi sebaiknya sekedar tahu sedikit banyak dari unicode ini, apakah ini akan berguna? Tidak ada orang yang tahu. Tapi dengan sedikitnya orang yang mau memahami unicode, akan memberi keuntungan sendiri bila kita memahaminya. 

Unicode didesign untuk pemetaan setiap karakter dari semua bahasa yang menggunakan 4 bytes, karena ada bahasa yang memiliki lebih dari 65535 (2 bytes) karakter. Unicode dan ASCII dalam hal pemetaan karakternya sama. Jadi Unicode sama seperti cincin Lord of the ring, 'Satu cincin menguasai semua cincin'. Kelihatanya keren kan? Tapi bila kita menggunakan 4 bytes untuk setiap karakter ascii, adalah pemborosan.

Uncode yang menggunakan 4 bytes untuk setiap karakternya disebut UTF-32, karena 4 bytes sama dengan 32 bits. UTF-16 menggunakan 2 bytes (0-65535). UTF-8, yang sama dengan ASCII dan ada penambahan untuk karakter bahasa latin.