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
# 讗讬驻讛 讞讜转诪讬诐? 讗诐 讛讘谞拽 讛讬讛 诪爪讬注 诪住诇讜诇 讞讬住讻讜谉 讘 10% 专讬讘讬转 诇砖谞讛 讗谞讬 讘讟讜讞 砖讻诇 讗讞讚 讛讬讛 拽讜驻抓 诇砖讬诐 砖诐 讻诪讛 讙专讜砖讬诐. 讛讘注讬讛 注诐 讞讬住讻讜谉 讘专讬讘讬转 讙讘讜讛讛 谞拽专讗转 住讬讻讜谉 讜讗谞讞谞讜 讛专讘讛 驻讞讜转 诪诪讛专讬诐 诇砖讬诐 讗转 讛讻住祝 砖诇谞讜 讘诪住诇讜诇 砖讘讜 讗讜诇讬 转拽讘诇 讘住讜祝 10% 诇砖谞讛 (诇讗 住讘讬专), 讗讜诇讬 转拽讘诇 5% 讜讗讜诇讬 讙诐 转驻住讬讚 50%. 诇诪专讜转 诪砖讞拽 讛住讬讻讜谉 讗谞讞谞讜 讙诐 讬讜讚注讬诐 砖诪讬 砖诪讞讝讬拽 讗转 讻诇 讛讻住祝 讘注讜讘专 讜砖讘 诇讟讜讜讞 讛专讞讜拽 讬驻住讬讚 讘讙诇诇 砖讻诇 砖谞讛 讛诪诪砖诇讛 诪讚驻讬住讛 注讜讚 讜注讜讚 讻住祝 讜讻讱 注专讱 讛讻住祝 转诪讬讚 讬讜专讚 - 讗讜 讘谞讬住讜讞 诪拽讘讬诇 砖拽诇 讬讜转专 诇专讗讜转 讗讜转讜 - 讛诪讞讬专讬诐 讻诇 讛讝诪谉 注讜诇讬诐. 讻砖讝讛 谞讜讙注 诇讻住祝 拽诇 诇专讗讜转 砖讗谞讞谞讜 爪专讬讻讬诐 诇讞诇拽 讗转 讛讛砖拽注讛 讜诇砖讬诐 讞诇拽 诪讛住讻讜诐 讘诪住诇讜诇 注诐 讛住讬讻讜谉 讛谞诪讜讱 砖讬讬转谉 转砖讜讗讛 谞诪讜讻讛, 讜讞诇拽 诪讛住讻讜诐 讘诪住诇讜诇 讘住讬讻讜谉 讙讘讜讛 讻讚讬 诇讛讙讚讬诇 讗转 讛转砖讜讗讛 诇讗讜专讱 讝诪谉. 谞讻讜谉, 讛诪住诇讜诇 讘住讬讻讜谉 讙讘讜讛 诇驻注诪讬诐 讬注诇讛 讜诇驻注诪讬诐 讬专讚, 讗讘诇 讘讟讜讜讞 讛专讞讜拽 砖诐 谞专讗讛 讗转 讛转讜爪讗讜转 讛讟讜讘讜转 讘讬讜转专. 讗讘诇 诪讛 诇讙讘讬 讛砖拽注讛 讘拽专讬讬专讛? 讗诐 讛讬讬转讬 诪爪讬注 诇讱 诇讛砖拽讬注 砖注讛 讘讬讜诐 讘诇讬诪讜讚 讟讻谞讜诇讜讙讬讜转 讞讚砖讜转, 讜诪讘讟讬讞 砖讗讞专讬 讞爪讬 砖谞讛 讗转讛 转诪爪讗 注讘讜讚讛 讘诪砖讻讜专转 讻驻讜诇讛 诪诪讛 砖讗转讛 诪专讜讜讬讞 讛讬讜诐 讜讘讗讜讜讬专讛 讟讜讘讛 讘讛专讘讛, 讗谞讬 讘讟讜讞 砖讻诇 讗讞讚 讛讬讛 讞讜转诐. 讗讘诇 讘讞讬讬诐 讛讗诪讬转讬讬诐 讗祝 讗讞讚 诇讗 讬讻讜诇 诇讛讘讟讬讞 讚讘专 讻讝讛. 讛讗诐 讘讙诇诇 讝讛 砖讜讜讛 诇讜讜转专 注诇 讛砖拽注讛 讘拽专讬讬专讛 讜诇讬诪讜讚 讟讻谞讜诇讜讙讬讜转 讞讚砖讜转? 讗讬谉 住讬讻讜讬. 讻砖讗转讛 诪转拽讚诐 专拽 讘诪住诇讜诇 讛拽专讬讬专讛 讛住讜诇讬讚讬 讗转讛 诪驻住讬讚 讻讬 讛讟讻谞讜诇讜讙讬讛 转诪讬讚 专爪讛 拽讚讬诪讛. 讘砖讘讬诇 讛拽驻讬爪讜转 讛讙讚讜诇讜转 爪专讬讱 诇拽讞转 住讬讻讜谞讬诐, 讙诐 讗诐 讞诇拽 诪讛诐 讬转讙诇讜 讻讛驻住讚. 讛诪讟讘注 砖诇谞讜 讛讜讗 讝诪谉 讜讛讞诇讜拽讛 砖诇讜 爪专讬讻讛 诇讛转讗讬诐 诇讞诇讜拽讛 砖诇 讻住驻讬诐 讗爪诇 讗谞砖讬诐 砖诪谞讛诇讬诐 讛砖拽注讜转: 讞诇拽 诪讛讝诪谉 讬讜拽讚砖 诇诪住诇讜诇 讛住讜诇讬讚讬 (注讘讜讚讛) 讜讞诇拽 讞讬讬讘 诇讛讬讜转 诪讜拽讚砖 诇诪住诇讜诇 讛诪住讜讻谉 - 诇讬诪讜讚 讜讛转谞住讜转 注诐 讟讻谞讜诇讜讙讬讜转 讞讚砖讜转. 讻砖讗转讛 诪砖拽讬注 砖注讛 讘讬讜诐 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讞讚砖讛 讗转讛 诪注诇讛 讗转 讛住讬讻讜讬 诇讛讬讜转 讘诪拽讜诐 讛谞讻讜谉 讻砖讗讞转 讛讟讻谞讜诇讜讙讬讜转 转讘讬讗 讗讬转讛 讛讝讚诪谞讜转 诇讝讬谞讜拽 讘拽专讬讬专讛.

ToCode
1 419
# 讗讬讞讜讚 拽讜诪讬讟讬诐 注诇讜诇 诇讛讬讜转 诪住讜讻谉 讬砖 诪砖讛讜 讬驻讛 讘讘专讗谞抓 砖住讬讬诪转 诇注讘讜讚 注诇讬讜, 讗转讛 诪讻讜讜抓 讗转 讛讻诇 诇拽讜诪讬讟 讗讞讚 讜诪讞讘专 诇 main. 讗驻砖专 诇讛住转讻诇 注诇 git log 诪 main 讜诇专讗讜转 砖讻诇 拽讜诪讬讟 诪讬讬爪讙 讗转 讻诇 讛砖讬谞讜讬讬诐 砖讛讬讬转 爪专讬讱 诇讻转讜讘 讘砖讘讬诇 驻讬爪'专 诪住讜讬诐 讘诇讬 诇讛讬转拽注 注诇 讻诇 诪讬谞讬 拽讜诪讬讟讬 转讬拽讜谞讬诐 砖诇讗 诪讜住讬驻讬诐 讻诇讜诐. 讗讘诇, 诇讛专讙诇 诇讻讜讜抓 讜诇讗讞讚 拽讜诪讬讟讬诐 讬砖 讙诐 爪讚 讗驻诇 讜讛讜讗 注诇讜诇 诇注诇讜转 诇讻诐 讘诇讗 诪注讟 砖注讜转 砖讬谞讛. 讛讘讗讙 讘住讬驻讜专 砖诇讬 诇诪砖诇 讛转讞讬诇 诪拽讜讚 转诪讬诐 砖谞专讗讛 讘注专讱 讻讱 (讛砖诪讜转 砖讜谞讜 讻讚讬 诇砖诪讜专 注诇 驻专讟讬讜转 讛诪注讜专讘讬诐, 讛住讘讬讘讛 谞砖讗专讛 专讬讬诇住):
class Task < ActiveRecord::Base
    validates :name, presence: true
    validates :description, presence: true, unless: :new_record?
end
注讚 诇驻讛 讛讻诇 拽诇 - 诪砖讬诪讛 谞讞砖讘转 讜讜诇讬讚讬转 讗诐 讬砖 诇讛 砖诐 讜转讬讗讜专. 讗讘诇 专讙注, 诪讛 讝讛 讛 unless 砖诐 讘住讜祝 讛转讬讗讜专? 诇诪讛 讝讛 诪砖谞讛 讗诐 诪砖讬诪讛 讛讬讗 new_record? 讗讜 诇讗 讘砖讘讬诇 诇讞讘专 诇讛 转讬讗讜专? 讜讗诐 砖诪讬诐 讗转 讛砖讗诇讜转 讘爪讚 拽诇 讙诐 诇专讗讜转 砖讬砖 驻讛 驻讜讟谞爪讬讗诇 讘讗讙讬诐 诇讗 拽讟谉 (讗讞讚 诪讛诐 讛讜讗 讝讛 砖讘讚讬讜拽 讞拽专转讬 讻砖讛讙注转讬 诇拽讜讚 讛讝讛) 注讘讜专 讜讜诇讬讚爪讬讜转 砖诇讗 专爪讜转 讗讜 砖专爪讜转 讘讝诪谉 诇讗 诪转讗讬诐. 讚诪讬讬谞讜 诇诪砖诇 诪砖讬诪讛 讞讚砖讛 砖谞讜爪专转 讘诇讬 转讬讗讜专 (讜讜诇讬讚讬转), 谞砖诪专转 讘讘住讬住 讛谞转讜谞讬诐 讜讗讝 诪砖转诪砖 诪谞住讛 诇注专讜讱 讗讜转讛 讜诇砖谞讜转 讗转 讛砖诐. 讛砖诐 讛讞讚砖 诇讗 谞砖诪专 讻讬 讛诪砖讬诪讛 讛讬讗 讻讘专 诇讗 new_record? 讜讛讜讚注转 讛砖讙讬讗讛 诇讗 拽砖讜专讛 诇砖讬谞讜讬 砖讛诪砖转诪砖 谞讬住讛 诇讘爪注. 讘讞讝专讛 诇 unless 砖诇谞讜. 讘砖讘讬诇 诇讙诇讜转 诇诪讛 拽讜讚 诪住讜讬诐 谞讻谞住 诇诪注专讻转 讗谞讬 诪砖转诪砖 讘 git blame:
$ git blame -- app/models/task.rb | grep unless
讜诪讜爪讗 砖讛砖讜专讛 谞讻谞住讛 讘拽讜诪讬讟 诪住驻专 c8fd7f671 注诐 讛讛讜讚注讛 讛诪讜驻诇讗讛: > Squashed commit of the following: 讜讗讞专讬讛 专砖讬诪讛 砖诇 注砖专讜转 拽讜诪讬讟讬诐 砖讗讜讞讚讜 诇拽讜诪讬讟 诪住驻专 c8fd7f671 讛拽住讜诐. 讘诇讬 讛 Squash Commit 讛爪注讚 讛讘讗 砖诇讬 讛讬讛 诇讛驻注讬诇:
$ git log -p c8fd7f671
讜诇诪爪讜讗 讘驻诇讟 讗讬讝讛 砖讜专讜转 讗讞专讜转 谞讻谞住讜 讘讗讜转讜 拽讜诪讬讟 讬讞讚 注诐 讛 unless 砖诇谞讜 讻讚讬 诇诪爪讜讗 诇诪讛 讛讬讛 爪专讬讱 讗转 讛转谞讗讬. 讘讝讻讜转 讛 Squash Commit 讝讻讬转讬 诇讘诇讜转 讛专讘讛 讬讜转专 讝诪谉 讘诇住拽讜专 砖讬谞讜讬讬诐 讘注砖专讜转 拽讜诪讬讟讬诐 注讚 砖诪爪讗转讬 讗转 讛拽讜诪讬讟 砖讛讻讬诇 讘诪拽讜专 讗转 砖讜专转 讛 unless, 讜讻诪讜 砖爪讬驻讬转讬 讛砖讜专讛 讛讝讗转 讛讬转讛 讞诇拽 诪驻讬转专讜谉 诇讘注讬讛 讙讚讜诇讛 讬讜转专 (驻讬转专讜谉 注诐 讘讗讙讬诐, 讗讘诇 讘讻诇 讝讗转 驻讬转专讜谉). 专拽 讚专讱 砖讗专 讛砖讜专讜转 诪爪讗转讬 诪讛 讛讬转讛 讛讘注讬讛 讛讙讚讜诇讛 讬讜转专 讜讬讻讜诇转讬 诇转拽谉 讗转 讛讘讗讙 讘诇讬 诇砖讘讜专 讗转 讛驻讬爪'专 砖讘砖讘讬诇讜 讛拽讜讚 讛讬讛 砖诐. 诇拽讞? 讝讛 拽诇 - 拽讜诪讬讟, 讻讜诇诇 讻诇 讛砖讬谞讜讬讬诐 讜讻讜诇诇 讛讜讚注转 讛拽讜诪讬讟, 讛讜讗 诪讻转讘 砖讗转诐 砖讜诇讞讬诐 诇讗谞讬 讛注转讬讚讬 砖诇讻诐, 诪讻转讘 砖诪住驻专 住讬驻讜专 注诇 讘注讬讛 砖讛转诪讜讚讚转诐 讗讬转讛, 注诇 讛诪讞砖讘讜转 砖诇讻诐 讗诇 诪讜诇 讗讜转讛 讘注讬讛 讜注诇 讛驻讬转专讜谉 讘讻诇诇讜转讜 砖讘谞讬转诐. 讗诐 讛专讝讜诇讜爪讬讛 讙讘讜讛讛 讗讜 谞诪讜讻讛 诪讚讬 讬讛讬讛 拽砖讛 诇讗谞讬 讛注转讬讚讬 砖诇讻诐 诇拽专讜讗 讗转 讛住讬驻讜专 讜诇讛砖转诪砖 讘讜. 讛讬讜 诪诪讜拽讚讬诐 讜砖讬诪专讜 注诇 讛拽讜诪讬讟讬诐 砖诇讻诐 诪诪讜拽讚讬诐 讜讛讗谞讬 讛注转讬讚讬 砖诇讻诐 讬讜讻诇 诇讬砖讜谉 讛专讘讛 讬讜转专 讟讜讘.

ToCode
1 419
# 讗讬讱 诇拽讘诇 讗转 讛讙讚专讜转 讛讟讬驻讜住讬诐 砖诇 讻诇 拽讜诪驻讜谞谞讟转 专讬讗拽讟 讘 TypeScript 讘注讘讜讚讛 注诐 TypeScript 讻驻讬 砖拽诇 诇讛讘讬谉 诇驻讬 砖诐 讛砖驻讛, 讗谞讞谞讜 爪专讬讻讬诐 诇讛讙讚讬专 讟讬驻讜住 诇讻诇 诪砖转谞讛. 注诐 专讜讘 讛诪砖转谞讬诐 讝讛 诇讗 讘注讬讛 讗讘诇 诪讚讬 驻注诐 讗转诐 专讜爪讬诐 诇讛讙讬讚 诪砖讛讜 驻专讜注 讻诪讜 "讗谞讬 诪讜讻谉 诇拽讘诇 讻诇 诪讛 砖 input 诪讜讻谉 诇拽讘诇". 诇讚讜讙诪讛 讘拽讜诪驻讜谞谞讟讛 讛讝讜 砖诪讬讬爪专转 input 讬讞讚 注诐 label:
function InputWithLabel(props: {...}) {
    const { label } = props;
    return (
        <label>{label}</label>
        <input type="text" {...props} />
    );
}
诇 TypeScript 讬砖 驻讬转专讜谉 谞讜讞 诇诪爪讘讬诐 讗诇讛 砖谞拽专讗 React.ComponentProps 讜讝讛 谞专讗讛 讻讱:
type InputProps = React.ComponentProps<'input'>
注讻砖讬讜 讗驻砖专 诇讞讝讜专 诇拽讜诪驻讜谞谞讟讛 砖诇谞讜 讜诇讻转讜讘:
function InputWithLabel(props: { label: string } & InputProps) {
  const { label } = props;
  return (
    <>
      <label>{label}</label>
      <input type="text" {...props} />
    </>
  );
}

ToCode
1 419
# 诇讛讘讬谉 讗讜 诇驻转讜专 讗诐 讬砖 诇讱 讗转 讛讘讞讬专讛, 注讻砖讬讜, 讛讬讜诐, 注诐 讛讘讗讙 讛讝讛 砖讗转 转拽讜注讛 注诇讬讜 讻讘专 砖讘讜注讬讬诐 - 讗诐 讬砖 诇讱 讗转 讛讘讞讬专讛 诇驻转讜专 讗讜转讜 讻诪讜 讘诪讟讛 拽住诪讬诐, 诇诪爪讜讗 讗转 讛砖讜专讛 讛讝讗转 砖转转拽谉 讛讻诇. 讗诐 讗转 讬讻讜诇讛 诇拽讘诇 讗转 讛砖讜专讛 讛讝讗转, 诇讗 转拽讞讬? 讛讘讞讬专讛 讘讬谉 诇讛讘讬谉 讗讜 诇驻转讜专 诪转讞讬诇讛 诇讛讬讜转 诪注谞讬讬谞转 专拽 讻砖讬砖 讛转谞讙砖讜转 讘讬谉 讛砖谞讬讬诐. 讘专讜专 砖讗谞讬 专讜爪讛 讙诐 诇讛讘讬谉, 讗讘诇 谞专讗讛 讗转讻诐 讗讜诪专讬诐 诇讘讜住 砖讛砖讜专讛 讛讛讬讗 诪 Stack Overflow 砖驻讜转专转 讛讻诇 讛讬讗 诇讗 诪住驻讬拽 讟讜讘讛 讻讬 讗谞讬 诇讗 诪讘讬谞讛 讗讜转讛. 讜谞专讗讛 诪讛 讛讘讜住 砖诇讻诐 讬讙讬讚. 讜注讚讬讬谉 讻砖诪住转讻诇讬诐 拽讚讬诪讛 注诇 讛拽专讬讬专讛 砖诇讱 讜注诇 讗讬讻讜转 讛拽讜讚 讘诪注专讻转 拽诇 诇专讗讜转 砖讛讛转注拽砖讜转 诇讻转讜讘 专拽 拽讜讚 砖讗谞讬 诪讘讬谉 讛讬讗 转诪讬讚 讛讘讞讬专讛 讛诪砖转诇诪转. 讗讜诇讬 诇讗 诪砖转诇诪转 诪讘讞讬谞转 Product (讗讬谉 诇讬 诪讜砖讙 诪讛 诇讜讞讜转 讛讝诪谞讬诐 砖诇讛诐) 讗诇讗 讛讻讬 诪砖转诇诪转 诇注转讬讚 讛拽专讬讬专讛 砖诇讱.

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

ToCode
1 419
# 讞诪砖 讚拽讜转 注诇 住讬讘讜讻讬讜转 讗讞讚 讛砖讬讚专讜讙讬诐 砖讞诇诪转讬 注诇讬讜 讛专讘讛 讝诪谉 诇讗转专 讛讝讛 讛讬讛 爪'讟 讘讬谉 讛讙讜诇砖讬诐, 讗转诐 讬讜讚注讬诐, 讻诪讜 砖讬砖 讘驻讬讬住讘讜拽. 诇讗 专爪讬转讬 讗讬讝讛 讗讬谞讟专拽讜诐 讗讜 诪砖讛讜 砖转讜讻诇讜 诇砖讗讜诇 讗讜转讬 砖讗诇讜转, 讗诇讗 讚诪讬讬谞转讬 讛诪讜谉 转诇诪讬讚讬诐 砖讜讗诇讬诐 讜注讜谞讬诐 讗讞讚 诇砖谞讬 讜住转诐 诪转讬讬讚讚讬诐. 讬砖讘转讬 诇讻转讜讘 讗转 讛拽讜讚 注诇 诪讻讜谞转 讛驻讬转讜讞 砖诇讬 讜砖讘专转讬 讗转 讛专讗砖 讗讬讱 诇注爪讘 讗转 讛驻讬爪'专 讜讗讬讝讛 诪讗驻讬讬谞讬 HTML 讗驻砖专 讬讛讬讛 诇专砖讜诐 讘讛讜讚注讜转 讜讗驻讬诇讜 讛注诇讬转讬 砖专转 讘讚讬拽讜转 讜拽砖拽砖转讬 讘爪'讟 注诐 讻诪讛 讞讘专讬诐 讻讚讬 诇专讗讜转 砖讛讻诇 注讜讘讚. 讜讝讛 注讘讚, 诇驻讞讜转 注讚 砖注诇讬转讬 诇驻专讜讚拽砖谉. 讻讬 诪讛 讗谞讬 讗讙讬讚 诇讻诐 讛讞讬讬诐 讘驻专讜讚拽砖谉 讛诐 诇讗 讛讞讬讬诐 注诇 讛诪讞砖讘 讛诪拽讜诪讬 讜诇砖诪讞转讬 讬砖 驻讛 讛专讘讛 讬讜转专 讙讜诇砖讬诐 讘讗转专 诪讞讘专讬诐 砖拽砖拽砖转讬 讗讬转诐 讘爪'讟 注诇 砖专转 讛讘讚讬拽讜转. 讻讘专 讘砖注讜转 讛专讗砖讜谞讜转 讗讞专讬 讛注诇讗转 讛驻讬爪'专 讗谞砖讬诐 讛转讞讬诇讜 诇砖诇讜讞 讛讜讚注讜转 "诇讗 诪爪诇讬讞 诇讛转讞讘专 诇讗转专", "诇讗 专讜讗讬诐 讗转 讛拽讜专住讬诐", 讜"诪讛 拽专讛 砖讛讻诇 谞讛讬讛 讗讬讟讬 驻转讗讜诐?". 诪住转讘专 砖诪谞讙谞讜谉 讛爪'讟 讛诪转讜讞讻诐 砖讻转讘转讬 讻诇诇 拽讜讚 砖讞讬驻砖 讗转 讻诇 讛讛讜讚注讜转 砖爪专讬讱 诇讛爪讬讙 诇诪砖转诪砖 诪住讜讬诐, 讜讻讻诇 砖讛讬讜 讬讜转专 诪砖转诪砖讬诐 讘讗转专 讛拽讜讚 讛讝讛 讛驻讱 讬讜转专 讜讬讜转专 讗讬讟讬 讘爪讜专讛 讗拽住驻讜谞谞爪讬讗诇讬转. 讗诐 专拽 讛讬讬转讬 讬讜讚注 注诇 住讬讘讜讻讬讜转 讻砖讻转讘转讬 讗转 讛拽讜讚. 住讬讘讜讻讬讜转 讛讬讗 讘讚讬讜拽 讛专注讬讜谉 讛讝讛 砖注讜讝专 诇谞讜 诇讛住转讻诇 注诇 讗诇讙讜专讬转诐 讜诇砖讗讜诇 讗转 讛砖讗诇讛 讛驻砖讜讟讛 "讗讬讱 讛讚讘专 讛讝讛 讬转谞讛讙 讻讻诇 砖讛拽诇讟 讬讙讚诇?". 讛住讬讘讜讻讬讜转 砖诇 讗诇讙讜专讬转诐 诇讗 讗讜诪专转 讻诪讛 讝诪谉 讬讬拽讞 诇讜 诇专讜抓, 讻讬 讬砖 注讜讚 讛诪讜谉 讙讜专诪讬诐 砖诪砖驻讬注讬诐 注诇 讝诪谞讬 讛专讬爪讛 讘注讜诇诐 讛讗诪讬转讬; 讗讘诇 讛讬讗 讬讻讜诇讛 诇转转 诪讚讚 讗讬讻讜转 讟讜讘 诇拽讜讚 砖诇谞讜 讜诇驻注诪讬诐 讬讻讜诇讛 诇讛讝讛讬专 讗讜转谞讜 诪讗住讜谉 诇驻谞讬 砖讛讜讗 诪讙讬注 诇诪砖转诪砖讬诐. 讗谞讞谞讜 讘讚专讱 讻诇诇 诪住诪谞讬诐 住讬讘讜讻讬讜转 砖诇 讗诇讙讜专讬转诐 讘讻转讬讘 O (讝讜 讛讗讜转 O 讙讚讜诇讛), 讗讞专讬讛 住讜讙专讬讬诐 讜讘转讜讻诐 驻讜谞拽爪讬讛 注诐 讛讗讜转 n. 讘讟讜讞 专讗讬转诐 讗转 讛讻转讬讘 讛讝讛 讜讛谞讛 讻诪讛 讚讜讙诪讗讜转:
O(n)
O(n ^ 2)
O(logn)
O(n * n)
讛 n 讘转讜讱 讛谞讜住讞讛 诪讬讬爪讙 讗转 讙讜讚诇 讛拽诇讟 讜砖讜讜讛 诇砖讬诐 诇讘 砖诪讛 砖诪注谞讬讬谉 讗讜转谞讜 讘专讜讘 讞讬砖讜讘讬 讛住讬讘讜讻讬讜转 讛讜讗 讻诪讛 注讜讚 注讘讜讚讛 讛讗诇讙讜专讬转诐 讬爪讟专讱 诇讘爪注 讻讻诇 砖讛拽诇讟 讬讙讚诇 讘爪讜专讛 诪砖诪注讜转讬转. 诇讻谉 诪讘讞讬谞转 住讬讘讜讻讬讜转 讗讬谉 讛讘讚诇 讘讬谉 2n, 3n 讜讗驻讬诇讜 100n - 讘讻诇 讛诪拽专讬诐 讛住讬讘讜讻讬讜转 谞拽专讗转 诇讬谞讗专讬转 讜讘讙讚讜诇 讝讛 讗讜诪专 砖讻讻诇 砖讛拽诇讟 讬讙讚诇 讛讗诇讙讜专讬转诐 讬爪讟专讱 诇注讘讜讚 拽砖讛 讬讜转专 讗讘诇 讘爪讜专讛 驻专讜驻讜专爪讬讜谞讗诇讬转 诇讙讜讚诇 讛拽诇讟. 讗讬讱 诪讞砖讘讬诐 住讬讘讜讻讬讜转? 讗谞讬 砖诪讞 砖砖讗诇转诐 讜讗谞住讛 诇注谞讜转 讚专讱 讚讜讙诪讛. 讘讗转讙专 Advent Of Code 砖诇 讗转诪讜诇 (讛转讞诇谞讜 讗转 讛讗转讙专讬诐 砖诇 2020, 讗讝 转转讻讜谞谞讜 诇讞驻讬专讜转 AoC 讘讞讜讚砖 讛拽专讜讘) 讛诪砖讬诪讛 讛讬转讛 诇诪爪讜讗 讝讜讙讜转 砖诇 诪住驻专讬诐 讘专砖讬诪讛 砖住讻讜诪诐 讛讜讗 2020. 诇讚讜讙诪讛 讘专砖讬诪讛 讛讝讗转:
1721
979
366
299
675
1456
讛诪住驻专讬诐 1721 讜 299 诪转讗讬诪讬诐 讻讬讜讜谉 砖 1721 讜注讜讚 299 谞讜转谉 2020. 讚专讱 讗讞转 诇诪爪讜讗 讗转 讛诪住驻专讬诐 讛讗诇讛 讛讜讗 诇专讜抓 注诇 讛拽诇讟 讘诇讜诇讗讛 讻驻讜诇讛:

def find_pair(data, requested_sum):
    return [(a, b) for a in data for b in data if a + b == requested_sum]


numbers = [1721, 979, 366, 299, 675, 1456]
print(find_pair(numbers, 2020))
讝讛 注讜讘讚 讜诪讚驻讬住 讗转 讛转讜爪讗讛 讛谞讻讜谞讛. 讻砖诪住转讻诇讬诐 注诇 讻诪讜转 讛驻注讜诇讜转 讜注诇 讗讬讱 讛诪谞讙谞讜谉 讬转驻拽讚 讻讻诇 砖讛拽诇讟 讬讙讚诇 讗谞讞谞讜 专讜讗讬诐 砖注诇 讻诇 诪住驻专 砖谞讜住祝 诇拽诇讟 注诇 讛诪讞砖讘 诇讘讚讜拽 n 讗驻砖专讜讬讜转 谞讜住驻讜转, 讻诇讜诪专 注诇讬谞讜 诇讘讚讜拽 讗转 讛诪住驻专 讛讞讚砖 讗诇 诪讜诇 讻诇 讛诪住驻专讬诐 讛讬砖谞讬诐. 住讬讘讜讻讬讜转 讻讝讗转 谞拽专讗转 O(n*n). 讗谞讞谞讜 讬讻讜诇讬诐 诇砖驻专 讗转 讛诪爪讘 讗诐 谞讘专讞 诪讛诇讜诇讗讛 讘专讙注 砖诪爪讗谞讜 讗转 讛讛转讗诪讛 讛专讗砖讜谞讛, 讗讘诇 讘诪拽专讛 讛讙专讜注 讘讬讜转专 (讻砖讗讬谉 讝讜讙 诪转讗讬诐) 讗谞讞谞讜 注讚讬讬谉 谞爪讟专讱 诇住讬讬诐 讗转 讻诇 讛诇讜诇讗讛 讛讻驻讜诇讛 讻讚讬 诇讛砖转讻谞注 砖讗讬谉 讝讜讙讜转 诪转讗讬诪讬诐. 讙讬砖讛 砖谞讬讛 诇驻转讜专 讗转 讗讜转讛 讘注讬讛 讛讬讗 讛讙讬砖讛 讛诇讬谞讗专讬转. 讘讙讬砖讛 讝讜 谞砖诪讜专 讗转 讻诇 讛诪住驻专讬诐 讘转讜讱 诪讘谞讛 谞转讜谞讬诐 砖讛讞讬驻讜砖 讘讜 讛讜讗 诪讗讜讚 诪讛讬专 (讘驻讬讬转讜谉 讬砖 诇谞讜 拽讘讜爪讛 讗讜 诪讬诇讜谉 诇爪讜专讱 讝讛). 讻砖讗谞讬 讗讜诪专 诪讗讜讚 诪讛讬专 讗谞讬 诪转讻讜讜谉 砖讛讞讬驻讜砖 讘诪讘谞讛 讛谞转讜谞讬诐 诇讗 转诇讜讬 讘讻诪讛 讚讘专讬诐 拽讬讬诪讬诐 讻讘专 讘诪讘谞讛 讛谞转讜谞讬诐, 讗讜 砖诇讜拽讞 讗讜转讜 讛讝诪谉 诇讞驻砖 诪住驻专 讘拽讘讜爪讛 砖诇 3 讗讬讘专讬诐 讻诪讜 讘拽讘讜爪讛 砖诇 10,000 讗讬讘专讬诐. 诇讻谉 讗谞讞谞讜 讬讻讜诇讬诐 诇讻转讜讘 讗转 讛讗诇讙讜专讬转诐 讛讘讗:
def find_pair(data, requested_sum):
    dataset = set(data)
    for number in data:
        if (2020 - number) in dataset:
            return (number, 2020 - number)


numbers = [1721, 979, 366, 299, 675, 1456]
print(find_pair(numbers, 2020))
砖讘诪讘讟 专讗砖讜谉 诇讗 谞专讗讛 砖讜谞讛 诪砖诪注讜转讬转 诪讘讞讬谞转 讗讜专讱 拽讜讚 讗讜 讛诪讜专讻讘讜转 砖诇讜, 讗讘诇 讻谉 诪讻讬诇 讛讘讚诇 诪讛讜转讬: 讗诐 谞讜住讬祝 讗讬讘专 诇专砖讬诪转 讛诪住驻专讬诐 砖诇谞讜 谞爪讟专讱 诇讘爪注 专拽 驻注讜诇讛 讗讞转 讬讜转专 诪诪讛 砖注砖讬谞讜 拽讜讚诐. 讻诇讜诪专 爪专讬讱 诇讘讚讜拽 专拽 讗诐 2020 驻讞讜转 讛诪住驻专 讛讞讚砖 拽讬讬诐 讘拽讘讜爪讛 dataset, 讜讗谞讞谞讜 讻讘专 讬讜讚注讬诐 诇注砖讜转 讗转 讝讛 讘诇讬 拽砖专 诇讻诪讛 讗讬讘专讬诐 讬砖 讘拽讘讜爪讛.

ToCode
1 419
注讻砖讬讜 讻诇 诪讛 砖爪专讬讱 讘砖讘讬诇 诇讘讟诇 拽讬爪讜专 诪住讜讬诐 讛讜讗 诇讘讞讜专 注讘讜专讜 讗转 爪讬专讜祝 讛诪拽砖讬诐 undef - 讘诪拽专讛 砖诇 讛 Ctrl+\ 砖诇谞讜 讗拽诇讬讚 讘诪住讜祝 讗讜 讘住拽专讬驻讟:
$ stty quit undef
讜注讻砖讬讜 讗驻砖专 诇诇讞讜抓 讻诪讛 砖专讜爪讬诐 注诇 Ctrl+\ 讘诇讬 砖砖讜诐 转讜讻谞讬转 转拽讘诇 住讬讙谞诇 砖诇讗 讛转讻讜讜谞转讬 诇砖诇讜讞.

ToCode
1 419
# 住讜讚 讛转讜讻谞讬讜转 讛谞注诇诪讜转 讘驻注诐 讛专讗砖讜谞讛 砖 mutt 住讙专讛 讗转 注爪诪讛 讞砖讘转讬 砖讝讛 拽讜专讛, 砖讝讛 讘讗讙, 砖讻讻讛 讝讛 转讜讻谞讬讜转 - 注讜讘讚讜转 注讜讘讚讜转 讜讗讝 谞注诇诪讜转. 讗讘诇 讻砖讝讛 讛诪砖讬讱 诇拽专讜转 砖讜讘 讜砖讜讘 讜注诐 转讜讻谞讬讜转 谞讜住驻讜转 讻讘专 讛讬讛 讘专讜专 砖讗讬 讗驻砖专 诇转转 诇诪讞砖讘 诇讛砖转讜诇诇 讻讻讛. 诪讛 拽专讛 讗转诐 砖讜讗诇讬诐? 讘讜讗讜 谞爪讗 诇诪住注 诇讗专抓 讛住讬讙谞诇讬诐 讘注拽讘讜转 讛转讜讻谞讬讜转 讛谞注诇诪讜转. ## 讚诪讜? 讻谉 讘专讜专 讬砖 诇讻诐 诇讬谞讜拽住? 讬讜驻讬. 讬砖 诪住讜祝? 诪注讜诇讛. 讬砖 驻讬讬转讜谉? 讙讚讜诇. 注讻砖讬讜 讻转讘讜 讗转 讛住拽专讬驻讟 讛讘讗 讘拽讜讘抓 demo.py 讜讛专讬爪讜 诪讛诪住讜祝 讛讞讘讬讘 注诇讬讻诐:
while True:
    pass
讗谞讬 诪专讬抓 注诐:
$ python demo.py
讜讻诪讜讘谉 砖讛住拽专讬驻讟 诇讗 注讜砖讛 讛专讘讛 专拽 谞讻谞住 诇诇讜诇讗讛 讗讬谞住讜驻讬转. 注讻砖讬讜 诇讞爪讜 Ctrl+C (诪讞讝讬拽讬诐 讗转 讛 Ctrl 讜讗讝 诇讜讞爪讬诐 c). 谞住讙专? 谞住讙专. 讘讜讗讜 谞谞住讛 讗转 讝讛 砖讜讘 讛驻注诐 注诐 讻驻转讜专 讗讞专. 讗讜转讜 住拽专讬驻讟 讜讗讜转讛 讛专爪讛:
$ python demo.py
讜注讻砖讬讜 诇讞爪讜 注诇 Ctrl+\ (诪讞讝讬拽讬诐 讗转 讛 ctrl 讜讗讝 诇讜讞爪讬诐 注诇 Backslash). 谞住讙专? 谞住讙专. 诇诪讛 讛住拽专讬驻讟 谞住讙专 讻诇 驻注诐? 讜诪讛 讛讛讘讚诇 讘讬谉 砖谞讬 爪讬专讜驻讬 讛诪拽砖讬诐? 讘讜讗讜 谞讚讘专 专讙注 注诇 住讬讙谞诇讬诐. ## 住讬讙谞诇讬诐 讘讬讜谞讬拽住 住讬讙谞诇 讛讜讗 讚专讱 诇讛注讘讬专 讛讜讚注讛 讘讬谉 转讜讻谞讬讜转. 讛驻拽讜讚讛 kill 诪拽讘诇转 诪讝讛讛 转讛诇讬讱 讜诪讝讛讛 住讬讙谞诇 讜砖讜诇讞转 讗转 讛住讬讙谞诇 诇转讛诇讬讱, 诪注专讻转 讛讛驻注诇讛 诇驻注诪讬诐 转讞诇讬讟 诇砖诇讜讞 住讬讙谞诇讬诐 诇转讛诇讬讻讬诐 诪住讜讬诪讬诐 讜讗谞讞谞讜 讬讻讜诇讬诐 讚专讱 讛诪拽诇讚转 诇砖诇讜讞 讻诪讛 住讬讙谞诇讬诐 诇驻讬 诪讛 砖诪讜讙讚专 讗爪诇谞讜 讘诪住讜祝. 讗谞讬 讞讜讝专 诇驻讬讬转讜谉 讜讘砖讘讬诇 讛讚诪讜 讛讘讗 谞爪讟专讱 砖谞讬 讞诇讜谞讜转 诪住讜祝 (讗讜 讗讞讚 诪驻讜爪诇). 讻转讘讜 讗转 讛转讜讻谉 讛讘讗 讘拽讜讘抓 demo.py 讜讛专讬爪讜:
import os
print(os.getpid())

while True:
    pass
讘讛专爪讛 讛驻注诐 谞拽讘诇 讛讚驻住讛 砖诇 诪住驻专 诇驻谞讬 讛讻谞讬住讛 诇诇讜诇讗讛. 讛诪住驻专 谞拽专讗 诪讝讛讛 讛转讛诇讬讱 讛谞讜讻讞讬 讜讘注讝专转讜 谞讜讻诇 诇砖诇讜讞 住讬讙谞诇讬诐 诇讗讜转讜 转讛诇讬讱. 讛诪住驻专 砖讛讜讚驻住 讗爪诇讬 讛讜讗 545878 讗讝 讗谞讬 谞讻谞住 诇讞诇讜谉 讞讚砖 讜讻讜转讘:
$ kill -1 545878
讜讘讞诇讜谉 讛诪拽讜专讬 砖诇 转讜讻谞讬转 讛驻讬讬转讜谉 讛转讜讻谞讬转 转爪讗 讜转讜驻讬注 讛讛讜讚注讛:
[1]    545878 hangup     python demo.py
讗转诐 讬讻讜诇讬诐 诇谞住讜转 讗转 讝讛 注诐 诪住驻专讬诐 砖讜谞讬诐 讗讞专讬 讛 kill, 讻诇 诪住驻专 诪讬讬爪讙 住讬讙谞诇 讗讞专. 讗驻砖专 讙诐 诇专讗讜转 讗转 讻诇 讛住讬讙谞诇讬诐 讘注讝专转 讛驻拽讜讚讛 kill -l 讜讗爪诇讬 讛转讜爪讗讛 谞专讗讬转 讻讱:
$ kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
诪讛 注讜砖讬诐 注诐 讛住讬讙谞诇讬诐? 诪住转讘专 砖转讜讻谞讬讜转 讬讻讜诇讜转 诇讘讞讜专 诇讟驻诇 讘讛诐 讘讻诇 诪讬谞讬 爪讜专讜转. 讘驻讬讬转讜谉 讛诪讜讚讜诇 signal 诪讗驻砖专 诇谞讜 诇转驻讜住 住讬讙谞诇讬诐 诇驻讬 住讜讙 讛住讬讙谞诇. 注讚讻谞讜 讗转 拽讜讚 讛讚诪讜 诇讙讬专住讛 讛讘讗讛:
import os, signal

print(os.getpid())

def hahaha(sig, frame):
    print("Hahaha")

signal.signal(signal.SIGINT, hahaha)

while True:
    pass

谞专讬抓 讜谞诇讞抓 注诇 Ctrl+C 讛驻注诐 讛诪讞砖讘 讻讘专 诇讗 诪讜讜转专 讜讻讱 谞专讗讛 讛驻诇讟 讗爪诇讬:
$ python demo.py
547128
^CHahaha
^CHahaha
^CHahaha
拽讜讚 讛转讜讻谞讬转 诪讟驻诇 讘住讬讙谞诇 砖谞拽专讗 SIGINT 讘讗诪爪注讜转 讛讚驻住转 讛讟拽住讟 hahaha. 住讬讙谞诇 讝讛 讛讜讗 讘讚讬讜拽 诪讛 砖诪转拽讘诇 讻砖讗谞讞谞讜 诇讜讞爪讬诐 注诇 Ctrl+C 讜诇讻谉 讛转讜讻谞讬转 诇讗 讬爪讗讛 讻砖诇讞爪谞讜 注诇 爪讬专讜祝 诪拽砖讬诐 讝讛. 注讚讬讬谉 讗谞讞谞讜 讬讻讜诇讬诐 诇住讬讬诐 讗转 讛转讜讻谞讬转 注诐 Ctrl+\ 砖砖讜诇讞 讗转 讛住讬讙谞诇 SIGQUIT. 讗谞讬 讗砖讗讬专 诇讻诐 讗转 讛讻讬祝 诇讟驻诇 讙诐 讘 SIGQUIT 讜讗讝 诇谞住讜转 诇诪爪讜讗 讗讬讱 诇爪讗转 诪讛转讜讻谞讬转. ## 讗讝 诪讛 拽专讛 诇转讜讻谞讬讜转 讛诪住讜祝 砖诇讬? 讘注讘讜讚讛 注诐 讗讬诪拽住 讛爪讬专讜祝 Ctrl+\ 讛讜讗 讝讛 砖诪讞诇讬祝 砖驻讛 讜讘砖诇讘 诪住讜讬诐 讛转专讙诇转讬 诇诇讞讜抓 注诇 爪讬专讜祝 诪拽砖讬诐 讝讛 讻讚讬 (诇谞住讜转) 诇讛讞诇讬祝 砖驻讛 讙诐 诪讞讜抓 诇讗讬诪拽住. 讛转讜爪讗讛 讻诪讜 砖讗谞讬 诪拽讜讜讛 砖讻讘专 讛讘谞转诐 讛讬讗 砖诇讬讞转 住讬讙谞诇 SIGQUIT 诇讬讬砖讜诐 砖讘诪住讜祝 诪讛 砖讙讜专诐 诇住讙讬专转 讛转讜讻谞讬转. 讛驻讬转专讜谉 讘诪爪讘讬诐 讻讗诇讛 讛讜讗 诪诪砖 驻砖讜讟 讜诇讗 讚讜专砖 诇讛转专讙诇 诇爪讬专讜驻讬 诪拽砖讬诐 讞讚砖讬诐. 讛驻拽讜讚讛 stty 砖诇 讛诪住讜祝 拽讜讘注转 讗讬讝讛 讻驻转讜专 讬砖诇讞 讗转 讛住讬讙谞诇讬诐 砖诇 讛砖讜谞讬诐 砖诇 讛诪住讜祝 (讜注讜讚 拽讬爪讜专讬 诪拽砖讬诐 诪注谞讬讬谞讬诐). 讗转诐 讬讻讜诇讬诐 诇专讗讜转 讗转 讻诇 讛拽讬爪讜专讬诐 砖诪讜讙讚专讬诐 讗爪诇讻诐 注诐:
$ stty -a
speed 38400 baud; rows 23; columns 94; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany
-imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
-flusho -extproc

ToCode
1 419
# 讬专讞 讚讘砖 讙诐 注诐 讟讻谞讜诇讜讙讬讛 讬砖 讬专讞 讚讘砖 讜讗转诐 讬讻讜诇讬诐 诇诪爪讜讗 讗讜转讜 讘讛专讘讛 诪讗讜讚 Tutorials 讘专砖转: 讘谉 讗讚诐 诪专讗讛 诇讱 讗讬讱 诇讻转讜讘 诪注专讻转 讘诇讜讙 讘 15 讚拽讜转, 讗讘诇 诇讗 讬住驻专 诇讱 诪讬诇讛 注诇 诪讛 讛讜诇讱 诇拽专讜转 讞爪讬 砖谞讛 诇转讜讱 讛驻专讜讬拽讟. 讛转拽讜驻讛 讛讝讗转 砖诇 Green Field 讛讬讗 诇讗 讘讛讻专讞 专注讛, 讛讬讗 谞讜转谞转 诇谞讜 讛讝讚诪谞讜转 诇砖讞拽 注诐 讛讟讻谞讜诇讜讙讬讛 讘爪讜专讛 拽诇讛 讜诇诇诪讜讚 转讜讱 讻讚讬 转谞讜注讛. 诪诪讬诇讗 专讜讘 讛诪讜爪专讬诐 诇讗 讬注诇讜 诇驻专讜讚拽砖谉 砖诇 讞谞讜转 讙讚讜诇讛 讘 Black Friday. 讻谉 讻讚讗讬 诇讝讻讜专: 1. 讻诇 注讜讚 讻诇 驻注诐 砖讗转诐 谞转拽注讬诐 讬砖 转砖讜讘讛 诪讛讬专讛 讘 Stack Overflow - 讗转诐 注讚讬讬谉 讘讬专讞 讛讚讘砖 2. 讻诇 注讜讚 讛诪注专讻转 砖诇讻诐 注讜讘讚转 讘诇讬 砖砖讘专转诐 讗转 讛专讗砖 注诇 砖讬驻讜专讬 讘讬爪讜注讬诐 - 讗转诐 注讚讬讬谉 讘讬专讞 讛讚讘砖 3. 讻诇 注讜讚 讗转诐 讬讻讜诇讬诐 诇诪爪讜讗 讘拽诇讜转 诪讜讚讜诇讬诐 砖讬驻转专讜 诇讻诐 讻诇 讘注讬讛 - 讗转诐 注讚讬讬谉 讘讬专讞 讛讚讘砖 讬砖 讟讻谞讜诇讜讙讬讜转 砖讬专讞 讛讚讘砖 砖诇讛谉 谞讙诪专 讗讞专讬 讬讜诪讬讬诐 讜注诐 讗讞专讜转 讗转讛 诪拽讘诇 讞爪讬 砖谞讛 注诇 讞讜祝 讘拽讗专讬讘讬讬诐. 讗讘诇 砖讜讜讛 诇讝讻讜专 砖讗讜专讱 讬专讞 讛讚讘砖 讛讜讗 诇讗 砖讬拽讜诇 讟讜讘 讘讘讞讬专转 讛讟讻谞讜诇讜讙讬讛 诇诪讜爪专 讛讘讗 砖诇讱.

ToCode
1 419
# 诇诪讛 split 诪讞讝讬专 讗诇诪谞讟讬诐 专讬拽讬诐 讻砖讬砖 讻驻讬诇讜讬讜转? 讛驻讜谞拽爪讬讛 split 拽讬讬诪转 讘讛专讘讛 砖驻讜转 转讻谞讜转 讜讘专讜讘谉 讛讬讞住 诇讻驻讬诇讜讬讜转 讝讛讛. 讛驻讜谞拽爪讬讛 诪驻爪诇转 诪讞专讜讝转 诇驻讬 转讜 讛驻专讚讛 砖转注讘讬专讜 诇讛, 讜诪讞讝讬专讛 专砖讬诪讛 砖诇 讻诇 "讛讞诇拽讬诐" 砖诇 讛诪讞专讜讝转. 讛谞讛 讚讜讙诪转 驻讬讬转讜谉 诇讛诪讞砖讛:
>>> 'one two three'.split(' ')
['one', 'two', 'three']
诪注谞讬讬谉 诇砖讬诐 诇讘 诪讛 拽讜专讛 讻砖转讜 讛讛驻专讚讛 诪讜驻讬注 讬讜转专 诪驻注诐 讗讞转 讘专爪祝:
>>> 'one   two   three'.split(' ')
['one', '', '', 'two', '', '', 'three']
讘专讙注 砖砖诪转讬 3 专讜讜讞讬诐 讘讬谉 讛诪讬诇讬诐 split 讝讻专讛 诇砖拽祝 诇讬 讗转 讝讛 讘爪讜专讛 诪注谞讬讬谞转: 讛讬讗 讛讜住讬驻讛 讘专砖讬诪转 讛转讜爪讗讜转 讗诇诪谞讟讬诐 专讬拽讬诐 讘诪住驻专 砖诇 讗讞讚 驻讞讜转 诪住驻专 讛转讜讜讬诐 讛讻驻讜诇讬诐. 诪讛 拽讜专讛 驻讛? 诇诪讛 讻砖转讜 讛讛驻专讚讛 诪讜驻讬注 讬讜转专 诪驻注诐 讗讞转 讛讜讗 爪专讬讱 诇讛讜住讬祝 讗诇诪谞讟讬诐 专讬拽讬诐 诇专砖讬诪讛? 讜诇诪讛 讻砖诪注讘讬专讬诐 None 讘转讜专 转讜 讛驻专讚讛 讻诇 讝讛 诇讗 拽讜专讛?
>>> 'one    two   three'.split(None)
['one', 'two', 'three']
>>> 'one    two   three'.split()
['one', 'two', 'three']
讛讛转谞讛讙讜转 诪转讘讛专转 讻砖讗谞讞谞讜 谞讝讻专讬诐 讘驻讜谞拽爪讬讛 join, 砖讛讬讗 讛讛讬驻讱 砖诇 split. 驻讜谞拽爪讬讬转 join 砖诇 诪讞专讜讝转 诪拽讘诇转 专砖讬诪讛 讜诪讚讘讬拽讛 讗讜转讛 讞讝专讛 转讜讱 砖讬诪讜砖 讘诪讞专讜讝转 讛诪拽讜专讬转 讻转讜 讛驻专讚讛:
>>> '-'.join(['yo', 'dog'])
'yo-dog'
讘讝讻讜转 讛转讗讬诐 讛专讬拽讬诐 讘专砖讬诪讛 砖 split 诪讞讝讬专讛, 讗谞讞谞讜 讬讻讜诇讬诐 诇讛讬讜转 专讙讜注讬诐 讻砖谞驻注讬诇 join 诪讞讚砖 注诇 讗讜转讛 专砖讬诪讛 砖讞讝专讛 诪 split 讜诇讚注转 砖谞拽讘诇 讘讚讬讜拽 讗转 讛诪讞专讜讝转 讛诪拽讜专讬转:
>>> text = 'split    and    join'
>>> ' '.join(text.split(' ')) == text
True