uz
Feedback
ToCode

ToCode

Kanalga Telegram鈥檇a o鈥榯ish

讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
ToCode
1 419
# 讛爪讚 讛讗驻诇 砖诇 诇诪讬讚讛 注爪诪讬转 讛专讘讛 诪讚讘专讬诐 讘注讬讚谉 讛拽讜专讜谞讛 注诇 讛拽住诐 讘诇诪讬讚讛 注爪诪讬转, 注诇 讗讬讱 砖诇诪讬讚讛 诪专讞讜拽 爪专讬讻讛 诇讛讬讜转 讬讜转专 讗住讬谞讻专讜谞讬转, 讜讘诪讬讜讞讚 讘讛拽砖专 讛讘讬转 住驻专讬 注诇 讻诪讛 讝讛 谞驻诇讗 讻砖转诇诪讬讚讬诐 诪住转讚专讬诐 讘拽讘讜爪讜转 讜讞讜拽专讬诐 讜诪讙诇讬诐 讬讞讚 专注讬讜谞讜转 讞讚砖讬诐. 谞讚诪讛 诇驻注诪讬诐 砖讛讗谞砖讬诐 讛讗诇讛 讗祝 驻注诐 诇讗 讛讬讜 转诇诪讬讚讬诐 讗讜 砖诇讗 专讗讜 转诇诪讬讚讬诐 诪拽专讜讘. 诇诪讬讚讛 注爪诪讬转 讗住讬谞讻专讜谞讬转 讛讬讗 讛讚专讱 讛讬讞讬讚讛 诇讛拽谞讜转 诪讬讜诪谞讜转 讘爪讜专讛 砖诪讗驻砖专转 讛转驻转讞讜转. 讛讛转诪讜讚讚讜转 讛讗讬砖讬转 砖诇 讻诇 转诇诪讬讚 注诐 讛讞住诪讬诐 讜讛讗转讙专讬诐 讛讗讬砖讬讬诐 砖诇讜 讘拽讘讜爪讛 注诐 转诇诪讬讚讬诐 讗讞专讬诐 砖转讜诪讻讬诐 讘讜 讜诪讜专讛 砖诪拽讚诐 讗讜转诐 讜谞讜转谉 驻讬讚讘拽 注诇 讛注砖讬讛 讛讬讗 转讛诇讬讱 讗讜转讜 转诇诪讬讚讬诐 讬爪讟专讻讜 诇讛讟诪讬注 诇拽专讗转 讛讬讜诐 讘讜 讬讛讬讜 讗谞砖讬诐 讘讜讙专讬诐 砖爪专讬讻讬诐 诇讛住转讚专 讘砖讜拽 讛注讘讜讚讛. 讗讘诇 讗诇 转讟注讜 - 讘砖讘讬诇 诇转转 诇转诇诪讬讚讬诐 讻诇讬诐 讟讜讘讬诐 诇诇诪讬讚讛 爪专讬讱 诇讛讬讜转 诪讜讻谞讬诐 讙诐 诇讞讬讜转 注诐 讛爪讚 讛讗驻诇 砖诇 讛诇诪讬讚讛 讛注爪诪讬转 讜讛讗住讬谞讻专讜谞讬转. 讛谞讛 讻诪讛 讚讘专讬诐 砖转诇诪讬讚讬诐 讬注砖讜 讻砖谞讬转谉 诇讛诐 讬讜转专 讗讞专讬讜转 注诇 讛诇诪讬讚讛 砖诇讛诐: ## 讛诐 讬讬讻砖诇讜 诇诪讬讚讛 注爪诪讬转 讗住讬谞讻专讜谞讬转 讗讜诪专转 砖讗谞讞谞讜 谞讜转谞讬诐 诇转诇诪讬讚 诪砖讬诪讛 讜讛讜讗 爪专讬讱 诇注砖讜转 讗讜转讛 讘讝诪谉 砖诇讜 讬讞讚 注诐 讛讞讘专讬诐 砖诇讜. 讛转诇诪讬讚 讬讻讜诇 诇砖讗讜诇 砖讗诇讜转 讜讗谞讞谞讜 讬讻讜诇讬诐 诇砖讗讜诇 讗讜转讜 讗讬讱 讛讜诇讱 讜诇讘拽砖 诇专讗讜转 讛转拽讚诪讜转, 拽爪转 讻诪讜 讘注讜诇诐 讛注讘讜讚讛. 讜拽爪转 讻诪讜 讘注讜诇诐 讛注讘讜讚讛 讬讻讜诇 诇讛讬讜转 砖拽讘讜爪讛 诪住讜讬诪转 转诇讱 诇讗讬讘讜讚. 讛诐 诇讗 讬讚注讜 诪讛 诇注砖讜转, 讛诐 诇讗 讬讘讬谞讜 讗转 讛讛讜专讗讜转, 讛诐 诇讗 讬讘讬谞讜 讗转 讞讜诪专讬 讛诇讬诪讜讚 砖谞转转诐 诇讛诐. 专讜讘 讛诪讜专讬诐 诇讗 诪住讜讙诇讬诐 诇讞讬讜转 注诐 转诇诪讬讚讬诐 砖诇讗 诪讘讬谞讬诐 讗讜 砖诇讗 诪住转讚专讬诐. 讙诐 讻讗谉 讘讗转专 讻诇 驻注诐 诪讞讚砖 拽砖讛 诇讬 诇注谞讜转 诇转诇诪讬讚 砖讗讬谉 诇谞讜 转砖讜讘讜转 讘讬转 住驻专 诇转专讙讜诇讬诐 讜砖讗谞讬 诪讜讻谉 诇注讝讜专 讘砖讗诇讛 谞拽讜讚转讬转 讗讘诇 砖讝讛 讙诐 讘住讚专 诇讗 诇讛爪诇讬讞. 讜诇讬 注讜讚 讬砖 讗讙'谞讚讛 讞讝拽讛 讘谞讜砖讗. 讛注谞讬讬谉 砖讘专讜讘 讛注讜诇诐 讛讗诪讬转讬 讝讛 讘讚讬讜拽 诪讛 砖拽讜专讛: 讗谞讞谞讜 诇讗 诪住转讚专讬诐, 爪讜注拽讬诐, 诪转注爪讘谞讬诐 注讚 砖讘住讜祝 诪爪诇讬讞讬诐 (讗讜 砖诇讗). 讘砖讘讬诇 砖诇诪讬讚讛 注爪诪讬转 讘讗诪转 转拽谞讛 诪讬讜诪谞讜讬讜转 诇诪讬讚讛 讞砖讜讘讜转 诇注讜诇诐 讛讗诪讬转讬 讗驻砖专讜转 讛讻讬砖诇讜谉 讞讬讬讘转 诇讛讬讜转 砖诐. 讻诇 注讜讚 讝讛 诪砖讞拽 砖讗驻砖专 专拽 诇谞爪讞 讘讜, 讗讬谉 讛转诪讜讚讚讜转 讗诪讬转讬转 讜讗讬谉 诇诪讬讚讛. ## 讛诐 讬诇诪讚讜 讟注讜讬讜转 专讜讘 讛诇讬诪讜讚 讛讗住讬谞讻专讜谞讬 讘讘转讬 住驻专 诪讘讜住住 注诇 讛专注讬讜谉 砖讛诪讜专讛 谞讜转谉 诇转诇诪讬讚讬诐 讗转 讻诇 讞讜诪专 讛诇讬诪讜讚 讜讛转诇诪讬讚 驻砖讜讟 诪讘爪注 讗转 讛诇讬诪讜讚 讗讜 讛诪砖讬诪讛 讘讝诪谉 砖诇讜 讘爪讜专讛 讗住讬谞讻专讜谞讬转. 讝讛 诇讗 诪砖拽祝 讗转 讛注讜诇诐 讛讗诪讬转讬 讜讙诐 诪砖注诪诐 诇转诇诪讬讚讬诐. 讛专讘讛 讬讜转专 诪注谞讬讬谉 诇专讗讜转 转诇诪讬讚讬诐 砖诪讞驻砖讬诐 讞讜诪专讬诐 讘注爪诪诐, 砖讜讗诇讬诐 讗转 讛讞讘专讬诐 砖诇讛诐 讗讜 讛讛讜专讬诐 砖诇讛诐 (讗讜 讗转 讙讜讙诇) 讜诪讻讬谞讬诐 诪砖讛讜 砖讛诪讜专讛 诇讗 转讻谞谉 诪专讗砖 砖讛诐 讬讘谞讜. 讜讻谉 讗诐 讗转诐 讛讜诇讻讬诐 讘讚专讱 讛讝讗转 讗诇 转讛讬讜 诪讜驻转注讬诐 讻砖讛讚讘专 砖讛诐 讘谞讜 讻讜诇诇 讟注讜讬讜转 拽讟谞讜转 讗讜 砖拽专讬诐 讘讜讟讬诐. ## 讛诐 讬注讘讬专讜 转拽讜驻讜转 讗专讜讻讜转 讘诇讬 诇诇诪讜讚 讻诇讜诐 讙诐 讗谞砖讬诐 诪讘讜讙专讬诐 诪转讞讘砖谞讬诐 讘注讘讜讚讛 讜讛讚讘专 谞讻讜谉 驻讬 讻诪讛 诇转诇诪讬讚讬诐 讘讘讬转 住驻专. 转诇诪讬讚讬诐 讬诇诪讚讜 诪讛 砖诪注谞讬讬谉 讗讜转诐 讜讬讞驻驻讜 讗转 诪讛 砖诇讗 诪注谞讬讬谉 讗讜转诐. 讞讜驻砖 讛驻注讜诇讛 砖谞转转诐 诇讛诐 讬讛驻讜讱 诇讞专讘 驻讬驻讬讜转 讻砖讛谞讜砖讗 砖注诇 讛驻专拽 讛讜讗 讛讻谞讛 诇讘讙专讜转 讘讗讝专讞讜转. 讗讘诇 诪讛 砖讬讜转专 诪讝注讝注 讛讜讗 砖诪讜讟讬讘爪讬讛 驻谞讬诪讬转 讬讻讜诇讛 诇讛讬注诇诐 诪讛专 讻诪讜 砖讛讬讗 讛讜驻讬注讛. (讜讻谉 讛诪讜讟讬讘爪讬讛 讞讬讬讘转 诇讛讬讜转 驻谞讬诪讬转 讻讚讬 诇讬爪讜专 诇诪讬讚讛 讗驻拽讟讬讘讬转 诪讞讜抓 诇诪住讙专转 砖诇 诪讜专讛-诪拽专讬讗-讞讜诪专-讜讻讜诇诐-讻讜转讘讬诐). 讞诇拽 诪讛注谞讬讬谉 讘讬爪讬专转 诪讜讟讬讘爪讬讛 驻谞讬诪讬转 讛讜讗 砖诇驻注诪讬诐 讛讬讗 诇讗 砖诐, 讜讝讛 讘住讚专. 讗诐 讗转诐 诇讗 诪讜讻谞讬诐 诇讞讬讜转 注诐 转拽讜驻讜转 讘诇讬 诇诪讬讚讛 讗讝 讗转诐 讘讛讻专讞 讬讜爪专讬诐 诪谞讙谞讜谞讬 诪讜讟讬讘爪讬讛 讞讬爪讜谞讬讬诐, 讜讘诪讻讛 讗讞转 讛驻住讚转诐 讛讻诇. ## 讛诐 讬讘讜讗讜 诇讗 诪讜讻谞讬诐 诇诪讘讞谉 诇诪讬讚讛 注爪诪讬转 讗驻拽讟讬讘讬转 拽讜专讬转 讻砖转诇诪讬讚 诪讘讬谉 讗转 讛诪讟专讛, 诪讘讬谉 讗转 讛诪讜讟讬讘爪讬讛 讜诪转拽讚诐 讘拽爪讘 砖诇讜 诇讻讬讜讜谉 讗讜转讛 诪讟专讛. 转诇诪讬讚讬诐 砖讜谞讬诐 讬转拽讚诪讜 讘拽爪讘 砖讜谞讛 讜诇讻讬讜讜谉 诪讟专讜转 砖讜谞讜转. 讗讝 讗讬讱 讘讚讬讜拽 讗转诐 讛讜诇讻讬诐 诇诪讚讜讚 讛转拽讚诪讜转? 讜讗讬讱 讛诪讘讞谉 砖诇讻诐 讛讜诇讱 诇讛砖驻讬注 注诇 讛讘讞讬专讜转 砖诇 讛转诇诪讬讚讬诐 讜注诇 讛诪讜讟讬讘爪讬讛 讛驻谞讬诪讬转 砖诇讛诐? 诇诪讬讚讛 注爪诪讬转 讗驻拽讟讬讘讬转 讛讬讗 讗谞讟讬-诪讘讞谉 讘诪讜讘谉 讝讛 砖讛诪讘讞谉 讛讜讗 讗讬砖讬 诇讻诇 诪砖转转祝 讜讛诪讬专讜抓 讛讜讗 谞讙讚 注爪诪讱 讘诇讘讚. ## 讜讘讻诇 讝讗转 诇诪讬讚讛 注爪诪讬转 讗住讬谞讻专讜谞讬转 讘讛谞讞讬讬转 诪讜专讛 讜讘砖讬转讜祝 讞讘专讬诐 诇讻讬转讛 讛讬讗 讚专讱 讛诇讬诪讜讚 讛讬讞讬讚讛 砖转讬转谉 诇转诇诪讬讚讬诐 砖诇谞讜 讗转 讛讻诇讬诐 诇讛住转讚专 讘注转讬讚 讘注讜诇诐 讛注讘讜讚讛 讛讟讻谞讜诇讜讙讬. 讛讟讻谞讜诇讜讙讬讛 诪砖转谞讛 诪讛专 讜讗谞讞谞讜 爪专讬讻讬诐 讗谞砖讬诐 注诐 住讟 诪讬讜诪谞讜讬讜转 诪讙讜讜谉 讘爪讜讜转. 讗讬谉 砖讜诐 讚专讱 砖讛讚专讻讛 讗讞讬讚讛 诇转诇诪讬讚讬诐 砖"住讜驻讙讬诐" 讗转 讛讞讜诪专 讬讻讜诇讛 诇注讘讜讚. 讛讘注讬讛 砖诇 讻诪注讟 讻诇 诪讗诪专 砖拽专讗转讬 讘讛拽砖专 砖诇 砖讬诇讜讘 诇诪讬讚讛 讗住讬谞讻专讜谞讬转 讘讻讬转讜转 讘讬转 讛住驻专 讛讬讗 砖讛诐 诪谞住讬诐 诇讛讞讝讬拽 讘诪拽诇 诪砖谞讬 拽爪讜转讬讜: 讙诐 诇拽讘诇 诇诪讬讚讛 注转讬讚谞讬转, 注爪诪讬转, 注诐 转诇诪讬讚讬诐 住拽专谞讬诐 砖讘讜谞讬诐 讚讘专讬诐 诪讜驻诇讗讬诐 讘注爪诪诐; 讜讙诐 诇讛爪诇讬讞 讘诪讘讞谉 讜诇讛转拽讘诇 诇讗讜谞讬讘专住讬讟讛. 讛砖谞讬讬诐 诇讗 讛讜诇讻讬诐 讬讞讚 讜讗讬谉 诇讬 住驻拽 注诇 讗讬讝讛 诪讛砖谞讬讬诐 爪专讬讱 诇讜讜转专.

ToCode
1 419
# 砖讬讚专讜讙 转诇讜讬讜转 诇讙讬专住讛 讛讞讚砖讛 讘讬讜转专 驻专讜讬拽讟讬诐 专讘讬诐 讛讬讜诐 诪砖转诪砖讬诐 讘讞讘讬诇讜转 讞讬爪讜谞讬讜转 讜讘诪讬讜讞讚 讘讞讘讬诇讜转 讞讬爪讜谞讬讜转 讘拽讜讚 驻转讜讞. 讘注讘讜讚讛 注诐 讞讘讬诇讜转 讞讬爪讜谞讬讜转 讬砖 讞砖讬讘讜转 诇讙讬专住讗讜转 讜诇诪住驻专讬 讛讙讬专住讛 砖诇 讗讜转谉 讞讘讬诇讜转: 1. 讗诐 讬砖 转讬拽讜谉 讗讘讟讞讛 讗讜 转讬拽讜谉 讘讗讙 拽专讬讟讬 砖诇讗 砖讜讘专 砖讜诐 讚讘专 讗讞专 讗谞讞谞讜 专讜爪讬诐 诇拽讘诇 讗讜转讜 讗诇讬谞讜 诇诪注专讻转 2. 讗诐 讬砖 砖讬驻讜专 砖讻讜诇诇 砖讬谞讜讬 诪诪砖拽 讗讜 砖讬谞讜讬讬诐 砖砖讜讘专讬诐 拽讜讚 讬砖谉, 讗谞讞谞讜 注讚讬讬谉 专讜爪讬诐 诇拽讘诇 讗讜转讜 讗诇讬谞讜 诇诪注专讻转 讗讘诇 讘讝讛讬专讜转 讜讻砖讬砖 诇谞讜 讝诪谉. 诪谞讙谞讜谞讬 谞讬讛讜诇 讛讞讘讬诇讜转 讘砖驻讜转 讛砖讜谞讜转 诪转诪讜讚讚讬诐 注诐 讛讛讘讚诇 讘讬谉 砖谞讬 住讜讙讬 讛砖讚专讜讙讬诐 讘讗诪爪注讜转 "谞注讬诇转" 讞讘讬诇讜转. 讗谞讞谞讜 谞讜注诇讬诐 讞讘讬诇讛 诇讙讬专住讛 专讗砖讬转 诪住讜讬诪转 讘注转 讛讛转拽谞讛, 讜讗讝 讻诇 驻注诐 砖谞专讬抓 驻拽讜讚转 注讚讻讜谉 谞拽讘诇 专拽 注讚讻讜谞讬诐 砖诇 讙讬专住讗讜转 "拽讟谞讜转", 讜讘砖讘讬诇 诇注讚讻谉 诇讙讬专住讛 专讗砖讬转 讞讚砖讛 讬砖 诇讛讬讻谞住 讬讚谞讬转 诇拽讜讘抓 讛转诇讜讬讜转 讜诇砖谞讜转 讗转 讛注专讻讬诐 讘讜. 诪讚讬 驻注诐 (讻谉 讝讛 谞讚讬专 讗谞讬 讬讜讚注) 讬讛讬讜 诇谞讜 讻诪讛 讬诪讬诐 讘讬谉 驻讬爪'专讬诐 讻讚讬 诇砖讚专讙 讗转 讻诇 讛转砖转讬讜转 砖诇 讛驻专讜讬拽讟. 注讘讜专 讛讬诪讬诐 讛讗诇讛 讜讘注讝专转 讻诇讬诐 诪讬讜讞讚讬诐, 转讜讻诇讜 讘诪讻讛 讗讞转 诇砖讚专讙 讗转 讻诇 讛住驻专讬讜转 砖讬砖 诇讛谉 讙讬专住讛 专讗砖讬转 讞讚砖讛, 讘诪讻讛 讗讞转 讜诇讛讻谞讬住 讗转 注爪诪讻诐 诇诪注专讘讜诇转 砖诇 转讬拽讜谞讬诐 讜讛转讗诪讜转 诇注讜诇诐 讛讞讚砖. 讘讜讗讜 谞专讗讛 讗讬讱 注讜砖讬诐 讗转 讝讛 讘 Ruby, Python 讜 Node.JS ## 砖讬讚专讜讙 讞讘讬诇讜转 讘 package.json 注诐 ncu 讛讻诇讬 讛专讗砖讜谉 谞拽专讗 ncu 砖讝讛 拽讬爪讜专 诇 npm-check-updates. 讻诇讬 讝讛 讬专讗讛 诇讻诐 讻诇 转诇讜转 砖诇 讛驻专讜讬拽讟 砖拽讬讬诪转 诇讛 讙讬专住讛 讞讚砖讛 讬讜转专, 讙诐 讗诐 讛砖讬谞讜讬 "砖讜讘专" 讗转 谞注讬诇转 讛讞讘讬诇讜转 砖诇 package.json. 讗讞专讬 讛转拽谞转 讛讻诇讬 转讜讻诇讜 诇讛驻注讬诇:
$ ncu -u
讘转讬拽讬讛 注诐 拽讜讘抓 package.json 讜讛讜讗 讬注讚讻谉 讗转 讛拽讜讘抓 诇讙讬专住讗讜转 讛讞讚砖讜转 讘讬讜转专 砖诇 讻诇 住驻专讬讛. ## 砖讬讚专讜讙 讞讘讬诇讜转 讘 requirements.txt 注诐 pip-upgrader 讛讻诇讬 pip-upgrader 讬注砖讛 讗转 讗讜转讜 讟专讬拽 讗讘诇 讛驻注诐 讘 Python 注诐 requirements.txt. 讗谞讬 讗讜讛讘 诇讛驻注讬诇 讗讜转讜 注诐 讛讗驻砖专讜转 --skip-package-installation 讜讻讱 讛讜讗 专拽 诪注讚讻谉 讗转 requirements.txt 讜讗谞讬 讬讻讜诇 诇讘讞讜专 讗讞专 讻讱 讗诐 诇讛转拽讬谉 讗讜 诇讜. 讗讞专讬 讛转拽谞转 讛讻诇讬 注诐 pip 驻砖讜讟 谞讻谞住讬诐 诇转讬拽讬讛 砖讬砖 讘讛 驻专讜讬拽讟 驻讬讬转讜谉 讜拽讜讘抓 requirements.txt 讜诪驻注讬诇讬诐:
$ pip-upgrade --skip-package-installation
讘住讬讜诐 讘讚讬拽讛 诪讜诇 讛讗讬谞讚拽住 讛讻诇讬 讬讬转谉 诇讻诐 专砖讬诪讛 砖诇 讞讘讬诇讜转 讛谞讬转谞讜转 诇砖讬讚专讜讙 讜讬讘拽砖 诪讻诐 诇讘讞讜专 讗讬讝讛 讞讘讬诇讜转 讗转诐 专讜爪讬诐 诇砖讚专讙 (讗讜 讗驻砖专 诇讻转讜讘 all 讻讚讬 诇砖讚专讙 讗转 讻讜诇谉). ## 砖讬讚专讜讙 讞讘讬诇讜转 讘 Gemfile 注诐 bundleup 讞讘专 讗讞专讜谉 讛讜讗 专讜讘讬 讜驻讛 讛讻诇讬 谞拽专讗 bundleup, 讜讙诐 讛讜讗 注讜砖讛 讘讚讬讜拽 诪讛 砖讻转讜讘 讘转讬讗讜专 - 讗转诐 诪驻注讬诇讬诐 讗讜转讜 讘转讬拽讬讛 注诐 拽讜讘抓 Gemfile 讜讛讜讗 讬砖讚专讙 讗转 讻诇 讛讙讬专住讗讜转 讘 Gemfile 诇讙讬专住讛 讛讞讚砖讛 讘讬讜转专 砖诇 讻诇 讞讘讬诇讛. 诇讗讞专 讛转拽谞转 讛讻诇讬 注诐 gem 谞讜讻诇 诇讻转讜讘:
$ bundleup --update-gemfile
讜诇拽讘诇 Gemfile 砖诪讻讜讜谉 诇讙讬专住讗讜转 讛讞讚砖讜转 讘讬讜转专 砖诇 讻诇 讞讘讬诇讛. 砖讬诪讜 诇讘- 讘讗谞讚诇讗驻 诇讗 诪注讚讻谉 讞讘讬诇讜转 砖讬砖 注讘讜专谉 Comment 讘 Gemfile. 讝讛 讗讜诪专 砖讗诐 讬砖 诇讻诐 砖转讬 砖讜专讜转 讻讗诇讛:
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
讗讝 讛讙'诐 诇讗 讬注讜讚讻谉. 诇讗 诪爪讗转讬 讚专讱 讟讜讘讛 诇讛讬驻讟专 诪讛讛转谞讛讙讜转 讛讝讗转 讜诇讻谉 讘驻专讜讬拽讟讬诐 讘讛诐 讗谞讬 诪砖转诪砖 讘 bundleup 讗谞讬 诪讜讞拽 讗转 讻诇 讛讛注专讜转 诪讛 Gemfile 诇驻谞讬 讛驻注诇讛. 诪讻讬专讬诐 讻诇讬诐 谞讜住驻讬诐 讟讜讘讬诐 讬讜转专 讗讜 讘砖驻讜转 讗讞专讜转? 住驻专讜 讘转讙讜讘讜转 砖讙诐 讗讞专讬诐 讬讜讻诇讜 诇讛谞讜转.

ToCode
1 419
# 讘讜讗讜 谞讘谞讛 诇讘讚 驻讜谞拽爪讬讬转 zip 讘 Python 讻讚讬 诇讛讘讬谉 讗讬讱 讝讛 讘谞讜讬 砖讗诇转 驻讬讬转讜谉 拽爪专讛 砖讛讙讬注讛 讗诇讬讬 讛讬转讛 "讗讬讱 讗谞讬 注讜讘专转 注诇 讻诪讛 专砖讬诪讜转 讘诪拽讘讬诇 讜讻诇 驻注诐 诇讜拽讞转 讗讬讘专 诪专砖讬诪讛 讗讞专转?". 诇驻谞讬 砖讗专讜抓 诇注谞讜转 注诐 zip 砖诇 驻讬讬转讜谉 讘讜讗讜 谞诇讱 诇讘谞讜转 诇讘讚 讗转 讛驻讬转专讜谉 讻讚讬 诇讛讘讬谉 讗转 讛讗转讙专讬诐. ## 谞讬住讬讜谉 专讗砖讜谉: 诇讜诇讗讛 注诐 讗讬谞讚拽住讬诐 讻讬讜讜谉 讗讞讚 讬讻讜诇 诇讛讬讜转 诇专讜抓 讘诇讜诇讗讛 注诇 range 诇驻讬 讙讜讚诇 讛专砖讬诪讜转 讜讻诇 驻注诐 诇拽讞转 讗讬讘专 诪专砖讬诪讛 讗讞专转. 讘拽讜讚 讝讛 谞专讗讛 讻讱:
one = [10, 20, 30]
two = ['a', 'b', 'c']

for i in range(len(one)):
    item_one = one[i]
    item_two = two[i]

    print(item_one, item_two)
讘讛谞讞讛 砖讛专砖讬诪讜转 讘讗讜转讜 讗讜专讱 讛拽讜讚 注讜讘讚. 讛讜讗 诇讗 诪砖讻驻诇 讗转 讛专砖讬诪讜转 讗讜 讗诇诪谞讟讬诐 诪转讜讻谉 讜讛讜讗 讚讬 讘专讜专. 讛讘注讬讛 讛讘讜诇讟转 讘讬讜转专 讘讙讬砖讛 讝讜 讛讬讗 砖讗讬谉 驻讛 讗驻砖专讜转 讟讜讘讛 诇讛砖转诪砖 诪讞讚砖 讘诪谞讙谞讜谉 讗讜 诇砖诇讘 讗转 讛诪谞讙谞讜谉 讛讝讛 注诐 讻诇讬诐 讗讞专讬诐 砖诇 驻讬讬转讜谉. 诇讚讜讙诪讛 讗诐 讛讬讬转讬 专讜爪讛 诇拽讞转 砖转讬 专砖讬诪讜转 砖诇 诪住驻专讬诐 讜诇讛讞讝讬专 专砖讬诪讛 砖诇 住讻讜诐 讻诇 砖谞讬 讗讬讘专讬诐 诪转讗讬诪讬诐 讘讬谉 砖转讬 讛专砖讬诪讜转 讛拽讜讚 砖诇讬 讛讬讛 谞专讗讛 讻讱:
one = [10, 20, 30]
two = [1, 2, 3]
three = []
for i in range(len(one)):
    three.append(one[i] + two[i])
讘注讬讛 谞讜住驻转 拽爪转 讬讜转专 注讚讬谞讛 讘拽讜讚 讛讬讗 砖讬讞住讬转 拽砖讛 诇讛转讗讬诐 讗讜转讜 诇诪住驻专 诪砖转谞讛 砖诇 专砖讬诪讜转. 讗诐 讛讬讬转讬 专讜爪讛 诇讛驻注讬诇 讗转 讗讜转讜 诪谞讙谞讜谉 注诐 4 专砖讬诪讜转 砖诇 诪住驻专讬诐 讜诇讞砖讘 讗转 住讻讜诪谉 讛讬讬转讬 爪专讬讱 诪诪砖 诇砖谞讜转 讗转 讛拽讜讚 砖讻转讘转讬. ## 讛爪注讚 讛讘讗 - 驻讜谞拽爪讬讛 讘砖讘讬诇 诇讛转拽讚诐 诇讻讬讜讜谉 Code Reuse 讟讜讘 讬讜转专 讗谞讬 讬讻讜诇 诇讚诪讬讬谉 驻讜谞拽爪讬讛 砖诪拽讘诇转 砖转讬 专砖讬诪讜转 (讗讜 讻诪讛 专砖讬诪讜转) 讜诪讞讝讬专讛 专砖讬诪讛 讞讚砖讛 讘讛 讻诇 讗讬讘专 讛讜讗 Tuple 砖诇 讗讬讘专讬诐 诪转讗讬诪讬诐 讘专砖讬诪讜转 讛诪拽讜专讬讜转. 讘讚讜讙诪讛 讛讗讞专讜谞讛 诪讛住注讬祝 讛拽讜讚诐 讛驻讜谞拽爪讬讛 转讞讝讬专 讗转 讛专砖讬诪讛 讛讘讗讛:
[(10, 1), (20, 2), (30, 3)]
讜讗诐 谞注讘讬专 诇驻讜谞拽爪讬讛 讬讜转专 专砖讬诪讜转 讛讬讗 转诪讬讚 转讜讻诇 诇讛讞讝讬专 Tuples 讙讚讜诇讬诐 讬讜转专. 讛谞讛 拽讜讚 诇讚讜讙诪讛 砖诇 驻讜谞拽爪讬讛 讻讝讜, 讘砖诇讘 专讗砖讜谉 专拽 注诐 砖转讬 专砖讬诪讜转:
def my_zip(list_a, list_b):
    result = []

    for i in range(len(list_a)):
        result.append((list_a[i], list_b[i]))

    return result
讜讻讱 讗驻砖专 诇讛砖转诪砖 讘驻讜谞拽爪讬讛:
one = [10, 20, 30]
two = [1, 2, 3]

for a, b in my_zip(one, two):
    print(a + b)
讘砖讘讬诇 诇讛驻讜讱 讗转 讛驻讜谞拽爪讬讛 诇讻讝讜 砖诪拽讘诇转 讻诇 诪住驻专 砖诇 专砖讬诪讜转 爪专讬讱 转讞讘讬专 驻讬讬转讜谉 拽爪转 讬讜转专 诪转讜讞讻诐 讜讛转讜爪讗讛 注砖讜讬讛 诇讛讬专讗讜转 讻讱:
def my_zip(*lists):
    result = []
    length = 0 if len(lists) == 0 else len(lists[0])

    for i in range(length):
        result.append(tuple([list[i] for list in lists]))

    return result
讜拽讜讚 砖诪砖转诪砖 讘讛 讬讻讜诇 诇讛讬专讗讜转 讻讱:
one = [10, 20, 30]
two = [1, 2, 3]
three = [1, 1, 1]

for a, b, c in my_zip(one, two, three):
    print(a + b + c)
讛诪诪砖拽 砖诇 讛驻讜谞拽爪讬讛 注讻砖讬讜 讛专讘讛 讬讜转专 讛讙讬讜谞讬, 讗讘诇 注讚讬讬谉 讬砖 讘注讬讛: 讛驻讜谞拽爪讬讛 诪讬讬爪专转 专砖讬诪讛 讞讚砖讛, 讜讗诐 讛专砖讬诪讜转 讛诪拽讜专讬讜转 讗专讜讻讜转 讗讜 讻讜诇诇讜转 讗诇诪谞讟讬诐 砖诪住讜讘讱 诇讛注转讬拽 讗讜转诐 讗讝 讛驻讜谞拽爪讬讛 转驻注诇 诇讗讟 讜转转驻讜住 讬讜转专 诪拽讜诐 讘讝讬讻专讜谉. ## 讛爪注讚 讛讘讗 - Generator 诪谞讙谞讜谉 讛 Generator 讘驻讬讬转讜谉 诪讗驻砖专 诇讬 诇砖诪讜专 注诇 讛诪诪砖拽 砖诇 诪砖讛讜 砖谞专讗讛 讻诪讜 驻讜谞拽爪讬讛-砖诪讞讝讬专讛-专砖讬诪讛 讗讘诇 诪转讞转 诇驻谞讬 讛砖讟讞 诇讘谞讜转 拽讜讚 砖诇讗 讘讗诪转 诪讬讬爪专 专砖讬诪讛 讜讻讱 讞讜住讱 讗转 讛讛注转拽讜转. 讘驻讜注诇 讗讬讘专讬诐 讘专砖讬诪转 讛转讜爪讗讜转 讬讞讜砖讘讜 专拽 讻砖谞专爪讛 诇讙砖转 讗诇讬讛诐 讘诇讜诇讗转 讛 for 讛讞讬爪讜谞讬转. 讛拽讜讚 谞专讗讛 讻讱:
def my_zip(*lists):
    length = 0 if len(lists) == 0 else len(lists[0])

    for i in range(length):
        yield tuple([list[i] for list in lists])
讜诪砖转诪砖讬诐 讘讜 诪讘讞讜抓 诇驻讬 讗讜转讜 诪诪砖拽 讘讚讬讜拽:
one = [10, 20, 30]
two = [1, 2, 3]
three = [1, 1, 1]

for a, b, c in my_zip(one, two, three):
    print(a + b + c)

## 诇住讬讻讜诐 - zip 驻讜谞拽爪讬讬转 zip 砖诇 驻讬讬转讜谉 注讜砖讛 讗转 讻诇 诪讛 砖讗谞讬 转讬讗专转讬 讻讗谉 讜讬讜转专. 讛讬讗 讙诐 讬讜转专 诪讛讬专讛 讻讬 讛讬讗 诪诪讜诪砖转 讘砖驻转 C 讻讞诇拽 诪砖驻转 驻讬讬转讜谉. 讗转 讛驻专讟讬诐 注诇讬讛 转讜讻诇讜 诇诪爪讜讗 讘转讬注讜讚 讘拽讬砖讜专: https://docs.python.org/3.3/library/functions.html#zip 讗谞讬 诪拽讜讜讛 砖讛驻讜住讟 讛讝讛 注讝专 诇讻诐 诇讛讘讬谉 讟讜讘 讬讜转专 讗转 讛驻讜谞拽爪讬讛 讜讬注讝讜专 诇讻诐 诇讝讻讜专 讗讜转讛 讘驻注诐 讛讘讗讛 砖转爪讟专讻讜 诇专讜抓 注诇 诪住驻专 专砖讬诪讜转 讗诇诪谞讟讬诐 讘诪拽讘讬诇.

ToCode
1 419
# 诪讜讟讬讘爪讬讛 讘讬谉 讛住讬讘讜转 砖讗谞砖讬诐 诪讜爪讗讬诐 讻讚讬 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讞讚砖讛 讬砖 诇谞讜: 1. 讻讚讬 诇讛转拽讘诇 诇注讘讜讚讛. 2. 讻讬 讘诪拽讜诐 讛注讘讜讚讛 讛转讞讬诇讜 驻专讜讬拽讟 讘讟讻谞讜诇讜讙讬讛 讝讜. 3. 讻讚讬 诇讛砖转诇讘 讘驻专讜讬拽讟 讘讟讻谞讜诇讜讙讬讛 讝讜 讘注讘讜讚讛. 4. 讻讬 讬砖 爪讬讜专 砖诇 讞讚-拽专谉 讘讚祝 讛讘讬转. 5. 讻讬 讻诇 讛讞讘专讬诐 砖诇讬 诪讚讘专讬诐 注诇 讝讛. 6. 讻讬 讻讜诇诐 讘专讚讬讟 诪讚讘专讬诐 注诇 讝讛. 7. 讻讬 讗谞讬 讞讜砖讘 砖讝讛 讬注讝讜专 诇讬 诇讛讬讜转 诪转讻谞转 讟讜讘 讬讜转专. 砖讜讜讛 诇砖讬诐 诇讘 砖诪讜讟讬讘爪讬讜转 砖讜谞讜转 诪注讜专专讜转 专讙砖讜转 砖讜谞讬诐 讘诪讛诇讱 讛诇讬诪讜讚 讜讬讻讜诇讜转 诇讛砖驻讬注 注诇 讛转讜爪讗讛. 诇讛专讘讛 讗谞砖讬诐 讬讛讬讛 诪讗讜讚 拽诇 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讞讚砖讛 讗诐 诪注讘讬专讬诐 讗讜转诐 诇爪讜讜转 砖注讜讘讚 讘讟讻谞讜诇讜讙讬讛 讝讜, 讜诪讗讜讚 拽砖讛 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讞讚砖讛 讗诐 专拽 拽专讗谞讜 注诇讬讛 讘专讚讬讟. (讜讝讛 诇讗 拽砖讜专 诇讝诪谉 驻谞讜讬. 讗谞砖讬诐 讬讻讜诇讬诐 诇砖讘转 讘讘讬转 讞讜讚砖讬诐 讜诇讞驻砖 注讘讜讚讛 讗讘诇 讬转讞讬诇讜 诇诇诪讜讚 讘专爪讬谞讜转 讗转 讛讟讻谞讜诇讜讙讬讛 专拽 讻砖讘讗诪转 讬讬讻谞住讜 诇注讘讜讚讛 注诇 驻专讜讬拽讟 住驻爪讬驻讬 讘讟讻谞讜诇讜讙讬讛 讝讜). 讗诇讛 讞讚砖讜转 诪注讜诇讜转 - 讻讬 讝讛 讗讜诪专 砖讬砖 诇谞讜 讗转 讛讬讻讜诇转 诇诇诪讜讚 讟讻谞讜诇讜讙讬讜转 讘爪讜专讛 讟讜讘讛 讜诇注讜诪拽. 注讻砖讬讜 专拽 爪专讬讱 诇讘谞讜转 讗转 讛住讬驻讜专 砖讬讬转谉 诇谞讜 讗转 讛诪讜讟讬讘爪讬讛 诇讛转拽讚诐 诇砖诐.

ToCode
1 419
# 诇讗 讘诇讬讙讛 砖诇讬 讗讞讚 讛驻专讚讜拽住讬诐 讛诪注谞讬讬谞讬诐 砖诇 诇讬诪讜讚讬诐 拽讜专讛 讻砖讗谞讬 诪谞住讛 诇诇诪讜讚 讞讜诪专 砖讛讜讗 诇讗 讘诇讬讙讛 砖诇讬. 诇讚讜讙诪讛 讛讬转讛 诇讬 转诇诪讬讚讛 砖讘拽讜砖讬 讛爪诇讬讞讛 诇讻转讜讘 转专讙讬诇讬 FizzBuzz 驻砖讜讟讬诐 讗讘诇 住讬驻专讛 砖诇驻谞讬 砖讛讙讬注讛 讗诇讬讬 讛讬讗 讛讬转讛 讘拽讜专住 讘讜 讛讬讗 讻转讘讛 砖专转 讜讜讘 诇讛注讘专转 讗讬诪讬讬诇 砖讻诇诇 拽讜讚 Front End, 拽讜讚 Back End 讜讛转诪诪砖拽讜转 注诐 SMTP. 讗讬讱 讗驻砖专 诇讻转讜讘 拽讜讚 讻诇 讻讱 诪转讜讞讻诐 讘拽讜专住 讗讞讚, 讜诇讗 诇讛爪诇讬讞 诇讻转讜讘 讚讘专讬诐 诪讗讜讚 驻砖讜讟讬诐 讘拽讜专住 讗讞专? 讛转砖讜讘讛 讘专讜专讛 诇讻诇 诪讬 砖讻转讘 拽讜讚 诇驻讬 诪讚专讬讱. 拽讜讚 讛讜讗 讘住讱 讛讻诇 讗讜住祝 砖诇 转讜讜讬诐, 讜讗讬谉 砖讜诐 讘注讬讛 诇讛住转讻诇 讘讜讬讚讗讜 砖诇 诪讬砖讛讜 砖诪住讘讬专 诪砖讛讜, 诇讛注转讬拽 讗讜转 讗讞专讬 讗讜转 讗转 讛拽讜讚 讜拽讬讘诇转 讗转 讛转讜讻谞讬转 讛诪转讜讞讻诪转 砖讛专讗讜 讘讜讬讚讗讜. 讛专讘讛 驻注诪讬诐 讗讞专讬 爪驻讬讛 讜讛拽诇讚讛 讻讗诇讛 讗谞讞谞讜 讗驻讬诇讜 讘讟讜讞讬诐 砖讛讘谞讜 讛讻诇 讜砖讗谞讞谞讜 诪讜讻谞讬诐 诇讛诪砖讬讱 诇讻转讜讘 拽讜讚 诪讛谞拽讜讚讛 讘讛 讛讜讬讚讗讜 讛驻住讬拽. 讜讗讝 讻砖讚讘专讬诐 诇讗 注讜讘讚讬诐 讗谞讞谞讜 讘讟讜讞讬诐 砖驻砖讜讟 爪专讬讱 注讜讚 拽讜专住 讗讜 砖讛诪讚专讬讱 诇讗 讛讬讛 诪住驻讬拽 讟讜讘. 讗诐 讗转诐 爪专讬讻讬诐 讗讬谞讚讬拽爪讬讛 驻砖讜讟讛 诇讝讛 砖讗转诐 爪讜驻讬诐 讘讞讜诪专 砖诪转讗讬诐 诇专诪讛 砖诇讻诐 讗驻砖专 诇讛住转讻诇 注诇 讝诪谉 讛爪驻讬讛 诇注讜诪转 讝诪谉 讛讻转讬讘讛 讜讛注讬讘讜讚 砖讗讞专讬. 讘爪驻讬讛 讘讞讜诪专 诇讬诪讜讚讬 讘专诪讛 砖诇讬, 注诇 讻诇 砖注讛 砖诇 讜讬讚讗讜 讬讛讬讜 诇讬 讘注专讱 8 砖注讜转 注讘讜讚讛 注爪诪讬转 砖讗讜讻诇 诇注砖讜转 讗讬转讜, 诇驻注诪讬诐 讙诐 讬讜转专. 讝讛 讗讜诪专 砖讗诐 专讗讬转讬 讜讬讚讗讜 砖诇 砖注讛 注诇 PyTest - 讗讝 注讻砖讬讜 讬砖 诇讬 诇驻讞讜转 讬讜诐 注讘讜讚讛 砖诇诐 诇讘诇讜转 注诐 讛住驻专讬讛 讜诇讻转讜讘 讟住讟讬诐 诇拽讜讚 砖诇讬. 讛驻专讚讜拽住 讻讗谉 讛讜讗 砖讻讻诇 砖讗谞讬 "诪讘讬谉" 讬讜转专 诪讛专 讗转 讛讜讬讚讗讜 讜讘注爪诐 讬砖 诇讬 驻讞讜转 砖讗诇讜转 注诇讬讜, 讻讻讛 讝讛 讗讜诪专 砖讗谞讬 诪住转讻诇 注诇 转讜讻谉 砖讛讜讗 诇讗 讘诇讬讙讛 砖诇讬 讜砖讗谞讬 讘注爪诐 诪讘讬谉 讗讜转讜 讛专讘讛 驻讞讜转 讟讜讘 诪诪讛 砖讗谞讬 讞讜砖讘 (讜讗谞讞谞讜 讻讘专 讬讜讚注讬诐 砖讘转讻谞讜转 驻注专讬 讛讘谞讛 诪转讙诇讬诐 讘住讜祝. 讗讬 讗驻砖专 诇注讘讜讚 注诇 讛诪讞砖讘).

ToCode
1 419
        p1['vy'] = HANDLE_SPEED
    if pyxel.btn(pyxel.KEY_W):
        p2['vy'] = -HANDLE_SPEED
    if pyxel.btn(pyxel.KEY_S):
        p2['vy'] = HANDLE_SPEED
诇讗讞专 诪讻谉 讗谞讬 讘讜讚拽 讗诐 讛讻讚讜专 驻讜讙注 讘拽讬专 讛注诇讬讜谉 讗讜 讛转讞转讜谉:
    if (ball['y'] - BALL_SIZE) <= 0:
        ball['vy'] = BALL_SPEED

    if (ball['y'] + BALL_SIZE) >= pyxel.height:
        ball['vy'] = -BALL_SPEED
讛砖诇讘 讛讘讗 讛讜讗 讛讘讚讬拽讛 讗诐 讛讻讚讜专 驻讙注 讘讬讚讬转 砖诇 讗讞讚 讛砖讞拽谞讬诐. 讛讘讚讬拽讛 讻讗谉 讬讜转专 诪讜专讻讘转 讗讘诇 注讚讬讬谉 诪讚讜讘专 讘讘讚讬拽讛 诇讜讙讬转 砖诇讗 转诇讜讬讛 讘住驻专讬讬转 讛爪讬讜专:
    if (p1['y'] < ball['y'] < p1['y'] + HANDLE_HEIGHT) and (p1['x'] < (ball['x'] - BALL_SIZE) < p1['x'] + HANDLE_WIDTH):
        ball['vx'] = BALL_SPEED
        
    if (p2['y'] < ball['y'] < p2['y'] + HANDLE_HEIGHT) and (p2['x'] < (ball['x'] + BALL_SIZE) < p2['x'] + HANDLE_WIDTH):
        ball['vx'] = -BALL_SPEED
讜诇住讬讜诐 讗谞讬 诪讝讬讝 讗转 讛诪讬拽讜诪讬诐 砖诇 讻诇 讛爪讜专讜转 诇驻讬 讛诪讛讬专讜讬讜转 砖诇讛谉:
    for player in [p1, p2]:
        if 0 < player['vy'] + player['y'] < (pyxel.width - HANDLE_HEIGHT):
            player['y'] += player['vy']

    ball['x'] += ball['vx']
    ball['y'] += ball['vy']
住讱 讛讻诇 拽讜讚 讛转讜讻谞讬转 讛诪诇讗 谞专讗讛 讻讱:
import pyxel

BALL_SIZE = 5
HANDLE_HEIGHT = 24
HANDLE_WIDTH = 5
HANDLE_SPEED = 4
BALL_SPEED = 2

p1 = {'x': 10, 'y': 10, 'vy': 0}
p2 = {'x': 240, 'y': 10, 'vy': 0}
ball = {'x': 113, 'y': 113, 'vx': BALL_SPEED, 'vy': BALL_SPEED}

def update():
    if pyxel.btn(pyxel.KEY_UP):
        p1['vy'] = -HANDLE_SPEED
    if pyxel.btn(pyxel.KEY_DOWN):
        p1['vy'] = HANDLE_SPEED
    if pyxel.btn(pyxel.KEY_W):
        p2['vy'] = -HANDLE_SPEED
    if pyxel.btn(pyxel.KEY_S):
        p2['vy'] = HANDLE_SPEED

    if (ball['y'] - BALL_SIZE) <= 0:
        ball['vy'] = BALL_SPEED

    if (ball['y'] + BALL_SIZE) >= pyxel.height:
        ball['vy'] = -BALL_SPEED

    if (p1['y'] < ball['y'] < p1['y'] + HANDLE_HEIGHT) and (p1['x'] < (ball['x'] - BALL_SIZE) < p1['x'] + HANDLE_WIDTH):
        ball['vx'] = BALL_SPEED
        
    if (p2['y'] < ball['y'] < p2['y'] + HANDLE_HEIGHT) and (p2['x'] < (ball['x'] + BALL_SIZE) < p2['x'] + HANDLE_WIDTH):
        ball['vx'] = -BALL_SPEED

    for player in [p1, p2]:
        if 0 < player['vy'] + player['y'] < (pyxel.width - HANDLE_HEIGHT):
            player['y'] += player['vy']

    ball['x'] += ball['vx']
    ball['y'] += ball['vy']


def draw():
    pyxel.cls(0)
    pyxel.circ(ball['x'], ball['y'], BALL_SIZE, 3)
    for player in [p1, p2]:
        pyxel.rect(player['x'], player['y'], HANDLE_WIDTH, HANDLE_HEIGHT, 5)


pyxel.init(256, 256)
pyxel.run(update, draw)
讛诪砖讞拽 讬专讜抓 讻诇 注讜讚 转爪诇讬讞讜 诇转驻讜住 讗转 讛讻讚讜专, 讜讗诐 转驻住驻住讜 讗讝 讛讻讚讜专 驻砖讜讟 讬讘专讞 诇讻诐 诪讛诪住讱 讜讻讱 讛诪砖讞拽 讬住转讬讬诐. 诇驻讬拽住诇 讬砖 注讜讚 讛诪讜谉 讬讻讜诇讜转 诪注谞讬讬谞讜转 (讗讛讜讘 注诇讬讬 讘诪讬讜讞讚 注讜专讱 讛转诪讜谞讜转 讛诪砖讜诇讘). 诇驻专讟讬诐 谞讜住驻讬诐 注诇 讛住驻专讬讛 讜住拽讬专讛 砖诇 讻诇 讛讬讻讜诇讜转 砖讜讜讛 诇讛讬讻谞住 诇转讬注讜讚 砖诇讛诐 讘拽讬砖讜专: https://github.com/kitao/pyxel

ToCode
1 419
# 讘讜讗讜 谞讻转讜讘 诪砖讞拽 Pong 驻砖讜讟 注诐 讛住驻专讬讛 Pyxel 讘 Python 住驻专讬讬转 pyxel 讛讬讗 住驻专讬讛 诇驻讬转讜讞 诪砖讞拽讬 专讟专讜. 讛讬讗 诪讙讬注讛 注诐 注讜专讱 转诪讜谞讜转 诪驻讜拽住诇讜转, 注讜专讱 住讗讜谞讚讬诐 讬砖谞讬诐 讜讛讻讬 讟讜讘 - 讛诪讜谉 诪讙讘诇讜转 砖诇讗 讬讗驻砖专讜 诇讻诐 诇驻转讞 诪砖讞拽 讬讜转专 诪讚讬 诪转讜讞讻诐. 讜讝讛 诪注讜诇讛 讻讬 讘注讝专转 驻讬拽住诇 拽诇 讜讻讬祝 诇讻转讜讘 诪砖讞拽讬诐 讻诪讜 砖诇 驻注诐. 讘驻讜住讟 讝讛 讗爪讬讙 讗转 讛讻诇讬诐 讛讘住讬住讬讬诐 诇注讘讜讚讛 注诐 讛住驻专讬讛 讘讗诪爪注讜转 驻讬转讜讞 诪砖讞拽 Pong. ## 转讜讻谞讬转 驻讬拽住诇 专讗砖讜谞讛 砖专拽 诪爪讬讙讛 诪住讱 砖讞讜专 讛转拽讬谞讜 讗转 住驻专讬讬转 pyxel 注诐 pip 讗讜 诪转讜讱 驻讬讬爪'讗专诐 讜讗讞专讬 讛讛转拽谞讛 讘砖讘讬诇 诇讘讚讜拽 砖讛讻诇 注讜讘讚 讻转讘讜 讗转 讛拽讜讚 讛讘讗 讜讛驻注讬诇讜:
import pyxel

def update():
    pass
    
def draw():
    pass
    
pyxel.init(256, 256)
pyxel.run(update, draw)
讗诐 讛讻诇 讛讜转拽谉 讻诪讜 砖爪专讬讱 讗转诐 爪专讬讻讬诐 诇拽讘诇 讞诇讜谉 讞讚砖 砖讬专讗讛 诪住讱 砖讞讜专. 谞砖讬诐 诇讘 诇诪讘谞讛 讛转讜讻谞讬转: 1. 讛驻讜谞拽爪讬讛 pyxel.init 诪讗转讞诇转 讗转 讛住驻专讬讛 pyxel. 讗谞讞谞讜 讞讬讬讘讬诐 诇讛注讘讬专 诇讛 讗转 讙讜讚诇 讛讞诇讜谉 (讛讙讜讚诇 讛诪拽住讬诪诇讬 讛谞转诪讱 讛讜讗 256 注诇 256), 讜讬砖 注讜讚 讚讬 讛专讘讛 驻专诪讟专讬诐 砖讗驻砖专 诇讛注讘讬专 讻讗谉 - 讗讜转诐 转讜讻诇讜 诇诪爪讜讗 讘转讬注讜讚. 2. 讛驻讜谞拽爪讬讛 pyxel.run 诪转讞讬诇讛 讗转 讛诪砖讞拽 讜诪爪讬讙讛 讗转 讛诪住讱. 讛驻讜谞拽爪讬讛 爪专讬讻讛 诇拽讘诇 砖转讬 驻讜谞拽爪讬讜转 讘转讜专 驻专诪讟专讬诐: 驻讜谞拽爪讬讛 讗讞转 谞拽专讗转 update 讜讛砖谞讬讛 谞拽专讗转 draw. 诇讻诇 讗讞转 诪讛驻讜谞拽爪讬讜转 update 讜 draw 转驻拽讬讚 讞砖讜讘 诪砖诇讛: 1. 讛驻讜谞拽爪讬讛 draw 讗讞专讗讬转 诇爪讬讜专 讛驻专讬讬诐 讛讘讗, 讜讻讚讗讬 砖转住转讬讬诐 讻诪讛 砖讬讜转专 诪讛专. 2. 讛驻讜谞拽爪讬讛 update 讗讞专讗讬转 诇注讚讻讜谉 注专讻讬 讛诪砖转谞讬诐 讘讬谉 驻专讬讬诪讬诐 讻讚讬 砖 draw 转讜讻诇 诇讛转诪拽讚 讘爪讬讜专. 讝讛 讗讜诪专 砖讗诐 讗谞讬 专讜爪讛 诇爪讬讬专 爪讜专讛 砖转讝讜讝 注诇 讛诪住讱, 讘驻讜谞拽爪讬讛 draw 讗讻转讜讘 讗转 讛拽讜讚 砖诪爪讬讬专 讗转 讛爪讜专讛 讘诪拽讜诐 诪住讜讬诐, 讜讘驻讜谞拽爪讬讛 update 讗讻转讜讘 讗转 讛拽讜讚 砖诪砖谞讛 讗转 讛诪拽讜诐 诇驻讬 讻诇 诪讬谞讬 驻专诪讟专讬诐. 转讻祝 谞专讗讛 讗转 讝讛 讘拽讜讚. ## 讛讙讚专转 讛诪砖转谞讬诐 诇诪砖讞拽 驻讜谞讙 讗谞讬 专讜爪讛 诇讘谞讜转 讗转 诪砖讞拽 驻讜谞讙 讛讻讬 驻砖讜讟 砖讗谞讬 讬讻讜诇. 讘转讜讻谞讬讜转 讙讚讜诇讜转 讬讜转专 谞专爪讛 诇讗专讙谉 讗转 讛拽讜讚 讘讻转讬讘 诪讜谞讞讛 注爪诪讬诐 讗讜 诇讞诇拽 讗讜转讜 诇拽讘爪讬诐, 讗讘诇 讛驻注诐 讗谞讞谞讜 专讜爪讬诐 诇讛转诪拽讚 专拽 讘注讘讜讚讛 注诐 pyxel 讜诇讻谉 讗谞讬 谞砖讗专 注诐 讛诪讘谞讛 讛讘住讬住讬 讗讬转讜 讛转讞诇转讬 讗转 讛驻讜住讟. 讚专讱 拽诇讛 诇讛讙讚讬专 讗转 讛诪砖转谞讬诐 诇诪砖讞拽 讛讬讗 诇讛砖转诪砖 讘诪讘谞讛 讛谞转讜谞讬诐 Dictionary 诇讻诇 讗讜讘讬拽讟 讘诪砖讞拽. 讘诪讞砖讞拽 Pong 讗谞讞谞讜 爪专讬讻讬诐 砖谞讬 砖讞拽谞讬诐 讜讻讚讜专 拽讜驻抓 讜诇讻谉 注诇讬讬 诇讛讙讚讬专 砖诇讜砖讛 诪讬诇讜谞讬诐. 讬讞讚 注诐 讻诪讛 拽讘讜注讬诐 讛拽讜讚 讬专讗讛 讻讱:
BALL_SIZE = 5
HANDLE_HEIGHT = 24
HANDLE_WIDTH = 5
HANDLE_SPEED = 4
BALL_SPEED = 2

p1 = {'x': 10, 'y': 10, 'vy': 0}
p2 = {'x': 240, 'y': 10, 'vy': 0}
ball = {'x': 113, 'y': 113, 'vx': BALL_SPEED, 'vy': BALL_SPEED}
## 爪讬讜专 讛诪住讱 讛讙讚专转 讛诪讬诇讜谞讬诐 讜讛拽讘讜注讬诐 诪住驻讬拽讬诐 诇讬 讻讚讬 诇爪讬讬专 讗转 诪讛 砖讗谞讬 爪专讬讱 诇专讗讜转 注诇 讛诪住讱 讘驻讜谞拽爪讬讛 draw: 1. 诇讻诇 砖讞拽谉 讗爪讬讬专 诪诇讘谉 砖讬转讗讬诐 诇讜 诇驻讬 讛拽讜讗讜专讚讬谞讟讜转 砖诇 讛砖讞拽谉 2. 讘砖讘讬诇 讛讻讚讜专 讗爪讬讬专 注讬讙讜诇 住驻专讬讬转 驻讬拽住诇 注爪诪讛 诪讙讚讬专讛 驻诇讟讛 砖诇 16 爪讘注讬诐 讻讱 砖诇讻诇 爪讘注 诪住驻专 讘讬谉 0 诇-15. 讘讻诇 驻讜谞拽爪讬讬转 爪讬讜专 讗谞讬 爪专讬讱 诇讛注讘讬专 讗转 诪住驻专 讛爪讘注 诪转讜讱 讛驻诇讟讛. 讛驻讜谞拽爪讬讛 pyxel.cls 爪讜讘注转 讗转 讻诇 讛诪住讱 讘爪讘注 专拽注 诇讘讞讬专转讬 诪转讜讱 讗讜转讛 驻诇讟讛. 讗谞讬 诪砖转诪砖 讘爪讘注 诪住驻专 0 注讘讜专 讛专拽注, 爪讘注 3 诇讻讚讜专 讜爪讘注 5 诇砖讞拽谞讬诐 讜诇讻谉 讛拽讜讚 谞专讗讛 讻讱:
def draw():
    pyxel.cls(0)
    pyxel.circ(ball['x'], ball['y'], BALL_SIZE, 3)
    for player in [p1, p2]:
        pyxel.rect(player['x'], player['y'], HANDLE_WIDTH, HANDLE_HEIGHT, 5)
专拽 注讚 诇驻讛 讗驻砖专 诇讛专讬抓 讻讘专 讗转 讛转讜讻谞讬转 讜诇专讗讜转 注诇 讛诪住讱 讗转 砖谞讬 讛诪诇讘谞讬诐 讘爪讚讚讬诐 注讘讜专 讛砖讞拽谞讬诐 讜讛讻讚讜专 讘讗诪爪注 诪讞讻讛 诇讛转讞讬诇 诇讝讜讝. ## 谞讬讛讜诇 转讝讜讝讛 讘讗诪爪注讜转 讛驻讜谞拽爪讬讛 update 讛驻讜谞拽爪讬讛 update 讛讬讗 讛诪拽讜诐 讘讜 讻诇 讛诇讜讙讬拽讛 砖诇 讛诪砖讞拽 拽讜专讬转 讜讘诪砖讞拽讬诐 讙讚讜诇讬诐 谞专爪讛 诇讛驻专讬讚 讗转 讛拽讜讚 砖诇讛 诇诪住驻专 驻讜谞拽爪讬讜转 注讝专. 转驻拽讬讚讬 讛驻讜谞拽爪讬讛 update 讘诪砖讞拽 砖诇谞讜 讛诐: 1. 讘讚讬拽讛 讗诐 诪砖转诪砖 诇讜讞抓 注诇 讻驻转讜专 转谞讜注讛 讗讝 诇拽讘讜注 诪讛讬专讜转 诇砖讞拽谉 讛诪转讗讬诐. 2. 讘讚讬拽讛 讛讗诐 讛讻讚讜专 驻讜讙注 讘拽讬专 讛注诇讬讜谉 讗讜 讛转讞转讜谉 讗讝 诇砖谞讜转 诇讜 讗转 讛诪讛讬专讜转 注诇 爪讬专 y 讻讚讬 砖诇讗 讬讘专讞 诪讛诪住讱. 3. 讘讚讬拽讛 讛讗诐 讛讻讚讜专 驻讜讙注 讘诪拽诇 砖诇 讗讞讚 讛砖讞拽谞讬诐 讜讗讝 诇砖谞讜转 诇讜 讗转 讛诪讛讬专讜转 注诇 爪讬专 x 诇爪讚 讛砖谞讬. 4. 砖讬谞讜讬 讛诪讬拽讜诐 砖诇 讛诪诇讘谞讬诐 讜讛讻讚讜专 诇驻讬 讛诪讛讬专讜讬讜转 砖诇讛诐. 讘讚讜讙诪讗讜转 讬讜转专 讙讚讜诇讜转 讛讬讬谞讜 讙诐 诪讜住讬驻讬诐 谞讬拽讜讚 讜讘讜讚拽讬诐 讗诐 讛讻讚讜专 注祝 讛讞讜爪讛 诪讛诪住讱 讗讝 诪讜专讬讚讬诐 谞拽讜讚讛 诇砖讞拽谉 砖驻住驻住 讗转 讛讻讚讜专. 谞讘谞讛 讗转 讛驻讜谞拽爪讬讛 爪注讚 爪注讚 诇驻讬 讗专讘注转 讛转驻拽讬讚讬诐. 讘砖讘讬诇 诇讘讚讜拽 讗诐 诪砖转诪砖 诇讜讞抓 注诇 讻驻转讜专 诪住讜讬诐 讗谞讬 诪砖转诪砖 讘驻讜谞拽爪讬讛 pyxel.btn. 讗谞讬 诪注讘讬专 诇驻讜谞拽爪讬讛 诪讝讛讛 讻驻转讜专 讜讛讬讗 诪讞讝讬专讛 讗诪转 讗诐 讛讻驻转讜专 诇讞讜抓 (讜讻谉 讬砖 讘转讬注讜讚 专砖讬诪讛 砖诇 讻诇 诪讝讛讬 讛讻驻转讜专讬诐, 讗讘诇 讝讛 讚讬 拽诇 诇谞讞砖 讙诐 讘诇讬 诇讛住转讻诇 讘转讬注讜讚 讗讬讝讛 诪讝讛讛 讗转诐 爪专讬讻讬诐):
    if pyxel.btn(pyxel.KEY_UP):
        p1['vy'] = -HANDLE_SPEED
    if pyxel.btn(pyxel.KEY_DOWN):

ToCode
1 419
# 砖诇讜砖讬诐 讚拽讜转 讝讜讝 讛谞讛 诪砖讞拽 拽爪专 砖讚讜专砖 讞爪讬 砖注讛 讘讬讜诐 讜讛专讘讛 讛转诪讚讛 讗讘诇 诪讜讘讟讞 砖讬讛驻讜讱 讗转讻诐 诇诪转讻谞转讬诐 讞讚讬诐 讬讜转专 讗讞专讬 讻诪讛 砖讘讜注讜转, 讛讜讗 谞拽专讗 30 讚拽讜转 讝讜讝 (谞讜 讘住讚专, 讛诪爪讗转讬 讗转 讛砖诐 讛专讙注. 讗讘诇 讗转 讛诪砖讞拽 讻谉 谞讬住讬转讬). 讗谞讞谞讜 讘讜讞专讬诐 诪砖讬诪讛 砖讗驻砖专 诇注砖讜转 讘讝诪谉 拽爪专, 谞讙讬讚 讞爪讬 砖注讛. 讗讜诇讬 诇讻转讜讘 诪砖讞拽 讗讬拽住 注讬讙讜诇. 驻讜转讞讬诐 讗转 讛诪讞砖讘 讜讬讜砖讘讬诐 讞爪讬 砖注讛 诇讻转讜讘 讗转 讛拽讜讚. 讘驻注诐 讛专讗砖讜谞讛 讻谞专讗讛 诇讗 转爪诇讬讞讜 诇讻转讜讘 讗转 讛诪砖讞拽 讘讞爪讬 砖注讛 讜讝讛 讘住讚专. 讝讛 诇讗 砖讛讛拽诇讚讛 诇讜拽讞转 讬讜转专 诪讚讬 讝诪谉 (讗讬拽住 注讬讙讜诇 讝讛 诪砖讞拽 砖讗驻砖专 诇讻转讜讘 讘讻诪讛 注砖专讜转 砖讜专讜转). 讛转拽讬注讛 讛讬讗 讘诪讞砖讘讛. 讗讞专讬 讞爪讬 砖注讛 讗诐 讛诪砖讞拽 诇讗 注讜讘讚 讗驻砖专 诇注爪讜专 讜驻讛 讛讞诇拽 讛讞砖讜讘 - 诇诪讞讜拽 讗转 讻诇 诪讛 砖讻转讘转诐. 诇诪讞专转 诪谞住讬诐 砖讜讘 诪讛讛转讞诇讛 讗转 讗讜转讜 讗讬拽住 注讬讙讜诇 讜砖讜讘 诪转讞讬诇讬诐 诪讚祝 讞诇拽. 讛驻注诐 讛讛转讞诇讛 讻讘专 转专讜抓 讬讜转专 诪讛专 讗讘诇 讬砖 住讬讻讜讬 讟讜讘 砖注讚讬讬谉 诇讗 转爪诇讬讞讜 诇住讬讬诐 诇讻转讜讘 讗转 讻诇 讛诪砖讞拽 讘讞爪讬 砖注讛. 讝讛 讘住讚专. 砖讜讘 诪讜讞拽讬诐, 讜砖讜讘 诇诪讞专转 诪转讞讬诇讬诐 诪讞讚砖. 讞讜讚砖 诇转讜讱 讛讗转讙专 讜讗转 讛讗讬拽住 注讬讙讜诇 讘讟讜讞 讛爪诇讞转诐 诇讻转讜讘 讘讞爪讬 砖注讛, 讜讬砖 住讬讻讜讬 诇讗 专注 砖讙诐 注讜讚 2-3 转讜讻谞讬讜转 讚讜诪讜转. 讻诪讜讘谉 砖讻讻诇 砖转爪讘专讜 诪讛讬专讜转 转讜讻诇讜 诇注讘讜专 诇讗转讙专讬诐 讬讜转专 讙讚讜诇讬诐. 专讜讘 讛诪转讻谞转讬诐 砖诪讙讬注讬诐 诇专讗讬讜谞讜转 注讘讜讚讛 谞转拽注讬诐 注诇 讞讬讚讜转 FizzBuzz 驻砖讜讟讜转. 讝讛 诇讗 讘讙诇诇 砖讛诐 诇讗 讬讜讚注讬诐 诇讻转讜讘 拽讜讚, 讗诇讗 讘讙诇诇 砖讛诐 诇讗 讬讜讚注讬诐 诇讻转讜讘 拽讜讚 诪讛专 诪住驻讬拽 讜诇讗 讬讜讚注讬诐 诇讛讬专讙注 讘专讗讬讜谉. 转专讙讬诇 讛砖诇讜砖讬诐 讚拽讜转 讝讜讝 注讜讘讚 讻诪讜 转专讜驻转 驻诇讗 讗诐 讙诐 讗转诐 诪讜爪讗讬诐 讗转 注爪诪讻诐 谞转拽注讬诐 讘专讗讬讜谞讜转 讻砖诪讙讬注讬诐 诇讞诇拽 砖诇 讛拽讬讚讜讚.

ToCode
1 419
# 诪转讻谞转讬诐 讟讜讘讬诐 / 拽讜讚 讟讜讘 讘讚专讱 讻诇诇 讻砖讗谞讞谞讜 讞讜砖讘讬诐 注诇 诪转讻谞转讬诐 讟讜讘讬诐 讛讚讘专 讛专讗砖讜谉 砖拽讜驻抓 诇专讗砖 讛讜讗 讗谞砖讬诐 砖注讜诪讚讬诐 讘讝诪谞讬诐, 讗谞砖讬诐 砖诪讜讻谞讬诐 诇讛砖拽讬注 诪注讘专 讻讚讬 诇讛讘讬讗 讗转 讛诪讜爪专 诇诇拽讜讞 讘专诪讛 讛诪拽爪讜注讬转 讛诪转讗讬诪讛 讜诇驻讬 诇讜讞 讛讝诪谞讬诐 讗诇讬讜 讛转讞讬讬讘讜, 讜讻谉 讗谞砖讬诐 砖讙诐 讬讬砖讗专讜 讻诇 讛诇讬诇讛 讘诪砖专讚 讻讚讬 砖讛讚诪讜 砖诇 讛讘讜拽专 讬注讘讜专 讞诇拽. 诪转讻谞转讬诐 讟讜讘讬诐 讛诐 讗谞砖讬诐 砖讗驻砖专 诇住诪讜讱 注诇讬讛诐 砖讛诪讜爪专 讬注讘讜讚 诇驻讬 讛 Spec 讜讘讝诪谉. 讜诪讛 注诐 拽讜讚 讟讜讘? 拽讜讚 讟讜讘 讛讜讗 拽讜讚 诪住讜讚专, 拽讜讚 砖诇讻诇 讚讘专 讬砖 讘讜 讗转 讛诪拽讜诐 讛讟讘注讬 砖诇讜, 拽讜讚 砖拽诇 诇拽专讜讗 讗讜转讜 讜诇讛讘讬谉 讗讜转讜, 拽讜讚 砖讗转讛 讬讜讚注 讘讚讬讜拽 讗讬驻讛 爪专讬讱 诇砖谞讜转 讘砖讘讬诇 诇砖谞讜转 讛转谞讛讙讜转 诪住讜讬诪转 讜讻诇 砖讬谞讜讬 诪砖驻讬注 专拽 注诇 讛讛转谞讛讙讜转 砖专爪讬转. 拽讜讚 讟讜讘 讻讜诇诇 住讟 砖诇 讘讚讬拽讜转 讬讞讬讚讛 讻讚讬 砖谞讚注 砖诇讗 砖讘专谞讜 讻诇讜诐 讜诇讗 讻讜诇诇 讻驻讬诇讜讬讜转 讻讬 讻驻诇 拽讜讚 讗讜诪专 砖讘砖讘讬诇 诇砖谞讜转 讛讬讘讟 讗讞讚 砖诇 讛讛转谞讛讙讜转 讗谞讬 爪专讬讱 诇讘爪注 讗转 讗讜转讜 砖讬谞讜讬 讘讻诪讛 诪拽讜诪讜转. 诪注谞讬讬谉 诇砖讬诐 诇讘 砖讻砖讗谞讞谞讜 诪讙讬注讬诐 诇砖驻讜讟 拽讜讚 诇讗 诪注谞讬讬谉 讗讜转谞讜 讻诪讛 讝诪谉 诇拽讞 诇讻转讜讘 讗讜转讜. 诪专讙注 砖讛拽讜讚 讻转讜讘 讛讜讗 注讜诪讚 讘驻谞讬 注爪诪讜, 讛讜讗 讘讗 诇住驻专 诇谞讜 住讬驻讜专 注诇 驻讜谞拽爪讬讜谞讗诇讬讜转 讜注诇 讛诪讜爪专, 讗讘诇 讙诐 注诇 讛诪讞砖讘讜转 砖诇 讛诪转讻谞转 诇讙讘讬 砖讬谞讜讬讬诐 讗驻砖专讬讬诐 讘讚专讬砖讜转 讜诪讛 讛住讘讬专讜转 砖诇 讻诇 砖讬谞讜讬, 讜注诇 讘讬爪讜注讬诐 讜讗讘讟讞转 诪讬讚注 讜讬讻讜诇转 讛转诪讜讚讚讜转 注诐 转拽诇讜转 讜注讜讚 讛诪讜谉 讛诪讜谉 驻专讟讬诐 拽讟谞讬诐 砖专拽 讛拽讜讚 讬讜讚注 诇住驻专. 讗谞讬 讞讜砖讘 砖讛讙讬注 讛讝诪谉 诇讛砖转诇讟 诪讞讚砖 注诇 讛诪讬诇讛. 讘讜讗讜 谞讻谞讛 "诪转讻谞转讬诐 讟讜讘讬诐" 讗转 讛讗谞砖讬诐 砖讻讜转讘讬诐 拽讜讚 讟讜讘. 讜砖讛诪转讻谞转讬诐 砖谞砖讗专讬诐 讻诇 讛诇讬诇讛 讘诪砖专讚 讬诪爪讗讜 诇注爪诪诐 讻讬谞讜讬 讞讚砖.

ToCode
1 419
# 驻砖讜讟 转专讗讛 诇讬 讗讬讱 注讜砖讬诐 讗转 讝讛 讗诐 讬爪讬注讜 诇讻诐 砖转讬 讚专讻讬诐 诇诇诪讜讚, 讛讗讞转 诪讛讬专讛 讗讘诇 讛讬讚注 砖转拽讘诇讜 讬讞讝讬拽 诪注诪讚 讘专讗砖 砖诇讻诐 诇砖讘讜注 讛拽专讜讘 讘诇讘讚 (诪讛 砖拽讜专讗讬诐 讗爪诇谞讜 - 讗讞专讬 讛讘讙专讜讬讜转 转砖讻讞讜 讛讻诇); 讜讛砖谞讬讛, 讗讬讟讬转 讬讜转专, 转拽谞讛 诇讻诐 讬讚注 砖讬讬砖讗专 讗转讻诐 讻诇 讛讞讬讬诐. 讗讜诇讬 诪诇讘讚 诇讬诪讜讚讬诐 诇讘讙专讜讬讜转, 谞讚诪讛 诇讬 砖专讜讘谞讜 谞注讚讬祝 讗转 讛讚专讱 讛讗讬讟讬转: 讛讛讙讬讜谉 讗讜诪专 砖讗诐 讻讘专 讛砖拽注转讬 讝诪谉 诇诇诪讜讚 诪砖讛讜, 注讚讬祝 砖讛讜讗 讬讬砖讗专 讗讬转讬 诇讗讜专讱 讝诪谉. 讛讗诪转 讛讬讗 砖讘专讜讘 讛住讬讟讜讗爪讬讜转 讛诇讬诪讜讚讬讜转 讗谞讞谞讜 诪拽讘诇讬诐 讘讚讬讜拽 讗转 讛讘讞讬专讛 讛讝讜. 讗讘诇 讘砖讘讬诇 诇讛讘讬谉 讗讜转讛 讜诇讛爪诇讬讞 诇讘讞讜专 讘讚专讱 砖转转讗讬诐 诇谞讜 讻讚讗讬 诇专讗讜转 拽讜讚诐 讗讬讱 讛诪讜讞 讛讗谞讜砖讬 注讜讘讚. 讛讝讬讻专讜谉 讘诪讜讞 砖诇谞讜 讘谞讜讬 拽爪转 讻诪讜 讙专祝 诪讻讜讜谉 讘拽讬砖讜专讬诐 讗住讜爪讬讗讟讬讘讬讬诐: 讚讘专 讗讞讚 诪讜讘讬诇 诇讚讘专 砖谞讬, 砖诪讜讘讬诇 诇砖诇讬砖讬 讜讻讱 讛诇讗讛. 讘讙诇诇 讝讛 讻砖诇讗 诪爪诇讬讞讬诐 诇讛讝讬讻专 讘诪讬诇讬诐 砖诇 讘讬转 讘砖讬专 讗驻砖专 诇讛转讞讬诇 诇讝诪讝诐 讗转 讛驻讬讝诪讜谉, 讜讗讞专讬 砖诪爪诇讬讞讬诐 诇讛讬讝讻专 讘诪砖驻讟 讗讞讚 讛砖讗专 讻讘专 诪诪砖讬讱 诪注爪诪讜. 讗讜 讗诐 谞谞住讛 诇诪谞讜转 讗转 讛讗讜转讬讜转 诪-转 讗讞讜专讛 诇-讗, 谞讙诇讛 砖讛诪讜讞 诇讙诪专讬 讘谞讬讙讜讚 诇讛讬讙讬讜谉 诪转讞讬诇 诇专讜抓 注诇 讻诇 讛讗讜转讬讜转 诪-讗 专拽 讘砖讘讬诇 诇讙诇讜转 诪讬 讘讗讛 诇驻谞讬 专. 讘讛讬讘讟 讛诇讬诪讜讚讬 讝讛 讗讜诪专 砖讻砖讗谞讬 谞转拽诇 讘诪讬讚注 讞讚砖 讗谞讬 爪专讬讱 诇住讜讜讙 讗讜转讜 讘讝讬讻专讜谉 诇驻讬 讛讚讘专讬诐 砖讗谞讬 讻讘专 讬讜讚注 砖诪讝讻讬专讬诐 诇讬 讗讜转讜. 讗诐 讛诪讬讚注 讞讚砖 诇讙诪专讬 讜诇讗 拽砖讜专 诇砖讜诐 讚讘专 讘注讜诇诐 砖诇讬 讛讜讗 讬驻转讞 驻讬谞讛 谞驻专讚转 讘专讗砖, 讗讘诇 讗诐 讝讛 诪砖讛讜 砖诪转讞讘专 诇讛诪讜谉 讚讘专讬诐 砖讗谞讬 讻讘专 讬讜讚注 讗讝 讛讜讗 讬讬砖诪专 注诐 讛拽讬砖讜专讬诐 诇讚讘专讬诐 讛讗诇讛. 讗讛 讜讻诪注讟 砖讻讞转讬 - 诇诪讜讞 讬砖 讙诐 住讜讙 砖诇 Garbage Collector 砖讬讝专讜拽 诇讗专讻讬讜谉 拽讟注讬 诪讬讚注 砖讗讬 讗驻砖专 诇讛讙讬注 讗诇讬讛诐 讗讜 砖讬砖 讗诇讬讛诐 诪注讟 诪讗讜讚 拽讬砖讜专讬诐 谞讻谞住讬诐. 注讻砖讬讜 讘讜讗讜 谞诇讱 诇讘讞讬专讛 砖诇谞讜 诇讙讘讬 爪讜专转 讛诇讬诪讜讚 讜讻诪讛 讝诪谉 讛诪讬讚注 讬讬砖诪专 讘专讗砖. 谞谞讬讞 砖讗谞讬 诇讜诪讚 专讬讗拽讟 讜讗谞讬 诪谞住讛 诇讻转讜讘 拽讜诪驻讜谞谞讟讛 砖诪讚驻讬住讛 讗转 讛诪住驻专讬诐 诪-1 注讚 10 讘诇讜诇讗讛. 讚专讱 诇讬诪讜讚 讗讞转 转讛讬讛 诇讞驻砖 讘讙讜讙诇 "讗讬讱 注讜砖讬诐 诇讜诇讗讜转 讘 JSX". 拽讜驻讬-驻讬讬住讟 诪讛转砖讜讘讛 讜讗谞讬 讗讙讬注 诇诪砖讛讜 讻讝讛:
function Numbers(props) {
    return (
        <ul>
            {Array.from({ length: 10 }).map((x, i) => <li>i + 1</li>)}
        </ul>
    );
}
讝讛 注讘讚 讜讛讚驻讬住 诇讬 讗转 讛诪住驻专讬诐 讘诇讜诇讗讛 讗讘诇 讻讻诇 讛谞专讗讛 驻注诐 讛讘讗讛 砖讗谞讬 讗爪讟专讱 诇讜诇讗讛 讚讜诪讛 讗谞讬 讗爪讟专讱 砖讜讘 诇讞驻砖 讘讙讜讙诇 讗讜 诇讞讝讜专 诇讞驻砖 讘拽讜讚 讛讝讛. 讛讜讗 驻砖讜讟 讬讜转专 诪讚讬 砖讜谞讛 诪讻诇 讛讚讘专讬诐 砖讛讻专转讬 拽讜讚诐 讜诇讻谉 讛诪讜讞 砖诇讬 诇讗 讬爪专 讗转 讛讞讬讘讜专 (谞.讘. 讗诇 转讛讬讜 诇讬 诪讛谞讜讚谞讬拽讬诐 讛讗诇讛 砖诪住转讻诇讬诐 注诇 拽讜讚 讻讝讛 讘拽讟注 砖诇 "谞讜 诪讛 讗转讛 专讜爪讛, 讝讛 讘住讱 讛讻诇 JavaScript"; 讗诐 讗转诐 专讜爪讬诐 诇砖讞拽 讗转 讛诪砖讞拽 讛讝讛 诇讻讜 诇诪爪讜讗 诇讻诐 讚讜讙诪讛 讗讞专转 砖诪讗讜讚 砖讜谞讛 诪讻诇 诪讛 砖讗转诐 诪讻讬专讬诐). 诇注讜诪转 讝讗转 讘讙讬砖讛 讛砖谞讬讛 讛诪砖讞拽 讬专讗讛 讗讞专转 诇讙诪专讬. 讗谞讬 诪转讞讬诇 讗讜转讜 讘讞讬驻讜砖 讚讘专讬诐 砖讗谞讬 诪讻讬专: 讗谞讬 讬讜讚注 砖讗驻砖专 诇讛爪讬讙 诪砖转谞讛 讘 JSX 讘讗诪爪注讜转 住讜讙专讬讬诐 诪住讜诇住诇讬诐, 讗谞讬 讬讜讚注 诇讘谞讜转 讘诇讜诇讗讛 诪注专讱 注诐 讻诇 讛诪住驻专讬诐 诪-1 注讚 10, 讗讝 讘讜讗讜 谞谞住讛 诇砖诇讘 讗转 讛砖谞讬讬诐. 讛拽讜讚 砖讬爪讗 注砖讜讬 诇讛讬专讗讜转 讻讱:
function Numbers(props) {
    const numbers = [];
    for (let i=1; i <= 10; i++) {
        numbers.push(<li>{i}</li>);
    }
    
    return (
        <ul>{numbers}</ul>
    );
}
讜讙诐 讝讛 注讘讚! 讗驻讬诇讜 砖诇讗 讬拽讘诇 砖讜诐 谞拽讜讚讜转 讘 Stack Overflow 讜讗祝 讗讞讚 诇讗 讬讻转讜讘 砖讜诐 驻讜住讟 砖讬诪诇讬抓 注诇 讛砖讬讟讛. 讛注谞讬讬谉 砖注讻砖讬讜 讗驻砖专 诇讛诪砖讬讱, 诇诪砖诇 讗驻砖专 诇讛专讗讜转 讗转 讛拽讜讚 诇讞讘专 砖讬诪诇讬抓 诇讬 诇拽专讜讗 注诇 讛驻讜谞拽爪讬讛 map. 讗谞讬 讬讻讜诇 诇诇诪讜讚 诪讛转讬注讜讚 讗讬讱 讛讬讗 注讜讘讚转 讜讗讞专讬 砖"砖诪专转讬" 讗转 map 讘讝讬讻专讜谉 讗谞住讛 诇讗专讙谉 诪讞讚砖 讗转 讛拽讜讚 讘讗诪爪注讜转讛:
function Numbers(props) {
    const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    const listItems = numbers.map(x => <li>{x}</li>);
    
    return (
        <ul>{listItems}</ul>
    );
}

诪讛拽讜讚 讛讝讛 讗谞讬 讬讻讜诇 诇讞驻砖 讗讬讱 诪讬讬爪专讬诐 讗转 讛诪注专讱 讛专讗砖讜谉 讘爪讜专讛 讗讜讟讜诪讟讬转, 讗讬讱 诪讞讘专讬诐 讗转 砖转讬 讛砖讜专讜转 讛专讗砖讜谞讜转 诇砖讜专讛 讗讞转 讜讘住讜祝 讗谞讬 讙诐 讗讙讬注 讘讚讬讜拽 诇驻讬转专讜谉 砖诪爪讗转讬 讘讛转讞诇讛 讘讙讜讙诇. 讛讛讘讚诇 讛讜讗 诇讗 讛拽讜讚 砖谞讻转讘 讘砖转讬 讛讙讬砖讜转 讗诇讗 讗讬讱 谞专讗讛 讛诪讜讞 砖诇 砖谞讬 讛诪转讻谞转讬诐 砖驻转专讜 讗转 讛讗转讙专. 讘诪拽专讛 砖诇 讛诪转讻谞转 讛专讗砖讜谉 讬砖 诇谞讜 专讻讬讘 诪讬讚注 讝专讜拽 讘爪讚 砖诇 讛诪讜讞 砖讛讙讬注 诇砖诐 讚专讱 讛注转拽-讛讚讘拽 诪讙讜讙诇. 讘诪拽专讛 砖诇 讛诪转讻谞转 讛砖谞讬 讬砖 诇谞讜 诪住诇讜诇 诪讬讚注 讘专讜专 诇诪讬讚注 讛讞讚砖 诪讚讘专讬诐 砖诪讞讜讘专讬诐 讘专砖转 讞讝拽讛 砖诇 讗住讜爪讬讗爪讬讜转. 讘讝讻讜转 讛讬住讜讚讜转 讛讞讝拽讬诐 讛诪讬讚注 讬讬砖讗专 讘专讗砖 诇讗讜专讱 讝诪谉 讜讬讛讬讛 拽诇 诇讛砖转诪砖 讘讜 讻讘住讬住 诇诇诪讬讚讛 注转讬讚讬转. 讛讬讜诐 注诐 讛讗讬谞讟专谞讟 讜讙讜讙诇 诇诪爪讜讗 讗转 讛讬讚注 讝讛 诇讗 讛讞诇拽 讛拽砖讛; 讛专讘讛 讬讜转专 诪注谞讬讬谉 诇讛爪诇讬讞 诇讛讟诪讬注 讗转 讛讬讚注 讻讱 砖讬讛讬讛 诇谞讜 拽诇 诇讛砖转诪砖 讘讜 讻砖谞爪讟专讱 讗讜转讜.