Anda di halaman 1dari 10

Pemrograman untuk Bioinformatika

Unit 3: Konsep Python Tingkat Lanjut

Latihan dan pertanyaan teoretis


Selanjutnya, Anda akan menemukan bagian yang harus Anda selesaikan dalam modul ini dan pertanyaan teoretis untuk
dijawab.

Latihan 1
Isi kode yang diperlukan untuk:

• Hitung jumlah kata


• Menghitung jumlah spasi dalam teks
• Hitung jumlah huruf 'd' atau 'D' yang muncul

Harap perhatikan hal berikut:

• Jumlah spasi tidak harus merupakan fungsi dari jumlah kata.


• Di antara satu baris teks dan baris berikutnya, tepat setelah karakter '\' terdapat banyak spasi
• Anda harus menghitung jumlah huruf 'd', terlepas dari apakah itu huruf besar atau kecil
Di
dalam text1 = "Tidak ada alasan untuk percaya bahwa seorang pemuda kulit hitam pada saat
[1 ]: ini, \ di tempat ini, dapat mengubah sejarah dengan cara apapun. Bagaimanapun,
Afrika Selatan dulu
kemudian kurang dari satu dekade dihapus dari kendali penuh Inggris. Sudah,
undang-undang \ sedang dikodifikasi untuk menerapkan segregasi dan penaklukan
rasial, \ jaringan undang-undang yang akan dikenal sebagai apartheid"

text2 = "Menjijikkan adalah makhluk yang menyia-nyiakan kemampuan untuk mengangkat


\
mata ke surga, sadar akan waktu singkatnya di sini."

def count_words (teks):


# Menghitung kata-kata yang terkandung dalam teks string num_words = 0

# Kode untuk menyelesaikan

mengembalikan num_words

def count_spaces (teks):


# Menghitung spasi yang terdapat dalam teks string num_spaces = 0

# Kode untuk menyelesaikan

mengembalikan num_spasi

def count_letters (teks, huruf = 'd' ):


# Hitungan huruf 'huruf' yang terdapat dalam teks
angka huruf = 0

# Kode untuk menyelesaikan


mengembalikan angka

# Kami menggunakan fungsi untuk text1: num_words = count_words(text1) num_spaces =


count_spaces(text1)
jumlah_huruf = hitung_huruf(teks1)
cetak ( nomor da kata-kata dar %d " % angka_kata)
"Itu
cetak ( nomor ri
da adalah
spasi i
dar %d " % num_spasi)
"Itu
cetak ( ri adalah
nomor da huruf 'd' i
ada dari % num_huruf)
"Itu ri lah %d "
cetak ()
# Dan juga untuk teks2:
jumlah_kata = hitung_kata(teks2)
num_spasi = hitung_spasi(text2)
jumlah_huruf = hitung_huruf(teks2)
print ( "Jumlah kata adalah %d " % num_words) print ( "Jumlah spasi adalah %d " %
num_spasi) print ( "Jumlah huruf 'd' adalah %d " % num_letters)

Jumlah kata adalah 0


Jumlah spasi adalah 0
Jumlah huruf 'd' adalah 0
Di nomor kata-kata da 0
a nomor ruang
Di adalahadalah ri 0
da
a nomor dari huruf 'd' ri
Di ad dari
Petunjuk
Lihat dokumentasi Python untuk fungsi count() : https://docs . py thon.or g /3/library/string .html ( https : //docs .python.or g / 3/
library / string .html )

Latihan 2
Selesaikan fungsi matematika berikut dan dokumentasikan juga kode dari setiap fungsi. Terakhir, tuliskan beberapa contoh
penggunaan masing-masing fungsi :

Dalam # Selesaikan fungsi matematika berikut.


2] # Perhatikan penggunaan angka desimal!
impor matematika

# Sebuah contoh:
def persegi panjang_area (alas, tinggi): kembalikan alas * tinggi

def circle_area (radius): # Untuk menyelesaikan pengembalian 0.

def circle_length (radius): # Pengembalian lengkap 0.

def hypotenuse (leg1, leg2): # Pengembalian lengkap 0.

def square_area (sisi): # Untuk menyelesaikan pengembalian 0.

def volume_sphere (radius): # Pengembalian lengkap 0.

def volume_cube (sisi): # Untuk menyelesaikan pengembalian 0.

cetak (area_rectangle(2.0, 4.0))


# Tulis di sini beberapa contoh menggunakan fungsi-fungsi ini, misalnya:
# print 'Volume kubus sisi 3.5 adalah %f' % volume_cube(3.5) 8.0

Latihan 3
Latihan berikut terdiri dari mengubah angka dalam basis 2 (biner, 0/1) menjadi basis 10 (desimal).

Diberi string yang mewakili bilangan biner, misalnya, 1011, kembalikan bilangan asli yang sesuai, dalam hal ini, 11.
Di # Untuk menyelesaikan: DEFINE A FUNCTION dan tulis beberapa use case # dari fungsi
dalam tersebut
[3 ]:

Latihan 4
Diberi molekul yang diwakili oleh string seperti C9-H8-O4, hitung massa atomnya. Misalnya, untuk molekul C4-H3, massa
atomnya adalah 4*12,01 + 3*1,007825.

Buat solusi umum dengan mengakses kamus melalui kunci, yang dalam hal ini adalah jenis atom. Misalnya, untuk molekul C5-
H3 kita harus mengikuti langkah-langkah berikut:

• Pisahkan molekul dengan tanda hubung (kita bisa melakukannya dengan fungsi split, misalnya).
• Untuk setiap bagian, C5 dan H3, tentukan jenis atomnya: C dan H. (Kami akan membutuhkan semacam loop di sini)
• Akses kamus massa dan untuk kunci yang sesuai dengan jenis atom, dapatkan massanya.
• Setelah massa ditemukan, kalikan dengan jumlah atom yang ditemukan.

Petunjuk: untuk string bertipe a = 'C15', a[0] akan memberi kita tipe atom, C. a[1:] memberi kita string yang tersisa: '15'. Perlu
diingat bahwa itu harus diubah menjadi angka desimal agar dapat dikalikan .

Di [4] # massa atom


massa = { 'H' : 1.007825, 'C' : 12.01, 'O' : 15.9994, 'N' : 14.0067, 'S' :
31.972071, 'P' : 30.973762}

def menghitung_massa_atom (molekul): """


Menghitung massa atom suatu molekul
"""
massa = 0,0

# Kode untuk menyelesaikan

massa kembali

cetak (menghitung_atom_mass( 'C14-H10-O6' ))


cetak (menghitung_atomic_mass( 'C8-H10-N4-O2' ))
cetak (menghitung_atomic_mass( 'C20-H15-N5-O' ))
cetak (hitung_atom_mass( 'C20-H10-O2-P2-S' )) 0.0
0.0
0.0
0.0

Catatan penting

Sebagaimana ditentukan dalam pernyataan, kamus harus dibuat dengan cepat. Contoh berikut ini salah :
Di[5]: massa = { 'H' : 1.007825, 'C' : 12.01, 'O' : 15.9994, 'N' : 14.0067, 'S' :
31.972071, 'P' : 30.973762}

# Contoh pertama ini memiliki beberapa masalah:


# 1: tidak memperhitungkan parameter molekul
# 2: tidak menggunakan loop apa pun, solusinya adalah "harcoded"
# 3: fungsi tidak memiliki pengembalian
def count_atomic_mass (molekul):
massa = massa[ 'C' ]*13 + massa[ 'H' ]*18 + massa[ 'O' ]*2

cetak (menghitung_atomic_mass( 'C13-H18-O2' ))

Tidak ada

Di[6]: massa = { 'H' : 1.007825, 'C' : 12.01, 'O' : 15.9994, 'N' : 14.0067, 'S' :
31.972071, 'P' : 30.973762}

# Contoh kedua ini memang menggunakan loop,


# tetapi tidak menggunakan kamus massal
def count_atomic_mass (molekul):
massa = 0,0
grup = molekul.split( '-' )
untuk grup dalam grup:
jika grup[0] == 'C' :
massa += float (grup[1:]) * 12.01
massa kembali

cetak (menghitung_atomic_mass( 'C13-H18-O2' ))


156.13

Latihan 5
Salah satu algoritma paling dasar dalam kriptografi adalah sandi Caesar ( https://es.wikipedia.org /wiki/Cifrado_C % C3 %A9sar (
https://es.wikipedia.org / wiki / Cifrado_C %C3%A9sar) ) , yang digunakan oleh Julius Caesar untuk berkomunikasi dengan para
jenderalnya, dan yang terdiri dari teks yang diberikan, untuk setiap huruf teks, menambahkan perpindahan untuk mendapatkan
huruf baru yang berbeda dari aslinya. Kami akan segera memahami mekanismenya melalui contoh:

Jika kita menetapkan angka 1 ke huruf pertama alfabet, A, 2 ke huruf berikutnya, B, dll., bayangkan kita memiliki pesan berikut:
abc
123

Jika kita menerapkan perpindahan 3, kita akan menemukan huruf yang sesuai dalam alfabet:
DEF
456

ABC telah menjadi DEF karena kami telah menambahkan offset 3. Kita juga bisa menerapkan jenis perpindahan lain seperti
negatif. Misalnya, untuk offset -1 dan pesan asli ABC kita akan mendapatkan pesan terenkripsi: ZAB.

Tulis fungsi yang, dengan pesan asli dan offset, menghitung dan mengembalikan pesan terenkripsi:
def cipher_cease (pesan, offset=1): """
Di
dalam Enkripsi pesan menggunakan metode Cesar
[7 ] diberi offset """
pesan_terenkripsi = ""

# kode untuk menyelesaikan

mengembalikan pesan_enkripsi

# Di sini Anda dapat menambahkan lebih banyak contoh


print (cifrado_cesar( "PROGRAMMING FOR BIOINFORMATICS" , 1))

Latihan 6
Format PDB digunakan dalam kimia komputasi untuk menyimpan informasi tentang molekul pada disk. Setiap baris yang
dimulai dengan ATOM mewakili sebuah atom dalam molekul:
ATOM 1 TIDAK. ARG A 1 0.609 18.920 11.647 1.00 18.79
TIDAK.
ATOM 2 AC ARG A 1 0.149 17.722 10.984 1.00 13.68 C.

0,609, 18,920 dan 11,647 adalah koordinat x, y, z dari atom 1 (nitrogen, 'N', huruf terakhir dari baris). Atom kedua bertipe C
(Karbon) dan diberi nama CA (Karbon Alfa).

Lengkapi kode berikut yang memberi tahu kita jumlah atom yang ditemukan untuk setiap elemen.

Misalnya, untuk baris berikut:


ATOM 211 TIDA TYR KE 27 4.697 8.290 -3.031 1.00 13.35 T
K. IDAK. C
ATOM 212 AC TYR KE 27 5.025 8.033 -1.616 0.51 11.29
. C
ATOM 214 C. TYR KE 27 4.189 8.932 -0.730 1.00 10.87
.
ATOM 215 SALA TYR KE 27 3.774 10.030 -1.101 1.00 12.90 S
H ALAH
Kita akan memiliki dua atom tipe-C, satu atom tipe-O, dan atom tipe-N lainnya.

PENTING: Ingatlah bahwa secara apriori Anda tidak mengetahui jenis atom apa yang dapat Anda temukan sampai baris
tersebut dibaca dalam kode Anda, jadi Anda tidak dapat menentukan daftar atau kamus atom yang ditemukan kecuali
jika didefinisikan kosong dan diperbarui seperti yang kami temukan Itu jenis atom yang belum pernah kita temui
sebelumnya .

File yang akan kita gunakan ada di direktori data/ (data) dan file tersebut adalah 1l2 dan .pdb (data/1l2 dan .p db ) .
Di dalam [8 ]:
impor _
"""
Kode berikut adalah petunjuk tentang cara membaca atom baris demi baris dan
mengakses tipenya (karakter terakhir):

baris = molekul.split(os.linesep) untuk baris dalam baris:


jika line.startswith('ATOM'):
atom = garis[77].strip()
cetak atom """

def atom_count (pdb_file_name):

# Kami akan menyimpan atom yang ditemukan dalam variabel ini: number_atoms =
dict ()

# Kami membuka file:


dengan buka (pdb_file_name) sebagai file_content:

# Kode untuk diselesaikan, hapus 'pass'


lulus

mengembalikan bilangan atom

hasil = atom_count( 'data/1l2y.pdb' )

# Hasilnya harus kamus dengan


# nilai berikut:
# hasil = {'N':27, 'C':98, 'O':29, 'H':150}
cetak (hasil) {}

Petunjuk

Kode berikut akan membantu Anda memahami cara membuat kamus dengan cepat dan memprogram solusi untuk latihan ini:

molekul = " ""


ATOM 211 TIDA TYR KE 27 4.697 8.290 -3.031 1.00 13.35 TIDAK.
ATOM 212 K.
AC TYR KE 27 5.025 8.033 -1.616 0.51 11.29 C.
ATOM 214 C. TYR KE 27 4.189 8.932 -0.730 1.00 10.87 C.
ATOM 215 SALA TYR KE 27 3.774 10.030 -1.101 1.00 12.90 SALAH
ATOM 216 H
SM TYR KE 27 6.509 8.214 -1.310 0.51 12.65 SATU
C.
ATOM 218 GC TYR KE 27 7.406 7.086 -1.795 0.51 14.00 C.
ATOM 220 CD1 TYR KE 27 7.951 6.144 -0.978 0.51 14.16 C.
ATOM 222 CD2 TYR KE 27 7.674 6.963 -3.164 0.51 17.10 C.
ATOM 224 CE1 TYR KE 27 8.752 5.109 -1.405 0.51 14.93 C.
ATOM 226 CE2 TYR KE 27 8.455 5.964 -3.656 0.51 17.43 C.
ATOM 228 C.Z. TYR KE 27 8.990 5.041 -2.763 0.51 16.44 C.
ATOM 230 ooh TYR KE 27 9.803 4.026 -3.237 0.51 17.79 SALAH
ATOM 232 TIDA CYS KE 28 3.977 8.402 0.487 1.00 10.53 SATU
TIDAK.
ATOM 233 K.
AC CYS KE 28 3.295 9.146 1.517 1.00 10.04 C.
ATOM 234 C. CYS KE 28 4.174 10.264 2.053 1.00 10.31 C.
ATOM 235 SALA CYS KE 28 5.378 10.108 2.202 1.00 12.91 SALAH
ATOM 236 H
SM CYS KE 28 2.912 8.210 2.680 1.00 9.81 SATU
C.
ATOM 237 SG CYS KE 28 1.804 6.853 2.197 1.00 9.93 S
ATOM 238 TIDA GLY KE 29 3.546 11.391 2.430 1.00 10.76 TIDAK.
ATOM 239 K.
AC GLY KE 29 4.295 12.472 3.049 1.00 11.93 C.
Di dalam [9 ]:
impor _
ATOM 240 C. GLY KE 29 3.416 13.524 3.596 1.00 12.60 C.
ATOM 241 SALA GLY KE 29 3.985 14.574 4.052 1.00 15.82 SALAH
ATOM 242 H
OXT GLY KE 29 2.168 13.386 3.672 1.00 11.37 SATU
SALAH
""" SATU

# Kami akan membaca baris demi baris setiap atom dan kami akan menyimpannya
# koordinat dalam kamus: koordinat = {}

# Kami memisahkan molekul string dengan jeda baris


garis = molekul.split(os.linesep)
# Sekarang kita beralih melalui masing-masing baris for in lines :
# Jika baris dimulai dengan ATOM:
jika line.startswith( 'ATOM' ):
# Mari kita tetap menggunakan nomor atom (211, 212, 214, dll.): bidang =
line.split()
# Nomor atom sesuai dengan bidang kedua
# ketika kita memisahkan garis dengan spasi. seperti indeks
# mulai dari 0, yang kedua sesuai dengan indeks 1: num_atom = bidang[1]
cetak (num_atom)

# Sekarang kita mendapatkan koordinat x, y, z dari atom # dengan cara


yang sama:
x = float (bidang[6])
y = float (bidang[7])
z = float (bidang[8])

# Terakhir, kami menyimpan koordinat dalam kamus untuk kunci # nomor


atom: koordinat[num_atom] = [x, y, z]

# Tampilkan kamus:
cetak (koordinat)
211
212
214
215
216
218
220
222
224
226
228
230
232
233
234
235
236
237
238
239
240
241
242
{'211': [4.697, 8.29, -3.031], '212': [5.025, 8.033, -1.616], '214': [4.189, 8.932,
-0.73], '215': [3.774, 10.03, -1.101], '216': [6.509, 8.214, -1.31], '2 18':
[7.406, 7.086, -1.795], '220': [7.951, 6.144, -0.978], '222': [7.674, 6.9 63, -
3.164], '224': [8.752, 5.109, -1.405], '226': [8.455, 5.964, -3.656], '22 8':
[8.99, 5.041, -2.763], '230': [9.803, 4.026, -3.237], '232': [3.977, 8.40 2,
0.487], '233': [3.295, 9.146, 1.517], '234': [4.174, 10.264, 2.053], '235': [5.378,
10.108, 2.202], '236': [2.912, 8.21, 2.68], '237': [1.804, 6.853, 2.19 7], '238':
[3.546, 11.391, 2.43], '239': [4.295, 12.472, 3.049], '240': [3.41 6, 13.524,
3.596], '241': [3.985, 14.574, 4.052], '242': [2.168, 13.386, 3.67 2]}

Latihan 7
Untuk daftar angka berikut, tulis di layar semua yang ganjil dan berapa banyak yang ditemukan :
angka [386, 462, 47, 418, 907, 344, 236, 375, 823, 566,
597, 978, 328, 615, 953, 345, 399 , 162, 758, 219,
918, 237, 412, 566, 826, 248, 866 , 950, 626, 949,
687, 217, 815, 67, 104, 58, 512, 24, 892, 894, 767,
553, 81, 379, 843, 831, 445, 742, 717, 958, 743,
527, 345, 221, 200, 456]

Di[10]: # Jawaban Anda


Latihan 8
Buatlah program yang menghitung jarak Euclidean antara dua titik dalam ruang 2D. Titik-titik ini adalah (x1, y1) dan (x2, y2):
Di dalam [11 ]: jarak def (x1, y1, x2,
y2): d=0,0

# Untuk menyelesaikan
kembali d

print ( "Jarak antara (1,2) dan (2,4) adalah: " , distance(1,0, 2,0, 2,0, 4,0))
print ( "Jarak antara (3,2) dan (7,-3) adalah: " , distance(3.0, 2.0, 7.0, -3.0))
print ( "Jarak antara (5,1) dan (-2,5) adalah: " , distance(5.0, 1.0, -2.0, 5.0))

Jarak antara (1,2) dan (2,4) adalah: 0,0


Jarak antara (3,2) dan (7,-3) adalah: 0,0
Jarak antara (5,1) dan (-2,5) adalah: 0,0

pertanyaan 1
Paradigma pemrograman berorientasi objek banyak digunakan di sebagian besar perpustakaan yang ditulis dengan Python. Ini
adalah cara yang berguna untuk mengenkapsulasi informasi yang akan ditangani oleh objek itu sendiri di mana informasi
tersebut telah didefinisikan.

Jelaskan apa yang dimaksud dengan konsep berikut:

• Kelas
• Sebuah Objek
• sebuah atribut
• Sebuah metode
• Seorang konstruktor
• Superclass dan subclass

Berikan contoh mendefinisikan kelas dalam kode Python dan contoh menggunakan kelas yang sama .

Anda dapat mendasarkan diri pada materi ini: http://life.bsc.es/pid/brian/ python /#/7 ( http://life.bsc.es/pid/brian/ python /#/7)

Menjawab:

Jawaban Anda

Pertanyaan 2
Pengecualian adalah kesalahan yang tertangkap saat runtime. Mereka dapat dan harus ditangani oleh pemrogram untuk
meminimalkan risiko kegagalan program tertentu dengan cara yang tidak terkendali.

Berikan contoh tipe pengecualian dalam bahasa Python dan bagaimana mereka ditangkap.

Menjawab:

Jawaban Anda

Anda mungkin juga menyukai