Terjemahan.docx

  • Uploaded by: Benni Mustafa Pohan
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Terjemahan.docx as PDF for free.

More details

  • Words: 1,279
  • Pages: 7
The ShotTracker dibuat oleh metode api peluncur secara otomatis ditarik di jendela, dan menambahkannya ke daftar pemotretan (melalui self.shots.append) memastikan bahwa posisinya berubah setiap kali melalui loop, karena pemanggilan UpdateShots di atas dari loop. Baris terakhir dari loop memastikan bahwa semua pembaruan grafis diambil dan berfungsi untuk mencekik loop ke maksimum 30 iterasi per detik, mencocokkan interval waktu (1/30 detik).

UpdateShots memiliki dua pekerjaan Pindahkan semua tembakan langsung Perbarui daftar untuk menghapus semua yang "mati" (mendarat atau terbang horizontal dari jendela). Tugas kedua membuat daftar dipangkas menjadi hanya gambar yang perlu dianimasikan. Tugas pertama adalah mudah - loop melalui daftar objek ShotTracker dan meminta masing-masing untuk memperbarui. def updateShots (diri, dt): untuk pengambilan foto diri: shot.update (dt) dt mengatakan jumlah waktu ke masa depan untuk memindahkan bidikan. Tugas kedua adalah menghapus tembakan mati. Uji bahwa posisi y di atas 0 dan x adalah antara -10 dan 210.

Apakah sesuatu seperti ini akan berhasil? Jika shot.getY () <0 atau shot.getX () <-10 atau shot.getX ()> 210: self.shots.remove (tembakan) Loop ini berulang di atas self.shots, dan memodifikasi daftar sambil mengulangnya dapat menghasilkan anomali aneh. Pendekatan yang lebih baik? Buat daftar lain untuk melacak pemotretan yang masih hidup, dan tukar untuk self.shots di akhir metode.

def updateShots(self, dt): alive = [] for shot in self.shots: shot.update(dt) if shot.getY() >= 0 and shot.getX() < 210: alive.append(shot)

else: shot.undraw() self.shots = alive

Dua perbedaan dari beberapa saat yang lalu Kami mengumpulkan tembakan yang "hidup" (yang membalikkan logika) Kami undraw tembakan yang "mati"

Setelah daftar, kamus mungkin adalah tipe data koleksi yang paling banyak digunakan. Kamus tidak umum dalam bahasa lain sebagai daftar (array). Daftar memungkinkan kami menyimpan dan mengambil item dari koleksi yang berurutan. Ketika kami ingin mengakses suatu item, kami mencarinya berdasarkan indeks - posisinya dalam koleksi. Bagaimana jika kita ingin melihat siswa berdasarkan nomor id siswa? Dalam pemrograman, ini disebut pasangan kunci-nilai Kami mengakses nilai (informasi siswa) yang terkait dengan kunci tertentu (id siswa) Tiga adalah banyak contoh! Nama dan nomor telepon Nama pengguna dan kata sandi Nama negara dan ibu kota Koleksi yang memungkinkan kami mencari informasi yang terkait dengan kunci arbitrer disebut pemetaan. Kamus Python adalah pemetaan. Bahasa lain menyebut mereka hash atau susunan asosiatif.

Kamus dapat dibuat dengan Python dengan mendaftarkan pasangan kunci-nilai di dalam kurung kurawal. Kunci dan nilai digabungkan dengan “:” dan dipisahkan dengan koma. >>> passwd = {"guido": "superprogrammer", "turing": "genius", "bill": "monopoli"} Kami menggunakan notasi pengindeksan untuk melakukan pencarian >>> passwd ["guido"] 'superprogrammer'

[] mengembalikan objek dengan kunci terkait. Kamus bisa berubah.

>>> passwd ["bill"] = "bluescreen" >>> passwd {'guido': 'superprogrammer', 'bill': 'bluescreen', 'turing': 'genius'} Apakah Anda melihat kamus dicetak dalam urutan yang berbeda daripada yang dibuat? Pemetaan secara inheren tidak berurutan. Secara internal, Python menyimpan kamus dengan cara yang membuat pencarian kunci sangat efisien. Ketika kamus dicetak, urutan kunci akan terlihat pada dasarnya acak. Jika Anda ingin menyimpan koleksi dalam urutan tertentu, Anda perlu urutan, bukan pemetaan! Kunci dapat berupa jenis yang tidak berubah, nilai dapat berupa tipe apa saja, termasuk yang ditentukan oleh programmer.

Seperti daftar, kamus Python mendukung sejumlah operasi built-in yang berguna. Metode umum untuk membuat kamus adalah memulai dengan koleksi kosong dan menambahkan pasangan nilai kunci satu per satu. passwd = {} untuk membuka secara terbuka ('kata sandi', 'r'): pengguna, pass = line.split () passwd [user] = pass

>>> daftar (passwd.keys ()) ['guido', 'turing', 'bill'] >>> daftar (passwd.values ()) ['superprogrammer', 'genius', 'bluescreen']

>>> daftar (passwd.items ()) [('guido', 'superprogrammer'), ('turing', 'genius'), ('bill', 'bluescreen')] >>> "tagihan" di passwd Benar >>> "fred" di passwd Salah >>> passwd.get('bill','unknown') 'bluescreen' >>> passwd.get('fred','unknown') 'unknown' >>> passwd.clear() >>> passwd {}

Mari tulis program yang menganalisis dokumen teks dan menghitung berapa kali setiap kata muncul di dokumen. Dokumen semacam ini terkadang digunakan sebagai ukuran kasar dari kesamaan gaya antara dua dokumen dan digunakan oleh program pengindeksan dan pengarsipan otomatis (seperti mesin pencari Internet). Mari gunakan kamus di mana string yang mewakili kata-kata adalah kunci dan nilainya adalah ints yang menghitung berapa kali setiap kata muncul. Untuk memperbarui hitungan untuk kata tertentu, kita membutuhkan sesuatu seperti: jumlah [w] = jumlah [w] + 1 Satu masalah â € “pertama kalinya kami menemukan kata itu belum akan dihitung jumlahnya.

Mencoba mengakses kunci yang tidak ada menghasilkan KeyError run-time. jika w sudah dihitung: tambahkan satu ke hitungan untuk w lain: set hitungan untuk w ke 1 Bagaimana ini bisa diimplementasikan?

jika dalam hitungan: jumlah [w] = jumlah [w] + 1 lagi: jumlah [w] = 1 Pendekatan yang lebih elegan:

menghitung [w] = counts.get (w, 0) + 1 Jika w belum ada dalam kamus, ini akan mengembalikan 0, dan hasilnya adalah bahwa entri untuk w diatur ke 1.

Tugas-tugas lainnya termasuk Konversikan teks menjadi huruf kecil (sehingga kejadian "Python" cocok dengan "python") Hilangkan tanda baca (jadi “python!” Cocok dengan “python”) Membagi dokumen teks menjadi urutan kata-kata # dapatkan urutan kata dari file fname = input ("File untuk menganalisis:") text = open (fname, 'r'). membaca () text = text.lower () untuk ch dalam '! "# $% & () * +, -. / :; <=>? @ [\\] ^ _` {|} ~': text = text.replace (ch, '') kata-kata = text.split () Loop melalui kata-kata untuk membangun kamus hitungan jumlah = {} untuk kata-kata: menghitung [w] = counts.get (w, 0) + 1 Bagaimana kita bisa mencetak daftar kata dalam urutan abjad dengan jumlah yang terkait? # dapatkan daftar kata yang muncul dalam dokumen uniqueWords = daftar (counts.keys ()) # menaruh daftar kata dalam urutan abjad uniqueWords.sort () # Mencetak kata dan jumlah yang terkait untuk w di uniqueWords: print (w, jumlah [w])

Ini mungkin tidak akan sangat berguna untuk dokumen besar dengan banyak kata yang hanya muncul beberapa kali. Analisis yang lebih menarik adalah mencetak jumlah kata-kata n paling sering dalam dokumen. Untuk melakukan ini, kita perlu membuat daftar yang diurutkan berdasarkan jumlah (paling banyak hingga paling sedikit), lalu pilih item n pertama. Kita bisa mulai dengan mendapatkan daftar pasangan kunci-nilai menggunakan metode item untuk kamus. items = list (count.items ()) item akan menjadi daftar tupel seperti [('foo', 5), ('bar', 7), ('spam', 376)] Jika kami mencoba mengurutkannya dengan item .sort (), mereka akan diurutkan berdasarkan

komponen, dari kiri ke kanan (komponen kiri di sini adalah kata-kata). [('bar', 7), ('foo', 5), ('spam', 376)] Ini akan menempatkan daftar ke urutan abjad - bukan yang kita inginkan. Untuk mengurutkan item berdasarkan frekuensi, kita membutuhkan fungsi yang akan mengambil pasangan dan mengembalikan frekuensi. def byFreq (pasangan): pasangan kembali [1] Untuk mengurutkan daftar menurut frekuensi: items.sort (key = byFreq)

Kami menuju ke sana! Bagaimana jika memiliki beberapa kata dengan jumlah kejadian yang sama? Kami ingin mereka mencetak dalam urutan abjad. Artinya, kita ingin daftar pasangan terutama diurutkan berdasarkan frekuensi, tetapi diurutkan sesuai abjad dalam setiap level. Melihat dokumentasi untuk mengurutkan (melalui bantuan ([]. Semacam), ia mengatakan metode ini melakukan "semacam stabil di tempat". "Di tempat" berarti metode memodifikasi daftar yang diterapkan ke, daripada menghasilkan daftar baru. Stabil berarti item yang ekuivalen (kunci yang sama) tetap pada posisi relatif yang sama satu sama lain seperti pada aslinya. Jika semua kata dalam urutan abjad sebelum menyortirnya berdasarkan frekuensi, kata-kata dengan frekuensi yang sama akan berada dalam urutan abjad! Kita hanya perlu mengurutkan daftar itu dua kali - pertama dengan kata-kata, lalu berdasarkan frekuensi. items.sort () # pasang pesanan menurut abjad items.sort (key = byFreq, reverse = True) # pesanan berdasarkan frekuensi Pengaturan mundur ke True memberitahu Python untuk mengurutkan daftar dalam urutan terbalik. Sekarang kami siap untuk mencetak laporan dari kata-kata n paling sering. Di sini, indeks loop i digunakan untuk mendapatkan pasangan berikutnya dari daftar item. Pasangan itu dibongkar ke dalam kata dan komponen hitungannya. Kata tersebut kemudian dicetak kiri-dibenarkan dalam lima belas ruang, diikuti oleh hitungan yang benar-dibenarkan dalam lima ruang.

for i in range(n): word, count = items[i]

print("{0:<15}{1:>5}".format(word, count))

More Documents from "Benni Mustafa Pohan"