• Difference: MISTAKE vs FAULT vs ERROR vs BLUNDER vs DEFECT?

    Difference: MISTAKE vs FAULT vs ERROR vs BLUNDER vs DEFECT?

    MISTAKE vs FAULT vs ERROR vs BLUNDER vs DEFECT

    PHÂN BIỆT ERROR, MISTAKE, FAULT, BLUNDER và DEFECT.
    MISTAKE, BLUNDER, FAULT and ERROR mean something done incorrectly or improperly. Các từ này đều là danh từ và có nghĩa là “lỗi, sai lầm”. Tuy nhiên giữa chúng có sự khác biệt.

    Difference: MISTAKE vs FAULT vs ERROR vs BLUNDER vs DEFECT? 11. Cách sử dụng FAULT

    Fault: dùng khi nói về trách nhiệm của 1 ai đó khi làm sai hoặc khi nói về những khuyết điểm thuộc về tính cách của 1 người nào đó. FAULT implies that you are talking about culpability or responsibility.

    • It will be your own fault if you don’t pass the exam. (Nếu bạn không qua kỳ thi này, đó là lỗi của bạn).
    • It was not his fault that his team lost the match.
    • It was my fault that there was an error in the computer program.
    • It’s not my fault he’s late. Don’t blame me. (Cậu ta muộn không phải do lỗi của mình. Đừng khiển trách mình).
    • She has her faults, but, on the whole, she’s a nice person. (Cô ta có những điểm thiếu sót, nhưng nhìn chung cô ấy là người tốt).
    • A mechanical fault caused the train to come off the rails. (Sự cố về máy móc đã làm cho chuyến tàu trật khỏi đường ray).

    2. Cách sử dụng từ MISTAKE

    Mistake: nói về 1 hành động hay 1 ý nghĩ sai lầm và đem lại kết quả không mong muốn. Đặc biệt là có những kết từ với “mistake” như: make a mistake/make mistakes (phạm phải sai lầm), by mistake (do nhầm lẫn). MISTAKE is the most general term used of everyday situation.

    • Waiter! I think you’ve made a mistake over the bill.
    • It was a big mistake to leave your umbrella at home.
    • Coming to this place was a big mistake. We only wasted our time.
    • It was a mistake to go there on Sunday.
    • I committed a mistake of leaving our bedroom window open.

    3. Cách sử dụng từ ERROR

    Error: trang trọng hơn “mistake”, và đặc biệt được dùng khi lỗi đó gây ra vấn đề hoặc ảnh hưởng đến 1 thứ khác. ERROR is more suitable for more formal contexts. Some may consider ‘error’ to be much more severe than ‘mistake’.

    • Errormistake là những từ đồng nghĩa, cùng để chỉ một hành động sai lầm do sự đánh giá kém, hoặc thiếu hiểu biết, hoặc bất cẩn.
    • Error ám chỉ một sai trái về mặt đạo đức, còn mistake ám chỉ sự đánh giá sai.
    • Error là một từ có tính cách trang trọng hơn.

    Error thường được dùng trong các ngữ cảnh trang trọng hoặc liên quan đến kỹ thuật. Ví dụ, chúng ta sẽ dùng system error hơn là system mistake. Trong khi đó mistake được dùng nhiều hơn trong giao tiếp tiếng Anh hàng ngày.

    Ví dụ về cách dùng từ ERROR:

    • The grammatical errors in this Book could not be ignored.
    • The essay contains a number of typing errors.
    • The computer produced an error when the data was incorrect.
    • His speech contained several factual errors.
    • I made an error in my calculations.
    • The telephone bill was too far high due to a computer error. (Hóa đơn điện thoại cao hơn hẳn là do lỗi của máy tính.)
    • The computer gave me a 404 error.
    • Your work is full of spelling mistakes /errors. Bài làm của bạn đầy những lỗi chính tả. (có tính cách trang trọng hơn thì dùng errors).

    4. Khi nào dùng DEFECT?

    Defect: nói về những sai sót, hỏng hóc, khiếm khuyết trong quá trình 1 thứ gì đó được tạo ra.

    • There are defects in our educational system. (Hệ thống giáo dục của chúng ta có những khuyết điểm.)
    • There are serious defects in our management system. (Hệ thống quản lý của chúng ta có những khuyết điểm nghiêm trọng).

    5. Cách sử dụng từ BLUNDER

    BLUNDER is a careless mistake often unnecessarily or resulting from misjudgment.

    • I made a terrible blunder in introducing that beautiful girl to my husband.
    • He said that the tax was a major political blunder.
    • I made a blunder by getting his name wrong.

    6. Cách dùng từ WRONG

    WRONG means that something is not correct. It is an adjective. “Wrong” được dùng khi một người hoặc một vật nào đó không đúng, không chính xác, hiểu sai…

    Ví dụ về cách sử dụng từ WROENG

    • You are wrong. (Cậu nhầm rồi)
    • Your answer is wrong. (Câu trả lời của cậu sai rồi)
    • Some of your answers were correct, and some were wrong .
    • Something is wrong with my cellphone .
    • Don’t cry, honey. Tell me what’s wrong.
    • It is wrong to lie.
    • You’re wrong: he’s not Superman at all.

    Một số cụm từ, tục ngữ đi cùng với “wrong”:

    • Two wrongs don’t make a right (đừng viện cớ bào chữa)
    • Get the wrong end of the stick (hiểu lầm hoàn toàn điều người khác nói)
    • To know right from from wrong (Biết phân biệt phải trái)

    mistake vs fault

  • List Danh sách diễn đàn đi backlink dofollow 2022

    List Danh sách diễn đàn đi backlink dofollow 2022

    List Danh sách diễn đàn đi backlink dofollow 2022

    Để các bài viết được Google đánh giá cao, ngoài việc viết bài chuẩn SEO thì cũng cần đi thêm backlink. O2 Education xin giới thiệu danh sách diễn đàn đi backlink mới nhất năm 2020. Đa số các diễn đàn đều cho đăng link dofollow. Các diễn đàn đều là tiếng Việt và có chủ đề đa dạng, từ tổng hợp cho tới giáo dục đào tạo, lập trình…

    🔥LIST DIỄN ĐÀN SEO 2021

    1. Danh sách diễn đàn đi backlink

    • https://techrum.vn
    • https://123nhanh.com
    • https://24hlamdep.net
    • https://agriviet.com
    • https://aoevietnam.org
    • https://bachhoadep.com/diendan/
    • https://bang.vn/
    • https://biquyetlamsach.com/
    • https://bmktd.utc.edu.vn/forum
    • https://chophien.com/
    • https://dhd.vn/forums/
    • https://diadiemkhuyenmai.com/dien-dan/
    • https://dienanh.net/
    • https://diendan.hocmai.vn/
    • https://diendan.hpu.edu.vn/
    • https://diendan.phununet.com/
    • https://diendan.raovat.vn/
    • https://diendan.vtcgame.vn/
    • https://diendan.zing.vn/
    • https://diendanlamdep.edu.vn/
    • https://diendansacdep.net/
    • https://diendanthammy.net/
    • https://diendantoanhoc.net/
    • https://duyendangaodai.net/
    • https://emdep.vn/diendan/
    • https://enbac.com/
    • https://forum.hcmiu.edu.vn/
    • https://forum.mwork.vn/forum.php
    • https://forum.smas.edu.vn/
    • https://forum.tinhdaudua.com.vn/
    • https://forum.trochoithoitrang.net/
    • https://forum.tuvantamly.vn/
    • https://forum.ueh.edu.vn/
    • https://forum.uit.edu.vn/
    • https://forum.vietstock.vn/
    • https://forumlamdep.net/
    • https://forumsuckhoe.com/
    • https://game8.vn/
    • https://gamevn.com/
    • https://giadinhnhohanhphucto.com/
    • https://goclamdep.vn/
    • https://gsm.vn/forums
    • https://hoiphunu.com/forums/
    • https://ipp.topica.edu.vn/
    • https://itseovn.com/
    • https://khoahoclamdep.com/forums/
    • https://lamdep.forumotion.net/
    • https://memmai.com/forum/index.php
    • https://muaban.net/
    • https://muare.vn/
    • https://muare.vn/forums
    • https://mwork.vn/
    • https://open.ptit.edu.vn/
    • https://pcworld.com.vn/
    • https://phunu8.com/
    • https://phunutamsu.com/forum.php
    • https://phunuviet.com.vn
    • https://phunuvn.net/
    • https://raovat.chonmua.com/
    • https://raovat.com/
    • https://raovat.net/
    • https://raovat.vn/
    • https://raovatnhanh.edu.vn/
    • https://rongbay.com/
    • https://ssc.vn/
    • https://suckhoe365.net/
    • https://suckhoesacdep.net/forum/
    • https://suckhoethammy.vn/
    • https://suckhoetoday.com/
    • https://thienduongspa.com.vn/forum/forum.php
    • https://toiyeuphunu.net/
    • https://truongton.net/
    • https://ttvnol.com/
    • https://tudomuaban.com/
    • https://uhm.vn/
    • https://uhm.vn/forum/
    • https://vatgia.com
    • https://vn-zoom.com/
    • https://vozforums.com/
    • https://www.5giay.vn
    • https://www.chuyentranglamdep.com/
    • https://www.ddld.vn/
    • https://www.diendanmevabe.com/forum.php
    • https://www.hce.edu.vn/
    • https://www.suasoan.com/
    • https://www.tamsuphaidep.com/forum/forum.php
    • https://www.trangtinlamdep.com/forum.php
    • https://www.vietvbb.vn/
    • https://www.vietvbb.vn/
    • https://www.vnphoto.net/
    • https://www.webketoan.vn/
    • https://www.webtretho.com/
    • https://www.webtretho.com/forum/
    • https://www.xosothantai.com/
    • https://www.ykhoaviet.com
    • https://www.yly.vn/
    • https://www.lamchame.com/forum

    2. Danh sách diễn đàn đi backlink profile

    • https://www.slideshare.net/
    • https://www.edocr.com/
    • https://vi.scribd.com/
    • https://www.slideserve.com/
    • https://issuu.com/home/publisher
    • http://www.yudu.com/
    • http://forum.linksearching.com/
    • http://www.webmasterforums.com/
    • http://www.freehostforum.com/
    • https://forums.digitalpoint.com/
    • https://www.sitepoint.com/community/
    • http://www.v7n.com/forums/
    • http://htmlforums.com/
    • https://www.webmasterserve.com/webmaster-forums/
    • https://forum.textpattern.io/
    • http://www.delphiforums.com/
    • http://www.talkgold.com/forum/
    • http://www.warriorforum.com/
    • http://simplemachines.org/community/index.php
    • http://iq69.com/
    • https://www.acorndomains.co.uk/
    • https://www.cnet.com/forums/
    • https://forums.onlinebookclub.org/
    • https://ubuntuforums.org/
    • https://forums.mysql.com/
    • https://irishwebmasterforum.com/
    • http://paymentprocessing.cc/
    • http://forums.comicbookresources.com/
    • http://forums.seochat.com/
    • https://www.dnforum.com/
    • http://affiliateseeking.com/forums/
    • http://siteownersforums.com/index.php
    • http://www.seorefugee.com/forums/forum.php
    • http://www.talkingcity.com/
    • https://forum.joomla.org/
    • https://forums.gentoo.org/
    • http://geekvillage.com/forums/
    • http://www.webmastershelp.com/
    • https://www.smallbusinessforums.org/
    • http://forum.hittail.com/
    • http://webcosmoforums.com/
    • http://www.v7n.com/forums/index.php
    • https://www.webmasterworld.com/
    • http://www.wjunction.com/
    • https://www.adsfreeforum.com/
    • https://www.dropbox.com/
    • http://mgl.scripps.edu/forum/
    • http://ivf.ca/forums/
    • http://www.pets.ca/forum/
    • http://mygicasupport.com/
    • https://forums.iis.net/
    • https://www.techenclave.com/community/
    • http://www.erodov.com/forums/
    • http://geek.digit.in/community/
    • http://etalkindia.com/talk/forum.php
    • http://www.india-forums.com/
    • https://auth.lonelyplanet.com/
    • http://forum.notebookreview.com/
    • http://siteownersforums.com/
    • https://forum.wordreference.com/
    • https://forums.adobe.com/people/tuanq39993263
    • http://www.fodors.com/community/
    • https://forums.anandtech.com/
    • https://www.technibble.com/forums/
    • http://forum.x86pad.com/
    • http://www.webcosmoforums.com/
    • https://www.laptop-forums.com/
    • https://computerhelpforums.com/
    • http://steamcommunity.com/discussions/
    • http://www.nairaland.com/
    • https://forums.pcpitstop.com/
    • http://forums.majorgeeks.com/index.php
    • https://forums.asp.net/
    • https://css-tricks.com/forums/
    • https://rog.asus.com/forum/
    • http://www.webhostingtalk.com/
    • http://forum.codeigniter.com/
    • http://discuss.tigweb.org/
    • http://www.businessadviceforum.com/
    • https://www.blackhatworld.com/
    • https://bitcointalk.org/
    • http://forum.chinabuye.com/forum.php
    • https://forums.mydigitallife.net/
    • https://windowsforum.com/
    • https://forums.lenovo.com/t5/English-Community/ct-p/Community-EN
    • https://www.cometforums.com/
    • http://www.mtforum.in/
    • http://www.wrensoft.com/forum/
    • http://forum.ventrilo.com/
    • http://flashpanoramas.com/forum/
    • https://forums.cpanel.net/
    • https://www.redtape.ru/forum/
    • http://www.badcaps.net/forum/
    • http://studychacha.com/discuss/
    • http://www.alzforum.org/
    • https://community.skype.com/?category.id=English&profile.language=en
    • http://www.gohighvoltage.com/forum/
    • https://discourse.omnigroup.com/
    • http://www.greentram.com/forums/
    • http://www.city-data.com/forum/
    • http://www.rage3d.com/board/
    • https://community.virginmobile.com.au/
    • https://community.sony.com/
    • https://forum.thegamecreators.com/
    • https://discussions.apple.com/welcome
    • https://forums.roku.com/

     3. Danh sách website rao vặt

    • https://raovat.vnexpress.net/
    • https://muaban.net/
    • https://nhattao.com/
    • https://muare.vn/
    • https://www.phomuaban.vn/
    • http://raovat.vn/
    • https://chocudan.com/
    • https://raovat.net/
    • https://tudomuaban.com/
    • https://www.raovatmienphi.org/
    • https://www.chotot.com/
    • http://bamien.com.vn/
    • https://123nhadatviet.com/
    • https://www.1doi1.com/
    • https://vatgia.com/home/
    • http://kenhdangtin.com/
    • https://raovat321.com/
    • https://vnraovat.net/
    • https://raovat49.com/
    • http://timdat.net/
    • https://diendanraovataz.net/
    • http://www.raovat.info/
    • https://avraovat.com/
    • http://timmuanhadat.com.vn/
    • http://www.vietnamdaily.com/
    • https://hopcho.vn/
    • https://airaovat.com/
    • https://chothai.com.vn/
    • http://muabanraovat.com/

     

  • Giáo án dạy thêm môn hóa lớp 11 học kì 1

    Giáo án dạy thêm môn hóa lớp 11 học kì 1

    Giáo án dạy thêm môn hóa lớp 11 học kì 1

    Giao an day them mon hoa lop 11

    Ngày soạn:

    Tuần: 1                                                     SỰ ĐIỆN LI

    • Những kiến thức học sinh đã biết có liên quan trực tiếp đến bài học:

    – Khái niệm chất điện li, phân loại chất điện li, định luật bảo toàn khối lượng

    1. MỤC TIÊU BÀI HỌC
    2. Về kiến thức.

    Khái niệm về sự điện li, chất điện li, chất điện li mạnh, chất điện li yếu, cân bằng điện li.

    1. Về kĩ năng:

    – Phân biệt được chất điện li, chất không điện li, chất điện li mạnh, chất điện li yếu.

    – Viết được phương trình điện li của chất điện li mạnh, chất điện li yếu.

    Tính được nồng độ mol các ion trong dung dịch điện li

    1. Về thái độ

    Rèn luyện tính cẩn thận, học tập nghiêm túc. Hứng thú bộ môn.

        4.Về năng lực

    – Năng lực tư duy và sử dụng ngôn ngữ hóa học

    1. CHUẨN BỊ
    2. Giáo viên: Giáo án và hệ thống câu hỏi, bài tập.
    3. Học sinh: Ôn lại toàn bộ các kiến thức và chuẩn bị các điều kiện học tập cần thiết

    III. NỘI DUNG

    1. Lý thuyết
    2. Sự điện li là quá trình phân li các chất trong nước hoặc khi nóng chảy thành ion.
    3. Dung dịch (dd) dẫn điện được là do trong dung dịch của chúng có các hạt mang điện tích chuyển động tự do được gọi là các ion.
    4. Chất điện li là những chất khi tan trong nước phân li ra ion.

    Axit, bazơ, muối đều là những chất điện li.

    Chất điện li mạnh là chất khi tan trong nước, các phân tử hòa tan phân li hoàn toàn.

    Các axit mạnh, bazơ mạnh và hầu hết các muối là chất điện li mạnh.

    Chất điện li yếu là chất khi tan trong nước, số phân tử hòa tan phân li một phần, phần còn lại vẫn tồn tại dưới dạng phân tử trong dung dịch. Các axit yếu, bazơ yếu và một số muối là chất điện li yếu.

    Chất không điện li là những chất khi tan trong nước không phân li ra ion.

    Ví dụ: Dung dịch đường, dung dịch rượu, …

    1. Cân bằng điện li: Sự phân li của các chất điện li yếu là quá trình thuận nghịch. Khi tốc độ phân li của phân tử chất điện li (phản ứng thuận) bằng tốc độ kết hợp giữa các ion thành phân tử chất điện li (phản ứng nghịch) thì cân bằng của quá trình điện li được thiết lập.
    2. Bài tậpvận dụng

    Bài 1. Cho các chất sau: AgNO3, HClO4, KOH, CH3COOH, H2SO4, Fe(OH)3, HgCl2, đường sacarozơ, Ba(OH)2, H3PO4, HClO, HNO3, Cu(OH)2, đường glucozơ, HF, H2SO3, H2S, HBr, Al2(SO4)3, C6H6, CaO. Hãy chỉ ra:

    1. Chất không điện li.
    2. Chất điện li yếu.
    3. Viết phương trình điện li của chất điện li.

    HD: HS xem lại định nghĩa về chất điện li, cách viết pt điện li

    Bài 2. Cho các dung dịch sau (có cùng nồng độ mol/lít): NaOH, HF, BaCl2, Al2(SO4)3, ancol etylic. Hãy sắp xếp chúng theo thứ tự tăng dần độ dẫn điện.

    HD:  HS xem lại chất điện li mạnh, chất điện li yếu, chất không điện li

    Bài 3. Khi hòa tan một số muối vào nước ta thu được dung dịch X có các ion sau: Na+, Mg2+, Cl, . Hỏi cần phải hòa tan những muối nào vào nước để thu được dung dịch có 4 ion trên?

    HD: HS xem lại lý thuyết

    Bài 4. Hòa tan 7,1 gam Na2SO4 ; 7,45 gam KCl ; 2,925 gam NaCl vào nước để được 1 lít dung dịch A.

    1. Tính nồng độ mol/lít của mỗi ion trong dung dịch A.
    2. Cần dùng bao nhiêu mol NaCl và bao nhiêu mol K2SO4 để pha thành 400 ml dung dịch muối có nồng độ ion như trong dung dịch A.
    3. Có thể dùng 2 muối KCl và Na2SO4 để pha thành 400 ml dung dịch muối có nồng độ ion như dung dịch A được không?

    HD: HS viết phương trình điện li, tính toán theo phương trình.

    1. RÚT KINH NGHIỆM

    …………………………………………………………………………………………………………………………………..

    …………………………………………………………………………………………………………………………………..

    …………………………………………………………………………………………………………………………………..

    Ngày

    Tổ trưởng kí duyệt

     

     

     

    Nguyễn Thị Hương

     

     

     

    Ngày soạn:

    Tuần: 2                                               SỰ ĐIỆN LI

    • Những kiến thức học sinh đã biết có liên quan trực tiếp đến bài học:

    – Khái niệm chất điện li, phân loại chất điện li, định luật bảo toàn khối lượng

    1. MỤC TIÊU BÀI HỌC
    2. Về kiến thức. HS nhắc lại được các kiến thức về

    – Định nghĩa : axit, bazơ, hiđroxit lưỡng tính và muối theo thuyết A-rê-ni-ut.

    – Axit một nấc, axit nhiều nấc, muối trung hoà, muối axit.

    1. Về kĩ năng:

    – Phân tích một số thí dụ về axit, bazơ, muối cụ thể, rút ra định nghĩa.

    – Nhận biết được một chất cụ thể là axit, bazơ, muối, hiđroxit lưỡng tính, muối trung hoà, muối axit theo định nghĩa.

    – Viết được phương trình điện li của các axit, bazơ, muối, hiđroxit lưỡng tính cụ thể.

    – Tính nồng độ mol ion trong dung dịch chất điện li mạnh.

    1. Về thái độ

    Rèn luyện tính cẩn thận, học tập nghiêm túc. Hứng thú bộ môn.

        4.Về năng lực

    – Năng lực tư duy, sử dụng ngôn ngữ hóa học và năng lực tính toán.

    1. CHUẨN BỊ
    2. Giáo viên: Giáo án và hệ thống câu hỏi, bài tập.
    3. Học sinh: Ôn lại toàn bộ các kiến thức và chuẩn bị các điều kiện học tập cần thiết

    III. NỘI DUNG

    Phần 2: Bài tập áp dụng

    DẠNG 1: VIẾT PHƯƠNG TRÌNH ĐIỆN LI

    Bài 1: Cho các chất: KCl, KClO3, BaSO4, Cu(OH)2, H2O, Glixerol, CaCO3, glucozơ. Chất điện li mạnh, chất nào điện li yếu, chất nào không điện li? Viết phương trình điện li.

    Bài 2: Viết phương trình điện li của những chất diện li mạnh sau: HClO, KClO3, (NH4)2SO4, NaHCO3, Na3PO4

    Bài 3:Viết pt điện ly của các dung dịch sau:

    HNO3, H2SO4, HClO4, NaOH, Ba(OH)2, H2S, H2SO3, H3PO4; K2CO3, NaClO, NaHS, Na2HPO4, NaH2PO4, Al(OH)3, Zn(OH)2 , [Ag(NH3)2]Cl, NaHCO3, CH3COOH, (HCOO)2Ca, Cu(OH)2, (NH4)2SO4.

    DẠNG 2: TÍNH NỒNG ĐỘ ION TRONG DUNG DỊCH

    Bài 1: Tính nồng độ mol/lit của các ion K+, SO42- có trong 2 lit dung dịch chứa 17,4g K2SO4 tan trong nước.

    Hưóng dẫn: Nồng độ của K2SO4

    CM (K2SO4)   = 17,4/174.2 = 0,05M

    Phương trình điện li:       K2SO4  —->        2K+     +    SO42-

    0,05               2.0,05             0,05

    Vậy [K+] = 0,1M; [SO42- ] = 0,05M

    Bài 2: Tính nồng độ mol/l của các ion có trong dung dịch HNO3 10% (Biết D = 1,054 g/ml).

    Hướng dẫn: CMHNO3 =  =  = 1,763M

    Phương trình điện li: HNO3 —–>     H+   +     NO3

    1,673            1,673       1,673

    Vậy [H+] = [NO3] = 1,673M

    Bài 3: Tính thể tích dung dịch HCl 0,5M có chứa số mol H+ bằng số mol H+ có trong 0,3 lít dung dịch HNO3 0,2M.

    Đáp án VHCl = 0,12 lit

    Bài 4: Tính nồng độ mol/l của các ion trong các trường hợp sau:

    1. Dung dịch CH3COOH 0,01M, độ điện li α = 4,25%
    2. Dung dịch CH3COOH 0,1M, độ điện li α = 1,34%

    Hướng dẫn:

    1. PTĐL: CH3COOH       CH3COO  + H+

    Ban đầu          0,01                          0               0

    Điện li            0,01.α                      0,01.α          0,01.α

    Cân bằng       0,01 – 0,01.α             0,01.α         0,01.α

    Vậy [H+]   =    0,01.α          = 0,01. 4,25/100 = 0,000425 M

    1. [H+] = 0,00134 M

    Bài 5: Trộn lẫn 100ml dung dịch AlCl3 1M với 200ml dung dịch BaCl2 2M và 300ml dung dịch KNO3 0,5M.

    Tính nồng độ mol/l các ion có trong dung dịch thu được sau khi trộn.

    Hướng dẫn:

    Số mol chất tan trong từng dung dịch:

    nAlCl3 = 100.1/1000 = 0,1 mol

    nBaCl2 = 200.2/1000 = 0,4 mol

    nKNO3 = 300. 0,5/1000 = 0,15 mol

    Viết các phương trình điện li, tính số mol các ion tương ứng

    V = 100 + 200 + 3000 = 600 ml = 0,6 lit

    [Al3+] = 0,1/0,6 = 0,167 mol/l

    [Ba2+] = 0,4/0,6 = 0,667 mol/l

    [K+] = [NO3] = 0,15/0,6 = 0,25 mol/l

    [Cl] =  = 1,83 mol/l

    Luyện tập:

    1. Hoà tan 5,85 gam NaCl vào nước để được 200 ml dung dịch X. Hãy tính nồng độ mol các ion trong dd X
    2. Hoà tan 8,5 gam NaNO3 và 17 gam Cu(NO3)2 vào nước để được 200 ml dung dịch X. Hãy tính nồng độ mol/lit các ion có trong dung dịch
    3. Hãy tính nồng độ mol các ion trong hỗn hợp dung dịch HCl 0.1M và H2SO4 0.05 M
    4. Hãy tính nồng độ mol các ion trong hỗn hợp dung dịch NaOH 0.1M và Ba(OH)2 0.025 M
    5. Trộn 100ml dung dịch NaOH 1M với 300 ml dugn dịch Ba(OH)2 0.025 M thu được dd X. Hãy tính nồng độ mol các ion trong dd X
    6. Trộn 100ml dung dịch HCl 1M với 100 ml dugn dịch H2SO4 0.05 M thu được dd X. Hãy tính nồng độ mol các ion trong dd X
    7. Trộn 100ml dung dịch HCl 1M với 100 ml dugn dịch KOH 0.05 M thu được dd X. Hãy tính nồng độ mol các ion trong dd X
    8. RÚT KINH NGHIỆM

    …………………………………………………………………………………………………………………………………..

    …………………………………………………………………………………………………………………………………..

    …………………………………………………………………………………………………………………………………..

    Ngày

    Tổ trưởng kí duyệt

     

     

     

    Nguyễn Thị Hương

     

    Ngày soạn:

    Tuần: 3                                                 SỰ ĐIỆN LI

    • Những kiến thức học sinh đã biết có liên quan trực tiếp đến bài học:

    – Khái niệm chất điện li, phân loại chất điện li, định luật bảo toàn khối lượng

    1. MỤC TIÊU BÀI HỌC
    2. Về kiến thức. HS nhắc lại được các kiến thức về

    – Tích số ion  của nước,  ý nghĩa  tích số ion của nước.

    – Khái niệm về pH, định nghĩa môi trường axit, môi trường trung tính và môi trường kiềm.

    – Chất chỉ thị axit – bazơ : quỳ tím, phenolphtalein và giấy chỉ thị vạn năng

    1. Về kĩ năng:

    – Tính pH của dung dịch axit mạnh, bazơ mạnh.

    – Xác định được môi trường của dung dịch bằng cách sử dụng giấy chỉ thị vạn năng, giấy quỳ tím hoặc dung dịch phenolphtalein.

    1. Về thái độ

    Rèn luyện tính cẩn thận, học tập nghiêm túc. Hứng thú bộ môn.

        4.Về năng lực

    – Năng lực tư duy, sử dụng ngôn ngữ hóa học và năng lực tính toán.

    1. CHUẨN BỊ
    2. Giáo viên: Giáo án và hệ thống câu hỏi, bài tập.
    3. Học sinh: Ôn lại toàn bộ các kiến thức và chuẩn bị các điều kiện học tập cần thiết

    III. NỘI DUNG

    Phần 1: Kiến thức cần nhớ

    Câu 1: Khái niệm axit – bazơ – muối, hidroxit lưỡng tính theo thuyết Areniut? Cho VD?

    Trả lời:

    Theo Areniut:

    • Axit là những chất khi tan trong nước phân li ra cation H+

    VD: HCl, HNO3, H2SO4, HClO, CH­3COOH …(HS tự viết pt điện li của các ví dụ)

    • Bazơ là những chất khi tan trong nước phân li ra anion OH

    VD: NaOH, KOH, Ba(OH)2, Fe(OH)2 …(HS tự viết pt điện li của các ví dụ)

    • Muối là những chất khi tan trong nước phân li ra cation kim loại và anion gốc axit

    VD: NaCl, KNO3, (NH4)2SO4, NaClO, CH­3COONa …(HS tự viết pt điện li của các ví dụ)

    • Hidroxit lưỡng tính là những chất khi tan trong nước vừa có thể phân li như axit, vừa có thể phân li như bazơ

    VD:Al(OH)3, Sn(OH)2, Zn(OH)2…(HS tự viết pt điện li của các ví dụ)

    Câu 2: pH: khái niệm, công thức, ý nghĩa?

    Trả lời: – Công thức tính pH

    pH = – log [H+] hay [H+] = 10-pH

    Nếu pH = 10– a thì pH = a

    • Ý nghĩa pH dùng để xác định môi trường của dung dịch:

    + pH = 7 : Môi trường trung tính

    + pH < 7 : Môi trường axit

    + pH > 7 : Môi trường bazơ

    Câu 3: Điều kiện xảy ra phản ứng trao đổi ion trong dung dịch? PT ion thu gọn: ý nghĩa và cách viết pt ion thu gọn?

    Trả lời: – Điều kiện xảy ra phản ứng trao đổi ion trong dung dịch

    Để xảy ra phản ứng trao đổi ion trong dung dịch chất điện li cần ít nhất tạo ra một trong số các chất sau: + Chất kết tủa, Chất bay hơi, Chất điện li yếu

    • PT ion thu gọn: ý nghĩa và cách viết pt ion thu gọn

    + Ý nghĩa: PT ion thu gọn cho biết bản chất của phản ứng xảy ra trong dung dịch các chất điện li

    + Cách viết Pt ion thu gọn: Lược bỏ các ion không tham gia phản ứng, giữ nguyên dạng phân tử với các chất kết tủa, chất bay hơi và chất điện li yếu

    Tính pH của dd axit .

    PHƯƠNG PHÁP: Tính nồng độ H+ à  pH.

    Câu 1: Dung dịch có [H+] = 10-5. Dung dịch có môi trường gì?

    1. Trung tính B. Axit C. Bazo                       D. Không xác định

    Câu 2: Dung dịch có [H+] = 10-9. Dung dịch có môi trường gì?

    1. Trung tính B. Axit C. Bazo                       D. Không xác định

    Câu 3: Dung dịch H2SO4 0,05M có pH bằng:

    1. 1 B. 2 C. 1,3                          D. 13

    Câu 4: Dung dịch X có pH = 4. Nồng độ [H+] bằng:

    1. 10-10 B. 10-4 C. 10-14                                D. Không xác định

    Câu 5: Dung dịch X có pH = 2. Nồng độ [OH] bằng:

    1. 10-12 B. 10-2 C. 10-14                                D. Không xác định

    Câu 6: Dung dịch HCl và dung dịch CH3COOH có cùng nồng độ mol/l, pH của hai dung dịch tương ứng là x và y. Quan hệ giữa x và y là (giả thiết, cứ 100 phân tử CH3COOH thì có 1 phân tử điện li)             A. y = 100x.           B. y = 2x.       C. y = x – 2.        D. y = x + 2.

    Câu 7: Nồng độ mol/l của dung dịch HNO3 có pH = 3 là

    1. 3 (M) B. -3 (M). C. 10-3(M).                     D. – lg3 (M).

    Câu 8: Một dd  có nồng độ H+  bằng 0,001M thì pH và [OH] của dd này là

    1. pH = 2; [OH] =10-10 M. B. pH = 3; [OH] =10-10M.
    2. pH = 10-3; [OH] =10-11M. D. pH = 3; [OH] =10-11 M.

    Đáp án:

    Cấu 1 2 3 4 5 6 7 8
    Đáp án

    Tính pH của dd bazơ.

    PHƯƠNG PHÁP: Tính nồng độ OH   à nồng độ H+ à  pH.

     

    Câu 1:  Dd KOH 0,001M có pH bằng:

    1. 3 B. 11                                     C. 2                                    D.12

    Câu 2:pH của dd A chứa  là:

    1. 3,3                B.  10,7                       C.  3,0                                     D.  11,0

    Câu 3: pH của dd KOH 0,06M và NaOH 0,04M:

    1. 1                   B.  2                            C.  13                                                  D.   12,8

    Câu 4: pH của dd KOH 0,004M và Ba(OH)2 0,003M:

    1. 12                 B.  2                            C.  13                                                  D.   11,6

    Câu 5:pH của 500 ml dd chứa 0,2 g NaOH:

    1. 2                   B.  12                                      C.  0,4                                     D.  13,6

    Câu 6:pH của 800 ml dd chứa 0,548 g Ba(OH)­2 :

    1. 2                   B.  12                                      C.  0,4                                     D.  13,6

    Câu 7:Kết quả nào sau đây sai?

    1. Dd HCl 4,0.10-3 có pH = 2,4. Dd  2,5.10-4 có pH = 3,3.
    2. Dd NaOH 3,0.10-4 M có pH = 10,52. Dd  5,0.10-4 M có pH = 11.

    Đáp án:

    Cấu 1 2 3 4 5 6 7
    Đáp án

     

    1. RÚT KINH NGHIỆM

    …………………………………………………………………………………………………………………………………..

    …………………………………………………………………………………………………………………………………..

    …………………………………………………………………………………………………………………………………..

    Ngày

    Tổ trưởng kí duyệt

     

     

     

    Nguyễn Thị Hương

     

     

     

     

     

    Ngày soạn:

    Tuần: 4                                                                                   SỰ ĐIỆN LI

    • Những kiến thức học sinh đã biết có liên quan trực tiếp đến bài học:

    – Khái niệm chất điện li, phân loại chất điện li, định luật bảo toàn khối lượng

    1. MỤC TIÊU BÀI HỌC
    2. Về kiến thức.

    – Bản chất của phản ứng xảy ra trong dung dịch các chất điện li là phản ứng giữa các ion.

    – Để xảy ra phản ứng trao đổi ion trong dung dịch các chất điện li phải có ít nhất một trong các điều kiện: + Tạo thành chất kết tủa.

    + Tạo thành chất điện li yếu.

    + Tạo thành chất khí.

    1. Về kĩ năng:

    – Dự đoán kết quả phản ứng trao đổi ion trong dung dịch các chất điện li.

    – Viết được phương trình ion đầy đủ và rút gọn.

    – Tính khối lượng kết tủa hoặc thể tích khí sau phản ứng; tính  % khối lượng các chất trong hỗn hợp; tính nồng độ mol ion thu được sau phản ứng.

    1. Về thái độ

    Rèn luyện tính cẩn thận, học tập nghiêm túc. Hứng thú bộ môn.

        4.Về năng lực

    – Năng lực tư duy và sử dụng ngôn ngữ hóa học

    1. CHUẨN BỊ
    2. Giáo viên: Giáo án và hệ thống câu hỏi, bài tập.
    3. Học sinh: Ôn lại toàn bộ các kiến thức và chuẩn bị các điều kiện học tập cần thiết

    III. NỘI DUNG

    Phần 1: Kiến thức cần nhớ

    1. Nêu lại các khái niệm
    2. Sự điện li: Quá trình phân li các chất tan trong nước ra ion gọi là sự điện li
    3. Chất điện li yếu, chất điện li mạnh

    + Chất điện li yếu: là những chất khi tan trong nước chỉ một phần các chất tan phân li ra ion, phần còn lại vẫn tồn tại dưới dạng phân tử. Chất điện li yếu gồm: axit yếu và bazơ yếu.

    + Chất điện li mạnh: là những chất khi tan trong nước phân li hoàn toàn ra ion. Chất điện li mạnh gồm: axit mạnh, bazơ tan và hầu hết các muối.

    1. Nội dung định luật bảo toàn điện tích

     Trong một dung dịch:

    số mol điện tích dương = số mol điện tích âm

    Bài 1. Dung dịch A chứa Al3+ 0,1 mol, Mg2+ 0,15 mol, NO3 0,3 mol và Cl a mol . Tính a .

     Đáp số: a = 0,3 mol .

    Khi cô cạn một dung dịch

    + Không có sự bay hơi hoặc phân hủy chất tan

    Khối lượng chất rắn = khối lượng cation (ion dương) + khối lượng anion (ion âm)

    Bài 2. Dung dịch A chứa Na+ 0,1 mol , Mg2+ 0,05 mol , SO42- 0,04 mol còn lại là Cl . Tính khối lượng muối             trong dung dịch .

    Đáp số: m = 11,6 gam.

    + Có sự bay hơi chất tan

    m chất rắn = m cation  + m anion – m chất bay hơi

    Bài 3. Trong một dung dịch có chứa a mol Ca2+ , b mol Mg2+ , c mol H+  và d mol Cl

    1. Lập biểu thức liên hệ giữa a, b, c, và d
    2. Nếu a = 0,01 ; b = 0,02 và c = 0,03 thì khi đun nóng để cô cạn dung dịch được m gam chất rắn khan. Tìm m?

    Đáp số: m chất rắn = m cation  + m anion  – m HCl bay hơi

    + Có sự phân hủy chất tan

    Khối lượng chất rắn = m cation + m anion – m đã mất khi phân hủy

    = m cation + m anion (trong chất rắn thu được)

    Bài 4.. Trong  dung dịch X có chứa 0,1 mol Ca2+ , 0,15 mol Mg2+ , 0,2 mol Cl và x mol HCO3

    1. Tìm x
    2. Nếu đun sôi để cô cạn X được m g chất rắn, tìm m?

     

    DẠNG 3: ÁP DỤNG ĐỊNH LUẬT BẢO TOÀN ĐIỆN TÍCH.

    1. Bài tập áp dụng

    Phần tự luận:

    Bài 1. Một dung dịch có chứa hai loại cation là Fe2+ (0,1 mol) và Al3+ (0,2 mol) cùng hai loại anion là Cl (x             mol) và SO42- (y mol) . Tính x và y biết rằng khi cô cạn dung dịch và làm khan thu được 46,9 gam chất    rắn khan .

                ◙          x = 0,2 (mol) và y = 0,3 (mol)

    Bài 2. Trong một dung dịch có chứa a mol Ca2+, b mol Mg2+, c mol Cl, d mol SO.

    1. Lập biểu thức liên hệ giữa a, b, c, d.

    b.Nếu a = 0,1 ; c = 0,1 ; d = 0,3 thì b bằng bao nhiêu ? Từ kết quả này hãy tính tổng khối lượng các muối có trong dung dịch.

    Bài 3. Một dung dịch chứa x mol Cu2+, y mol K+;  0,03 mol Cl và 0,02 mol SO. Tổng khối lượng các muối tan có trong dung dịch là 5,435 gam. Hãy xác định giá trị x và y.

    Bài 4: Có hai dung dịch là dung dịch A và dung dịch B. Mỗi dung dịch chỉ chứa 2 cation và 2 anion trong số các ion sau:  (0,15 mol),  (0,1 mol),  (0,25 mol),  (0,2 mol), (0,1 mol), (0,075 mol),  (0,25 mol),  (0,15 mol). Xác định dung dịch A và dung dịch B.

    Bài 5: Dung dịch A chứa a mol , b mol , c mol , d mol , e mol  (không kể các ion  và  của nước).

    1. a) Lập biểu thức liên hệ giữa a, b, c, d, e.
    2. b) Thêm (c + d + e) mol Ba(OH)2 vào dung dịch A, đun nóng thu được kết tủa B, dung dịch X và khí Y duy nhất. Tính số mol của mỗi chất trong kết tủa B, khí Y và của mỗi ion trong dung dịch X theo a, b, c, d, e.

    Bài 6. Một dung dịch chứa a mol K+, b mol Mg2+, c mol SO và d mol Cl .

    Lập biểu thức liên hệ giữa a, b, c, d và công thức tổng khối lượng muối trong dung dịch.

    DÀNH CHO HỌC SINH KHÁ GIỎI

    Bài 7. Trong 2 lít dung dịch A chứa 0,2 mol Mg2+ ; x mol Fe3+ ; y mol Cl và 0,45 mol SO42-. Cô cạn dung dịch X thu được 79 gam muối khan.

    1. Tính giá trị của x và y?
    2. Biết rằng để thu được A người ta đã hòa tan 2 muối vào nước. Tính nồng độ mol/lít của mỗi muối trong A.

    Bài 8. Khi hòa tan 3 muối X, Y, Z vào nước thu được dung dịch A chứa 0,295 mol Na+ ; 0,0225 mol Ba2+ ; 0,25 mol  và a mol .

    1. Tính a?
    2. Hãy xác định 3 muối X, Y, Z và tính khối lượng mỗi muối cần hòa tan vào nước để được dung dịch A.

    Phần trắc nghiệm

    Câu 1. (CĐ 07) Dung dịch A chứa các ion Al3+ = 0,6 mol, Fe2+ = 0,3 mol , Cl = a mol, SO42- = b mol . Cô cạn dung dịch A thu được 140,7 gam . Gi á trị của a và b lần lượt là

    1. A. 0,6 ; 0,9 B. 0.9 ; 0,6                  C. 0,5 ; 0,3                  D. 0,2 ; 0,3

    Câu 2: Một dung dịch chứa 0,02 mol , 0,03 mol , x mol  và y mol . Tổng khối lượng các muối tan có trong dung dịch là 5,435 gam. Giá trị của x và y lần lượt là

    1. 0,03 và 0,02. B. 0,05 và 0,01.            C. 0,01 và 0,03.         D. 0,02 và 0,05.

    Câu 3: Dung dịch Z có chứa 5 ion: , ,  và 0,1 mol , 0,2 mol . Thêm dần V ml dung dịch K2CO3 0,5M vào Z đến khi được lượng kết tủa lớn nhất thì giá trị V tối thiểu cần dùng là

    1. 150. B. 200.                          C. 220.                       D. 300.

    Câu 4: Dung dịch Z có chứa 0,015 mol , 0,02 mol , 0,045 mol , 0,01 mol . Khối lượng chất tan trong dung dịch trên là

    1. 2,4375 gam. B. 3,7575 gam                                 C. 3,3975 gam    D.  3,0375 gam

    Câu 5:  Một dung dịch chứa a mol Ca2+,b mol Na+,c mol HCO3 và d mol Cl. Biểu thức biểu diễn mối quan hệ giữa a,b,c,d là

    1. A. a + b = c + d. B.2a + b = c + d.         C. a + 2b = c + d.        D. a + c = 2b + d.

    Câu 6: Một dung dịch có chứa các ion với nồng độ tương ứng như sau: Na+ 0,1M ; Cu2+ 0,2M ; SO42- 0,1M ;  xM. Giá trị của x là

    1. 0,1 M B. 0,2M C.0,3M                        D.0,4M

    Câu 7: Dung dịch X có chứa: a mol Na+, b mol Al3+, c mol Cl và d mol SO42-. Biểu thức nào sau đây đúng?

    1. a+b= c+d B. a + 3b = c + 2d  C. a + 3b = -(c + 2d).   D. a + 3b + c + 2d = 0

    Câu 8:Một cốc nước có chứa a mol Ca 2+, b mol Mg2+, c mol Cl, d mol HCO3. Hệ thức liên hệ

    giữa a, b, c, d là :

    1. A. 2a+2b=c-d. B. a+b=c+d. C. 2a+2b=c+d.          a+b=2c+2d.

    DÀNH CHO HỌC SINH KHÁ GIỎI

    Câu 9:Có hai dung dịch, mỗi dung dịch chứa hai cation v à 2 anion không trùng nhau trong các ion sau: K+ : 0,3 mol; Mg2+ : 0,2 mol; NH4+ : 0,5 mol; H+ : 0,4 mol; Cl- : 0,2 mol; SO42- : 0,15 mol; : 0,5 mol; CO32-   : 0,3 mol. Một trong hai dung dịch tr ên chứa các ion là :

    1. K+; Mg2+; SO42-; . B. K+; NH4+; ; .
    2. ; H+ ; ; D. Mg2+ ; H+ ; ; .

    Câu 10: Để được một dung dịch có chứa các ion: Mg 2+ (0,02 mol), Fe2+ (0,03 mol), Cl- (0,04 mol), SO42- (0,03 mol), ta có thể pha vào nước mấy muối ?

    1. A. 2 muối. B. 3 muối. 4 muối.                    D. 2 hoặc 3 hoặc 4 muối.

    Câu 11: Dung dịch A chứa 0,23 gam ion Na +; 0,12 gam  ion Mg 2+; 0,355 gam  ion Cl – và m gam ion

    SO42–. Số gam muối khan sẽ thu đ ược khi cô cạn dung dịch A l à :

    1. 1,185 gam. B. 1,19 gam. C. 1,2 gam.                  D. 1,158 gam.

    III. HƯỚNG DẪN HỌC BÀI Ở NHÀ

    Làm BT trong tờ bài tập:

    Đại trà: 4,5 – dạng 2 + 10 câu trắc nghiệm (1 – 10)  dạng 3

    Nâng cao:  6,7 – dạng 2 + 10 câu trắc nghiệm (11 – 20) dạng 3

    1. RÚT KINH NGHIỆM

    …………………………………………………………………………………………………………………………………..

    …………………………………………………………………………………………………………………………………..

    …………………………………………………………………………………………………………………………………..

    Ngày

    Tổ trưởng kí duyệt

    Nguyễn Thị Hương

     

    Mời các thầy cô và các em download file giáo án dạy thêm môn hóa lớp 11 học kì 1 đầy đủ chi tiết tại đây

    Giáo án dạy thêm hóa học lớp 11-HKI

     

    Xem thêm

  • ĐỀ THI THỬ TN THPT 2020 MÔN HÓA TỈNH NAM ĐỊNH

    ĐỀ THI THỬ TN THPT 2020 MÔN HÓA TỈNH NAM ĐỊNH

    ĐỀ THI THỬ TN THPT 2020 MÔN HÓA TỈNH NAM ĐỊNH

    DE THI THU TN THPT 2020 MON HOA TINH NAM DINH

     

    UBNDTỈNHNAM ĐỊNH
    SỞ GIÁO DỤC VÀ ĐÀO TẠOĐỀ THITHỬ TỐT NGHIỆP THPT NĂM 2020
    NĂM HỌC 2019-2020
    Bài thi: KHOA HỌC TỰ NHIÊN
    Môn thi thành phần: HÓA HỌC
    Thời gian làm bài: 50 phút, không kể thờigian phát đề(Đề thi có 04 trang)Mã đề:301Họ, tên thí sinh: …………………………………………
    Số báo danh: …………………………………………….
    • Cho biết nguyên tử khối của các nguyên tố: H = 1; C = 12; N = 14; O = 16; Na = 23; Al = 27;Fe = 56.
    • Các thể tích khí đều đo ở điều kiện tiêuchuẩn; giả thiết các khí sinh ra không tan trong nước.
    Câu 41:Kim loại nào sau đâykhôngtác dụng với dung dịch axit nitric đặc nguội?
    A.Cu.B.Na.C.Mg.D.Al.
    Câu 42:Khí đinitơ oxit còn gọi là khí gây cười, bóng cười. Nếu lạm dụng quá mức khí này thì dẫn tới
    trầm cảm và có thể gây tử vong. Công thức hóa học của đinitơ oxit là
    A.N2O4.B.NO2.C.NO.D.N2O.
    Câu 43:Oxi chiếm phần trăm về khối lượng cao nhất trong chất nào sau đây?
    A.Saccarozơ.B.Xenlulozơ.C.Fructozơ.D.Tinh bột.
    Câu 44:Thủy phân este nào sau đây thu được C2H5OH?
    A.Etyl fomat.B.Metyl axetat.C.Isopropyl axetat.D.Vinyl fomat.
    Câu 45:Trong nước cứng tạm thời có chứa thành phần nào sau đây?
    A.CaCl2và Mg(HCO3)2.B.CaCl2và MgSO4.
    C.Ca(HCO3)2và Mg(HCO3)2.D.NaHCO3và KHCO3.
    Câu 46:Cho hỗn hợp các kim loại Na, K, Mg, Al, Ba có cùng số mol hòa tan vào nước dư ở nhiệt độ
    thường. Sau phản ứng, chất rắn còn lại có thành phần là
    A.Mg, Al.B.Mg.C.Ba.D.Al.
    Câu 47:Kim loại nào sau đây có tính nhiễm từ?
    A.Al.B.Ca.C.Fe.D.Na.
    Câu 48:Chất X có công thức cấu tạo HOOC-CH2-CH2-CH(NH2)-COOH.Tên gọi của X là
    A.Valin.B.Glyxin.C.Lysin.D.Axit Glutamic.
    Câu 49:Chất nào sau đây tác dụng được dung dịch Brom?
    A.Metan.B.Anilin.C.Axit Axetic.D.Fructozơ.
    Câu 50:Dung dịch chất nào sau đây hòa tan được Cu(OH)2tạo thành dung dịch có màu tím?
    A.Anbumin.B.Glixerol.C.Glucozơ.D.Gly-Ala.
    Câu 51:Chất nào sau đây tác dụng được dung dịch AgNO3trong NH3tạo kết tủa màu vàng?
    A.Stiren.B.Axetilen.C.Etilen.D.Anđehit axetic.
    Câu 52:Nung nóng Fe(OH)2trong không khí đến khối lượng không đổi, thu được chất rắn nào sau đây?
    A.Fe2O3.B.Fe3O4.C.FeO.D.Fe.
    Câu 53:Kim loại nào sau đây được điều chế bằng phương pháp nhiệt luyện?
    A.Mg.B.Al.C.K.D.Fe.
    Câu 54:Dung dịch chất nào sau đâykhôngdẫn được điện?
    A.C2H5OH.B.NaOH.C.CH3COOH.D.NaCl.
    Câu 55:Hiđro hóa hoàn toàntriolein với xúc tác thích hợp, thu được chất X. Công thứccủa X là
    A.C17H35COOH.B.(C17H33COO)3C3H5.
    C.(C15H31COO)3C3H5.D.(C17H35COO)3C3H5.1Câu 56:Kim loại nào sau đây tác dụng được dung dịch HCl?
    A.Ag.B.Zn.C.Au.D.Cu.
    Câu 57:Chất nào sau đây vừa tác dụng với dung dịch NaOH, vừa tác dụng với dung dịch HCl?
    A.CaCO3.B.MgSO4.C.Al(OH)3.D.AlCl3.
    Câu 58:Natri cacbonat được dùng trong nhiều ngành công nghiệp.Công thức của natri cacbonat làA.NH4HCO3.
    Câu 59:Phát biểu đúng làB.Na2CO3.C.Na2SO4.D.NaOH.A.Công thức của thạch cao nung là CaSO4.H2O.
    B.Thạch cao khan dùng để bó bột, đúc tượng.
    C.Công thức của thạch cao sống là CaSO4.0,5H2O.
    D.Thạch cao khan dùng sản xuất xi măng.
    Câu 60:Kim loại dẫn điện tốt nhất là
    A.Sắt.B.Đồng.C.Bạc.D.Vàng.
    Câu 61:Cho các phát biểu sau:
    (a)Ở điều kiện thường, tất cả kim loại kiềm thổ đều tác dụng được với nước.
    (b)Cho Na vào dung dịch CuSO4, thu được khí không màu và kết tủa màu nâu đỏ.
    (c)Al(OH)3có tính chất lưỡng tính và tính khử.
    (d)Nhôm bền trong không khí là do có lớp màng oxit (Al2O3) bảo vệ.
    (e)Để làm mềm nước cứng vĩnh cửu, người ta dùng Na2CO3hoặc Na3PO4.
    (f)Để bảo quản kim loại kiềm, người ta ngâmchúngtrong dầu hỏa.
    Số phát biểu đúng là
    A.5.B.2.C.4.D.3.
    Câu 62:Cho m gam Cu tác dụng hoàn toàn với dung dịch AgNO3dư, thu được 2,16 gam kim loại Ag.
    Giá trị của m là
    A.1,28.B.0,32.C.0,64.D.1,92.
    Câu 63:Hỗn hợp X gồm phenyl axetat, metyl benzoat, etyl axetat, điphenyl oxalat và glixerol triaxetat.Thủy phân hoàn toàn 44,28 gam X trong dung dịch NaOH (dư, đun nóng), có 0,5 mol NaOH phản ứng,thu được m gam hỗn hợp muối và 13,08 gam hỗn hợp Y gồm các ancol.Cho toàn bộ Y tác dụng với Na
    dư, thu được 2,688 lít H2.Giá trị của m là
    A.46,7 gam.B.48,86 gam.C.51,02 gam.D.59,78 gam.
    Câu 64:Cho các phát biểu sau:
    (a)Cho etyl axetat vào dung dịch NaOH, đun nóng thu được dung dịch đồng nhất.
    (b)Thủy phân hoàn toàn saccarozo trong môi trường kiềm, thu được hai loại monosaccarit.
    (c)Muối mononatri glutamat được sử dụng làm bột ngọt (mì chính).
    (d)Trùng hợp etyl metacrylat, thu được thủy tinh hữu cơ.
    (e)Tất cả tơ tổng hợp đều được điều chế bằng phản ứng trùng ngưng.
    (f)Chất béo rắn nặng hơn nước và không tan trong nước.
    Số phát biểu đúng là
    A.2.B.3.C.4.D.1.
    Câu 65:Hòa tan hết hỗn hợp Fe2O3và Cu có cùng số mol vào dung dịch HCl dư, thu được dung dịch
    X. Chất nào sau đâykhôngtác dụng với X?
    A.NaOH.B.NaNO3.C.Ag.D.HNO3.
    Câu 66:Cho các tơ sau: tơ tằm, tơ nitron, tơ visco, tơ lapsan, nilon-6,6 và nilon-6.Số tơ hóa học là
    A.3.B.6.C.4.D.5.2Câu 67:Hỗn hợp E gồm các chất hữu cơ mạch hở X (C4H13O6N3) và đipeptit Y (C4H8O3N2). Cho 0,2mol E tác dụng với dung dịch NaOHdư, đun nóng thu được 4,48 lítmột khí duy nhất (làm xanh quỳ tímẩm) và hỗn hợp chỉ chứa muối của axit oxalic và muối của một aminoaxit. Mặt khác, cho 0,1 mol E tác
    dụng với dung dịch HCl dư, thu được m gam hỗn hợp chất hữu cơ.Giá trị của m là
    A.26,575.B.16,725.C.21,225.D.42,450.
    Câu 68:Phát biểu nào sau đâysai?
    A.Điện phân dung dịch CuSO4với điện cực trơ, thu được kim loại Cu ở anot.
    B.Tính chất hóa học đặc trưng của kim loại là tính khử.
    C.Để thanh thép ngoài không khí ẩm thì xảy ra hiện tượng ăn mòn điện hóa học.
    3+
    D.Kim loại Cu khử được ion Fetrong dung dịch FeCl3.
    Câu 69:Nung hỗn hợp chất rắn gồm natri axetat, natri hiđroxit và canxi oxit trong ống nghiệm thu đượckhí X. Phát biểu đúng là
    A.Khí X là etilen.
    B.Khí X làm mất màu được dung dịch KMnO4ở nhiệt độ thường.
    C.Có thể thu khí X bằng phương pháp đẩy nước.
    D.CaO là xúc tác của phản ứng.
    Câu 70:Hỗn hợp X gồm Fe3O4và Fe2O3. Trộn 2,7 gam bột Al vào 31 gam X rồi tiến hành phản ứng
    nhiệt nhôm, thu được hỗn hợp Y. Hoà tan hoàn toàn Y trong dung dịch HNO3dư, thu được 9,408 lít khíNO2(là sản phẩm khử duy nhất của N+5). Phần trăm khối lượng Fe2O3trong Xgần nhấtvới giá trị nào
    sau đây?
    A.61,93%.B.30,96.C.51,61%.D.10,19%.
    Câu 71:Hòa tan hoàn toàn 5,1 gam Al2O3cần vừa đủ V ml dung dịch NaOH 1M. Giá trị của V là
    A.150 ml.B.100 ml.C.300 ml.D.200 ml.
    Câu 72:Hỗn hợp X gồm axit oleic và triglixerit Y. Đốt cháy hoàn toàn 0,2 mol X cần vừa đủ 10,6 molO2, thu được CO2và 126 gam H2O. Mặt khác, cho 0,12 mol X tác dụng với dung dịch NaOH vừa đủ,đun nóng, thu được glixerol và a gam hỗn hợp gồm natri oleat và natri stearat.Giá trị của a là
    A.122,0.B.60,80.C.36,48.D.73,08.
    Câu 73:Phát biểu nào sau đâysai?
    A.Phân tử tetrapeptit mạch hở chứa 3 liên kết peptit.
    B.Tất cả aminoaxit đều có tính chất lưỡng tính.
    C.Dung dịch anilin không làm đổi màu quỳ tím.
    D.Ở điều kiện thường, etylamin là chất lỏng, tan nhiều trong nước.
    Câu 74:Lên men m gam glucozơ thành ancol etylic với hiệu suất 90%. Cho toàn bộ CO2sinh ra vào
    dung dịch nước vôi trong dư, thu được 60 gam kết tủa.Giá trị của m là
    A.120.B.60.C.30.D.54.
    Câu 75:Tiến hành thí nghiệm điều chế etyl axetat theo các bước sau đây
    Bước 1:Cho 1 ml CH3COOH, 1 ml C2H5OH và vài giọt dung dịch H2SO4đặc vào ống nghiệm.
    Bước 2:Lắc đều ống nghiệm, đun cách thủy (trong nồi nước nóng) khoảng 5-6 phút ở 65-700C.
    Bước 3:Làmlạnh, sau đó rót 2 ml dung dịch NaCl bão hòa vào ống nghiệm.
    Cho các phát biểu sau:
    (a)Axit H2SO4đặc vừa có vai trò làm xúc tác, vừa làm tăng hiệu suất tạo sản phẩm.
    (b)Mục đích chính của việc thêm dung dịch NaCl bão hòa là để tránh phân hủy sản phẩm.
    (c)Sau bước 2, trong ống nghiệm vẫn còn axit axetic và ancol etylic.
    (d)Sau bước 3, chất lỏng trong ống nghiệm tách thành hai lớp.
    (e)Ở thí nghiệm trên, có thể thay dung dịch axit sunfuric đặc bằng dung dịch axit clohidric đặc.
    (f)Mục đíchchính của việc làm lạnh là để cho hơi etyl axetat ngưng tụ.
    Số phát biểukhôngđúng là
    A.1.B.3.C.4.D.2.3Câu 76:Cho m gam đipeptit Glu-Ala tác dụng với dung dịch NaOH dư, đun nóng. Số mol NaOH đã
    phản ứng là 0,3 mol. Giá trị của m là
    A.21,8.B.65,4.C.23,6.D.32,7.
    Câu 77:X, Y, Zlà 3 este mạch hở (trong đó X, Y đơn chức, Z hai chức). Đun nóng 28,92 gam hỗn hợpE chứaX, Y, Zvới dung dịch NaOH vừa đủ, thu được hỗn hợp F chỉ chứahaimuối cótỉ lệ số mol 1 : 1và hỗn hợphaiancol no, có cùng số nguyêntử cacbon. Dẫn toàn bộ hỗn hợp haiancol này qua bìnhđựng Na dư, thu được 4,368 lít H2và thấy khối lượng bình tăng 12,15 gam.Đốt cháy toàn bộ F thu đượcNa2CO3,CO2và 10,53 gam H2O. Các phản ứng xảy ra hoàn toàn. Phần trăm khối lượng của este có khối
    lượng phân tử nhỏ nhất trong E là
    A.3,84%.B.3,92%.C.3,96%.D.3,78%.Câu 78:Hợpchất hữu cơEcó công thức phân tử C9H8O4thỏa mãncác phương trình hóa học sau:(1)E+ 3NaOH → 2X + Y + H2O;(2) 2X + H2SO4→ Na2SO4+ 2Z(3) Z + 2AgNO3+ 4NH3+ H2O → T + 2Ag + 2NH4NO3(4) Y + CO2+ H2O → M + NaHCO3
    BiếtE, M, X, Y, Z,T là kí hiệu của các hợp chất.Nhận xét nào sau đây đúng?
    A.1 molMtác dụng tối đa 2 mol NaOH.B.PhântửYcó3 nguyên tử oxi.
    C.Phân tửYcó 7 nguyên tử cacbon.D.Trong phản ứng (3),Zbị khử.
    Câu 79:Cho hơi nước qua than nóng đỏ thu được 0,3 mol hỗn hợp khí X gồm CO,H2và CO2. Hỗn hợpX phản ứng vừa hết hỗn hợp Y nung nóng gồm CuO, MgO, Fe3O4và Al2O3có cùng số mol thì thu hỗnhợp chất rắn Z. Hòa tan Z vào dung dịch HCl thì thu được 3,36 lít khí. Nếu cho X vào nước vôi trong dưthì thu được m gam kết tủa. Các phản ứng xảy ra hoàn toàn. Giá trị của m là
    A.5B.15C.8D.25
    .
    .
    .
    .
    Câu 80:X là chất rắn, không màu, có nhiều trong mía, củ cải đường và hoa thốt nốt. Thủy phân X trongmôi trường axit, thu được chất hữu cơ Y (có khả năng làm mất màu dung dịch brom).X và Y lần lượt là
    A.Xenlulozơ và Glucozơ.B.Saccarozơ và Glucozơ.
    C.Saccarozơ và Fructozơ.D.Tinh bột và Glucozơ.

    ———-HẾT———-

     

    Mời các thầy cô và các em download file pdf tại đây

    ĐỀ THI THỬ TN THPT SỞ NAM ĐỊNH LẦN 2

     

     

  • Toán 10 – Biện luận hệ phương trình, hệ bất phương trình bằng đồ thị

    Toán 10 – Biện luận hệ phương trình, hệ bất phương trình bằng đồ thị

    Biện luận hệ phương trình, hệ bất phương trình bằng đồ thị

    Sử dụng sự tương giao của đường tròn và đường thẳng trong mặt phẳng tọa độ Oxy, chúng ta có thể dễ dàng Biện luận hệ phương trình, hệ bất phương trình có chứa tham số.

    Xem thêm:

    1. Lý thuyết biện luận hệ phương trình, hệ bất phương trình bằng đồ thị

    Nhắc lại rằng, đối với hệ phương trình hai ẩn, hệ bất phương trình hai ẩn $ x,y$ thì mỗi nghiệm của nó là một cặp số $ (x;y)$ thỏa mãn hệ đã cho. Mỗi cặp số $ (x;y)$ này chính là tọa độ của một điểm ở trong mặt phẳng tọa độ $ Oxy$.
    Để biện luận hệ phương trình, hệ bất phương trình đã cho, chúng ta biểu diễn các phương trình, bất phương trình của hệ bởi những đường thẳng, đường tròn hoặc miền mặt phẳng giới hạn bởi các đường thẳng, đường tròn trong mặt phẳng. Khi đó, số nghiệm của hệ phương trình, của hệ bất phương trình chính bằng số điểm chung của các đường thẳng và đường tròn này.

    • Trong mặt phẳng $ Oxy$, phương trình đường thẳng có dạng tổng quát $$ ax+by+c=0 $$
    • Phương trình đường tròn tâm $ I(a,b)$ bán kính $ R$ là $$ (x-a)^2+(y-b)^2=R^2 $$
    • Khoảng cách từ điểm $ M(x_0;y_0)$ tới đường thẳng $ \Delta:ax+by+c=0$ là
      $$ d(M,\Delta)=\frac{|ax_0+by_0+c|}{\sqrt{a^2+b^2}} $$
    • Vị trí tương đối của đường thẳng $ \Delta$ và đường tròn tâm $ I$, bán kính $ R$:
      • có một điểm chung khi và chỉ khi $ d(I,\Delta)=R$
      • có hai điểm chung khi và chỉ khi $ d(I,\Delta)<R$
      • có không điểm chung khi và chỉ khi $ d(I,\Delta)>R$

    2. Các ví dụ Biện luận hệ phương trình, hệ bất phương trình bằng đồ thị

    Bài 1: Tìm $ a$ để hệ sau có nghiệm duy nhất: $$\left\{ \begin{array}{lr}
    {x^2} + {y^2} – 2x \le 2&(1)\\
    x – y + a = 0&(2)
    \end{array} \right.$$
    Lời giải: Ta có bất phương trình (1) tương đương với $$ {(x – 1)^2} + {y^2} \le 3$$ Bất phương trình này biểu diễn hình tròn $ (C)$ có tâm $ I(1;0)$ bán kính $R=\sqrt 3 $ trên mặt phẳng tọa độ $ Oxy$. Phương trình (2) biểu diễn đường thẳng $ \Delta:x-y+a=0$. Để hệ có nghiệm duy nhất thì đường thẳng phải tiếp xúc với đường tròn. Điều này xảy ra khi và chỉ khi
    \begin{align*}
    d\left( {I,\Delta } \right) &= R\\
    \Leftrightarrow \frac{{\left| {1 – 0 – a} \right|}}{{\sqrt 2 }}& = \sqrt 3
    \end{align*}
    Giải hệ này, tìm được đáp số $ a = – 1 – \sqrt 6 ;a = – 1 + \sqrt 6 $.

    Bài 2: Tìm $ a$ để hệ sau có nghiệm duy nhất: $$\left\{ \begin{array}{l}
    x + y + \sqrt {2xy + m} \ge m\\
    x + y \le 1
    \end{array} \right.$$

    Lời giải: Hệ bất phương trình đã cho tương đương với
    \begin{align*}
    &\left\{ \begin{array}{l}
    \sqrt {2xy + m} \ge 1 – \left( {x + y} \right)\\
    x + y \le 1
    \end{array} \right.\\
    \Leftrightarrow &\left\{ \begin{array}{l}
    2xy + m \ge {\left( {1 – \left( {x + y} \right)} \right)^2}\\
    x + y \le 1
    \end{array} \right.\\
    \Leftrightarrow &\left\{ \begin{array}{lr}
    {\left( {x – 1} \right)^2} + {\left( {y – 1} \right)^2} \le m + 1&\left( 3 \right)\\
    x + y \le 1&\left( 4 \right)
    \end{array} \right.
    \end{align*}

    • Với $m+1 \le 0$ hay $m \le -1$ thì hệ vô nghiệm.
    • Với $ m+1 > 0$ hay $ m>-1$, thì bất phương trình (3) biểu diễn hình tròn $ (C)$ có tâm $ I(1;1)$ và bán kính $R=\sqrt {m + 1} $ trong mặt phẳng tọa độ Oxy. Bất phương trình (4) biểu diễn nửa mặt phẳng bờ là đường thẳng $ x+y=1$. Hệ có nghiệm duy nhất khi và chỉ khi đường thẳng $ x+y=1$ tiếp xúc với đường tròn $ (C)$. Điều kiện cần và đủ là
      $$d(I,\Delta)=R \Leftrightarrow \frac{1}{{\sqrt 2 }} = \sqrt {m + 1} \Leftrightarrow m = – \frac{1}{2}$$

    Bài 3: Tìm $ a$ để hệ sau có nghiệm: $$\left\{ \begin{array}{l}
    4x – 3y + 2 \ge 0\\
    {x^2} + {y^2} = a
    \end{array} \right.$$
    Lời giải:

    • Nếu $ a\le 0$ hệ vô nghiệm.
    • Nếu $ a> 0$ thì số nghiệm của hệ (nếu có) là số giao điểm của nửa mặt phẳng biểu diễn bởi bất phương trình $4x-3y+2 \le 0$ và đường tròn tâm $ O(0;0)$ bán kính $R=\sqrt a $. Do đó, hệ có nghiệm khi và chỉ khi $$\sqrt a \ge OH \Leftrightarrow a \ge \frac{4}{{25}},$$ trong đó, $ H$ là chân đường vuông góc hạ từ $ O$ xuống đường thẳng $ 4x-3y+2= 0$.

    Bài 4: Cho hệ bất phương trình $$\left\{ \begin{array}{lr}
    {\left( {x – 1} \right)^2} + {\left( {y – 1} \right)^2} \le 2&(5)\\
    x – y + m = 0&(6)
    \end{array} \right.$$
    Xác định $ m$ để hệ nghiệm đúng với mọi $x \in \left[ {0;2} \right]$.

    Lời giải: Tập hợp các điểm $ (x;y)$ thỏa mãn (5) là các điểm nằm trong và trên đường tròn $${\left( {x – 1} \right)^2} + {\left( {y – 1} \right)^2} = 2$$
    Đường tròn này có tâm $ I(1;1)$ và bán kính $R = \sqrt 2 $. Tập hợp các điểm $ (x;y)$ thỏa mãn (6) là các điểm nằm trên đường thẳng $\Delta $ có phương trình $x-y+m=0.$
    Gỉa sử điểm $A \in \Delta $ sao cho ${x_A} = 0$ thì tọa độ của $ A$ là $ (0;m)$; $B \in \Delta $ sao cho ${x_B} = 2$ thì $ B(2;2+m)$.

    Hệ có nghiệm với mọi $x \in \left[ {0;2} \right]$ khi và chỉ khi đoạn thẳng $ AB$ nằm trong đường tròn $ (I;R)$. Lúc đó
    $$\left\{ \begin{array}{l} IA \le R\\ IB \le R
    \end{array} \right. \Leftrightarrow \left\{ \begin{array}{l}
    {\left( {0 – 1} \right)^2} + {\left( {m – 1} \right)^2} \le 2\\
    {\left( {2 – 1} \right)^2} + {\left( {2 + m – 1} \right)^2} \le 2
    \end{array} \right. $$
    Giải hệ này tìm được $ m = 0$

    Bài 5: Cho hệ phương trình $$\left\{ \begin{array}{lr}
    {x^2} + {y^2} – x = 0&(7)\\
    x + ay – a = 0&(8)
    \end{array} \right.$$
    Tìm $ a$ để hệ có hai nghiệm phân biệt.

    Lời giải: Phương trình (7) tương đương với $$ {\left( {x – \frac{1}{2}} \right)^2} + {y^2} = \frac{1}{4}$$
    Đây là một đường tròn tâm $I\left( {\frac{1}{2};0} \right)$ bán kính $R=\frac{1}{2}$. Tập nghiệm của phương trình (8) là tọa độ những điểm nằm trên đường thẳng $ x+ay-a=0$. Họ đường thẳng này luôn di qua điểm $ A(0;1)$ cố định.
    Nhận xét điểm $ A$ nằm ngoài đường tròn $ (I;R)$, nên từ $ A$ kẻ được hai tiếp tuyến với đường tròn $ (I;R)$.

    Phương trình tiếp tuyến đó là: $ x=0$ và $x + \frac{4}{3}y – \frac{4}{3} = 0$.

    Để hệ có hai nghiệm phân biệt thì đường thẳng $ x+ay-a=0$ phải cắt đường tròn (I;R) tại hai điểm phân biệt. Vậy đường thẳng $ x+ay-a=0$ phải nằm giữa hai tiếp tuyến trên. Điều này xảy ra khi và chỉ khi $0 <a < \frac{4}{3}$.

    Bài 6: Tìm $ m$ để phương trình sau có nghiệm: $$\sqrt {1 – {x^2}} = m – x$$
    Lời giải: Đặt $y = \sqrt {1 – {x^2}} $, điều kiện$y \ge 0$ thì phương tương đương với hệ bất phương trình
    $$\left\{ \begin{array}{lr}
    {x^2} + {y^2} = 1&(2)\\
    x + y – m = 0&(3)
    \end{array} \right.$$
    Gọi hai đường thẳng song song với đường thẳng $ d:x+y-m=0$ và tiếp xúc với đường tròn $ {x^2} + {y^2} = 1$ là $d_1, d_2$. Chúng ta viết được phương trình của chúng là $$ x+y-1=0,\, x+y+\sqrt{2}=0 $$

    Để phương trình đã cho có nghiệm thì đường thẳng $ d$ phải nằm giữa hai đường thẳng $ d_1$ và $ d_2$. Điều kiện cần và đủ là
    $ – 1 \le m \le \sqrt 2 $.

    Bài 7: Tìm GTLN của hàm số: $$y = x + \sqrt {a – {x^2}} (a > 0)$$

    Lời giải: Đặt $t = \sqrt {{a^2} – {x^2}} \Leftrightarrow {x^2} + {t^2} = {a^2}$ và $ x+t-y=0$. Chúng ta cần tìm điều kiện để hệ sau có nghiệm
    $$\left\{ \begin{array}{lr}
    {x^2} + {t^2} = {a^2}&(1)\\
    x + t – y = 0&(2)
    \end{array} \right.$$

    Bài 8: Hãy biện luận số nghiệm của hệ sau theo $ m$. $$\left\{ \begin{array}{lr}
    x + y = 4(1)&\\
    {x^2} + {y^2} = {m^2}&(2)
    \end{array} \right.$$

    Lời giải.

    • Nếu $ m=0$ thì hệ vô nghiệm.
    • Nếu $m \ne 0$ thì số nghiệm của hệ chính bằng số giao điểm của đường tròn ${x^2} + {y^2} = {m^2}$ và đường thẳng $\Delta 😡 + y = 4$
      Điều kiện cần và đủ là $$ d(O,\Delta)= \frac{{\left| { – 4} \right|}}{{\sqrt 2 }} = 2\sqrt 2 $$

    Vậy ta có:

    • Nếu $\left| m \right| < 2\sqrt 2 $ hệ vô nghiệm.
    • Nếu $m = \pm 2\sqrt 2 $ thì hệ có nghiệm duy nhất: $\left\{ \begin{array}{l}
      x = 2\\ y = 2 \end{array} \right.$
    • Nếu $\left| m \right| > 2\sqrt 2 $ thì hệ có hai nghiệm phân biệt.

    Bài 9: Tìm $ a$ để bất phương trình sau có nghiệm $$\sqrt {a – x} + \sqrt {x + a} > a(a > 0)$$
    Lời giải: Đặt $\left\{ \begin{array}{l}
    u = \sqrt {a + x} \\
    v = \sqrt {a – x}
    \end{array} \right.$ với điều kiện $u,v \ge 0$. Bất phương trình đã cho tương đương với hệ:
    $$\left\{ \begin{array}{lr}
    u + v > a&(1)\\
    {u^2} + {v^2} = 2a&(2)
    \end{array} \right.$$
    Làm tương tự các bài toán trước, đáp số là $ 0 < a < 4$.

  • Hàm trong Python

    Hàm trong Python

    Hàm trong Python

    1. Khái niệm hàm trong Python

    Trong lập trình, để thực hiện một công việc nào đó, và công việc này lặp đi lặp lại, chúng ta sử dụng hàm sẽ tiết kiệm được công sức. Chính bạn đã sử dụng một số hàm đã được xây dựng sẵn trong Python, ví dụ như hàm print(), type()

    Chẳng hạn, trong chương trình chúng ta có một nhiệm vụ là giải phương trình bậc hai năm lần, thì mỗi lần người dùng sẽ nhập vào các hệ số a, b, c từ bàn phím, chương trình sẽ giải phương trình với các hệ số đó và trả lại kết quả là vô nghiệm, có nghiệm kép hay hai nghiệm phân biệt và in các nghiệm đó. Nếu không sử dụng hàm ta phải đánh máy đoạn chương trình sau 5 lần!

    from math import sqrt
    
    a = int(input("a = "))
    b = int(input("b = "))
    c = int(input("c = "))
    d = b**2 – 4*a*c
    if d < 0:
          print("Phương trình vô nghiệm.")
    elif d == 0:
          print("Phương trình có nghiệm kép x = ", -b /(2*a))
    else:
          print("Phương trình có hai nghiệm ", (-b + sqrt(d))/(2*a), " và ",\   (-b - sqrt(d))/(2*a))

    Khi đó, chương trình trông sẽ dài dòng phức tạp, hơn nữa, mỗi lần giải một phương trình mới ta lại phải gõ lại đoạn mã  này, tính tái sử dụng không[1] có. Lúc này, chúng ta cần sử dụng đến hàm.

    2. Khai báo hàm trong Python

    Để khai báo một hàm trong Python chúng ta sử dụng từ khóa def với cú pháp:

    def name([arg,... arg=value,... *arg, **arg]):
        """Mô tả về hàm nếu (nên) có (phần này thường gọi là docstring)"""
        <khối lệnh>
        return [giá trị trả về]

    Trong đó name là tên của hàm, được đặt tên theo đúng quy tắc đặt tên và theo sau phải là cặp ngoặc tròn (). Bên trong cặp ngoặc tròn, ta có arg là các tham số nếu có, value là giá trị mặc định của tham số – nếu người dùng không cung cấp một giá trị cho tham số khi gọi hàm thì giá trị mặc định này sẽ được sử dụng, *arg**arg là các tham số kiểu tuple, tức một bộ các tham số.

    Một hàm trong Python có thể có tham số hoặc không. Cần lưu ý rằng, nếu hàm có tham số nhận các giá trị mặc định, thì các tham số này phải được khai báo sau các tham số không nhận giá trị mặc định. Chẳng hạn, khai báo hàm bậc hai y=a*x**2+b*x+c thì thường giá trị mặc định là a=1, nhưng ta không thể khai báo tham số a lên trước, mà bắt buộc phải khai báo tham số a cuối cùng, chẳng hạn

    def ham_bac_hai(b, c, a = 1):
        <khối lệnh thực thi hàm>

    Tiếp theo là dấu hai chấm : và xuống dòng để bắt đầu vào phần thân của hàm. Phần này có thể gồm chú thích mô tả về hàm để giúp cho các lập trình viên khác, và chính bản thân chúng ta sau này, hiểu rõ hơn về hàm và khối lệnh chính của hàm để thực hiện nhiệm vụ đề ra.

    Cuối cùng là từ khóa return để thoát khỏi hàm và trở về chương trình chính, hoặc trả về giá trị của hàm đối với hàm có giá trị trả về; phần này không bắt buộc phải có.

    Một hàm nếu được khai báo trong một lớp thì còn được gọi là một phương thức method của lớp.

    3. Lời gọi đến hàm trong Python

    Để gọi một hàm có tên là name đã được định nghĩa, ta sử dụng câu lệnh name(). Hãy quay trở lại ví dụ giải phương trình bậc hai để hiểu rõ hơn.

    from math import sqrt
    def giai_pt():
          a = int(input("a = "))
          b = int(input("b = "))
          c = int(input("c = "))
          d = b**2 – 4*a*c
          if d < 0:
                print("Phương trình vô nghiệm.")
          elif d == 0:
                print("Phương trình có nghiệm kép x = ", -b /(2*a))
          else:
                print("Phương trình có hai nghiệm ", (-b + sqrt(d))/(2*a),
                " và ", (-b – sqrt(d))/(2*a))

    Như vậy, hàm giai_pt ở trên không có tham số truyền vào và cũng không có kết quả trả về, bởi bản thân các lệnh trong hàm đã in ra nghiệm của phương trình rồi. Để gọi hàm này ta chỉ đơn giản là dùng câu lệnh giai_pt().

    Ở cách làm này, trong bản thân hàm đã có các câu lệnh để người dùng nhập vào giá trị của các hệ số a, b, c của phương trình. Nếu muốn truyền các hệ số khi gọi hàm giai_pt() ta có thể viết lại như sau:

    from math import sqrt
    def giai_pt(a, b, c):
          d = b**2 – 4*a*c
          if d < 0:
                print("Phương trình vô nghiệm.")
          elif d == 0:
                print("Phương trình có nghiệm kép x = ", -b /(2*a))
          else:
                print("Phương trình có hai nghiệm ", (-b + sqrt(d))/(2*a),\
                " và ", (-b – sqrt(d))/(2*a))

    Lúc này, để giải phương trình bậc hai với các hệ số a = 1, b = -3, c = 5 ta chỉ việc gọi hàm bằng cách sử dụng câu lệnh giai_pt(1, -3, 5).

    4. Giá trị trả về của hàm

    Hàm trong Python có thể có hoặc không có giá trị trả về. Điều này khác với các hàm số trong toán học bắt buộc phải nhận một giá trị trả về, thì hàm trong Python có thể chỉ thực hiện một nhiệm vụ nào đó như in ra màn hình một chuỗi, xóa hết các phần tử của một tập hợp…

    Trong trường hợp hàm có kết quả trả về ta sử dụng từ khóa return, theo sau là giá trị trả về của hàm. Khi đó hàm có thể được sử dụng như một biến để tính toán. Hãy xét một hàm đơn giản, tên là cong để cộng hai số nguyên ab, giá trị trả về chính là tổng của hái số đó, định nghĩa như sau:

    def cong(a, b):
          return a + b

    Chúng ta sẽ thử gọi hàm này với các tham số truyền vào  a = 3, b =7.

    >>> cong(3, 7)
    10
    >>> cong(3, 7) + 5
    15

    Nếu ta thực hiện chương trình này trong trình thông dịch Python, thì ở lần gọi hàm thứ nhất kết quả trả về là 10, ở lần gọi thứ hai, bản thân hàm được sử dụng như một biến số để thực hiện tiếp phép cộng, và kết quả trả về là 15.

    Tuy nhiên, nếu các bạn soạn một script có nội dung như sau

    def cong(a, b):
          return a + b
    
    cong(3, 7)
    cong(4, 7) + 5

    và lưu lại với tên có phần mở rộng .py rồi chạy script này thì kết quả là không xuất hiện gì cả trên màn hình! Lí do là chương trình vẫn tính a + b, và vẫn trả về kết quả này và được sử dụng để tính toán tiếp nhưng không được in ra màn hình. Lúc này, muốn in kết quả ra chúng ta phải sử dụng đến hàm print() của Python.

    def cong(a, b):
          return a + b
    
    print(cong(3, 7))
    print(cong(4, 7) + 5)

    Theo sau từ khóa return là một giá trị, một biểu thức, một câu lệnh, thậm chí lại là một hàm[2] hoặc không có gì cả. Nếu không có gì, thì chương trình chỉ đơn giản là thoát khỏi hàm mà thôi và trả về giá trị None. Mỗi khi gặp từ khóa return thì hàm sẽ kết thúc, chương trình sẽ thoát khỏi hàm và thực hiện câu lệnh tiếp theo. Hãy xem ví dụ sau để hiểu rõ hơn:

    def test():
          print(1)
          return
          print(2)

    Chúng ta sẽ chạy thử.

    >>> test()
    1
    >>> print(test())
    1
    None

    Ta thấy ngay, câu lệnh print(2) không được thực thi vì trước đó chương trình đã thực hiện lệnh return rồi. Hơn nữa, lệnh return này không trả về gì cả, nên nếu ta dùng lệnh print(test()) thì chương trình sẽ trả về kết quả None. Còn số 1 kia được in ra là do bản thân trong hàm có câu lệnh print(1) mà thôi.

    Bài tập

    • Viết hàm giải hệ phương trình bậc nhất hai ẩn, sử dụng định thức cấp hai.
    • Viết chương trình kiểm tra xem số tự nhiên n có phải là số nguyên tố không.
    • Viết chương trình tìm ước chung lớn nhất của hai số tự nhiên.

    5. Tham số của hàm trong Python

    Như đã nói, một hàm có thể có tham số hoặc không. Đối với hàm có tham số thì nếu số lượng tham số xác định, chúng ta có thể khai báo hết các tham số/đối số đó. Nhưng đối với các hàm có số lượng tham số chưa biết, ví dụ như tính tổng của một dãy số mà chưa biết dãy đó có bao nhiêu phần tử, thì chúng ta phải cần đến các tham số đặc biệt, khai báo với các dấu sao * trước danh sách tham số/đối số.

    Phần này có tham khảo từ blog https://icewolf-blog.herokuapp.com/post/8

     5.1. Cách truyền tham số dạng *args**kwargs trong python (abittrary arguments)

    Kiểu truyền tham số này thường được sử dụng khi định nghĩa những hàm không biết trước số lượng tham số truyền vào. Thực sự thì không nhất thiết phải là *args**kwargs, điều quan trọng là tham số có 1 dấu sao * hay là 2 dấu sao **. Đặt tên tham số là *var hay **vars hay bất cứ thứ gì bạn muốn. Nhưng để dễ hiểu thì nên dùng tên chuẩn là *args**kwargs

    5.2. *args**kwargs dùng để làm gì?

    Khi khai báo một hàm trong Python, sử dụng *args**kwargs cho phép bạn truyền vào nhiều tham số/đối số mà không cần biết trước số lượng.

    #giả sử các tham số truyền vào đều là số
    
    def sum(*args):
       total = 0
       for number in args:
         total += number
     return total
    
    # gọi hàm
    sum(1, 2, 3, 19)
    sum(1, 100)
    
    def myFun(*argv): 
        for arg in argv: 
            print (arg)
       
    myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')

    5.3. *args**kwargs khác gì nhau?

    Khi gọi hàm trong Python, có 2 kiểu truyền tham số:

    • Truyền tham số theo tên.
    • Truyền tham số bình thường theo thứ tự khai báo đối số.

    Ví dụ

    def register(name, password):
     ....
    
    #Truyền tham số theo kiểu thông thường, phải theo đúng thứ tự
    register( 'Coulson', 'hail_Hydra')
    
    #Truyền tham số theo tên, Không cần phải theo thứ tự khai báo thao số
    register( password='cookHim', name='Skye')
    • *args nhận các tham số truyền bình thường, sử dụng args như một list.
    • **kwargs nhận tham số truyền theo tên, sử dụng kwargs như một dictionary.
    def test_args(*args):
      for item in args:
         print item
    
    >>>test_args('Hello', 'world!')
    Hello
    world!
    
    def test_kwargs(*kwargs):
      for key, value in kwargs.iteritems():
         print '{0} = {1}'.format(key, value)
    
    >>test_kwargs(name='Dzung', age=10)
    age = 10
    name = Dzung

    5.4. Thứ tự sử dụng và truyền tham số *args, **kwargs và tham số bình thường

    Khi sử dụng hàm, ta phải khai báo đối số theo thứ tự ưu tiên đối số/tham số xác đinh, tiếp theo là *args và cuối cùng là **kwargs.  Đây là thứ tự bắt buộc. Và khi truyền tham số bạn cũng phải truyền theo đúng thứ tự này. Không thể truyền lẫn lộn giữa 2 loại.

    Khi sử dụng đồng thời *args**kwargs thì không thể truyền tham số bình thường theo tên

    def show_detail(name, *args, **kwargs):
    ...
    
    show_detail(name='Coulson', 'agent', age='40', level='A')
    >>> Lỗi
    
    def show_detail_2(name, **kwargs):
    ...
    
    show_detail_2(name=Coulson', age='40', level='A')
    >>> Chạy OK

    6. Lời gọi đệ quy đến hàm trong Python

    Một hàm có thể gọi lại chính nó, lúc này ta gọi là các lời gọi đệ quy[3] recursion.

    Ví dụ, cho cấp số cộng un với u1 = 5 và công sai d = 7 thì, chẳng hạn, muốn tìm số hạng thứ 20 ta lấy số hạng thứ 19 cộng thêm 7, nhưng muốn tính số hạng thứ 19 ta lại phải lấy số hạng thứ 18 cộng thêm 7 và cứ như thế cho đến số hạng thứ nhất thì đã có sẵn u1 = 5. Tổng quát, ta có công thức truy hồi như sau

    Nếu ta viết hàm cap_so_cong(n) để tính số hạng thứ n thì trong bản thân hàm này sẽ gọi lại chính nó với tham số truyền vào là n - 1:

    def cap_so_cong(n):
          if n == 1:
                return 5
          else:
                return cap_so_cong(n-1) + 7

    Lúc này, để tìm số hạng thứ n ta chỉ việc gọi hàm và truyền vào tham số n, chẳng hạn tính số hạng thứ 50 thì gọi hàm và truyền vào cho nó tham số n = 50, cap_so_cong(50):

    >>> cap_so_cong(50)
    348

    Một hàm có thể gọi lại chính nó nhiều lần, ví dụ, chúng ta xét dãy số Fibonacci

    Chúng ta có chương trình như sau

    def fibonacci(n):
          if n == 1 or n == 2:
                return 1
          else:
                return fibonacci(n-1) + fibonacci(n-2)

    Khi chạy chương trình, thử tìm số Fibonacci thứ 30 ta được kết quả

    >>> fibonacci(30)
    832040

    Tuy nhiên, trong lập trình, chúng ta nên hạn chế các lời gọi đệ quy, vì như thế chương trình sẽ cần rất nhiều bộ nhớ, chẳng hạn, ta tìm số Fibonacci thứ 100 thôi đã phải đợi rất lâu, vì bản thân mỗi lần gọi hàm, chương trình sẽ gọi lại chính nó hai lần và cứ như thế, do đó số lượng lời gọi hàm sẽ tăng lên rất nhiều với tốc độ cấp số nhân!

    Bài tập

    • Viết hàm cap_so_nhan(n) để tìm số hạng thứ n của một cấp số nhân với số hạng đầu bằng 7 và công bội bằng 2.
    • Viết hàm giai_thua(n) để tính giai thừa[4] của số tự nhiên n, chẳng hạn giai_thua(6) trả về kết quả 720.
    • Tìm tất cả các số tự nhiên hai chữ số mà khi đảo trật tự của hai chữ số đó sẽ thu được một số nguyên tố cùng nhau với số đã cho.
    • Tìm các số tự nhiên lẻ có ba chữ số. Ba chữ số này, theo trật tự từ trái qua phải tạo thành một cấp số cộng.
    • Tìm các số tự nhiên có ba chữ số. Ba chữ số này, theo trật tự từ trái qua phải tạo thành một cấp số nhân với công bội là một số tự nhiên khác 0.

    7. Biến toàn cục, biến cục bộ

    Trong Python không có sự phân biệt giữa tham số và tham số giá trị như trong ngôn ngữ khác, Pascal chẳng hạn, nên tất cả các giá trị được truyền vào một hàm chúng ta đều gọi là tham số của hàm. Ở đây, chúng ta chỉ cần phân biệt khái niệm biến toàn cục global và biến cục bộ (biến địa phương) local mà thôi.

    Một biến được định nghĩa bên trong một hàm chỉ có thể được sử dụng bên trong hàm đó và được gọi là biến cục bộ. Các tham số và biến cục bộ này chỉ được phép sử dụng bởi các lệnh nằm bên trong hàm. Khi hàm được thực thi thì biến sẽ tồn tại và sẽ bị hủy khi chúng ta thoát khỏi hàm.

    a = 1
    def bien_cuc_bo(a):
        a = 5
        print(a)
    
    bien_cuc_bo(a) # chương trình  trả về kết quả là 5
    print(a) #chương trình vẫn trả về kết quả là 1

    Nhưng nếu như biến mà có kiểu dữ liệu là list thì những thay đổi bên trong hàm sẽ được giữ lại.

    a = [0, 5, 10, 15]
    def bien_cuc_bo(a):
        a[1] = 100
        print(a)
    
    bien_cuc_bo(a) # chương trình  trả về kết quả là [0, 100, 10, 15]
    print(a) #chương trình vẫn trả về kết quả là [0, 100, 10, 15]

    Để ghi nhận lại những thay đổi giá trị của một biến do các câu lệnh bên trong hàm tạo nên, chúng ta có thể sử dụng từ khóaglobal (biến toàn cầu, biến toàn cục). Khi một biến được khai báo là global thì chúng ta có thể gọi và thay đổi giá trị của nó từ bất kỳ đâu trong chương trình, kể cả trong thân hàm. Lưu ý rằng biến toàn cục chỉ có thể khai báo bên trong hàm và nó không thể là tham số/đối số của hàm.

    Như ví dụ sau, biến a lúc đầu có giá trị là 1, và trong hàm a được khai báo global đồng thời nhận giá trị mới là 5 thì ra bên ngoài hàm, giá trị mới này vẫn được ghi lại chứ không như ví dụ trước.

    a = 1
    def bien_toan_cuc():
       global a
       a = 5
       print(a)
    
    bien_toan_cuc() # chương trình  trả về kết quả là 5
    print(a) #chương trình vẫn trả về kết quả là 5

    8. Hàm nặc danh

    Chúng ta sử dụng từ khoá lambda được dùng để tạo một hàm số nặc danh (một hàm số không có tên). Nó là một hàm số trên một dòng và không có câu lệnh return. Nó chỉ bao gồm một biểu thức mà kết quả của biểu thức này chính là giá trị trả về của hàm. Ví dụ:

    a = lambda x: x*2
    for i in range(1,6):
          print(a(i))

    Kết quả

    2
    4
    6
    8
    10

    Ở đây, chúng ta tạo ra một hàm số chỉ trong một dòng lệnh, nó được dùng để nhân đôi giá trị của đối số nhận vào, sử dụng câu lệnh lambda. Sau đó, chúng ta dùng hàm này để nhân đôi các giá trị của một danh sách các số nguyên từ 1 đến 5.

    Mời bạn xem chi tiết trong bài Hàm ẩn danh trong Python

    [1]Bạn chỉ có thể tái sử dụng bằng cách Copy – Paste mà thôi 🙂

    [2]Xem phần đệ quy hàm để rõ hơn.

    [3]Thực ra, thử tìm hiểu từ đệ quy thì thấy rất khó hiểu, ta cứ hiểu nôm na như là phép quy nạp trong Toán học.

    [4]Giai thừa của một số tự nhiên n, kí hiệu là n!, được tính bởi công thức

  • Kiểu dữ liệu tập hợp set trong Python

    Kiểu dữ liệu tập hợp set trong Python

    Kiểu dữ liệu tập hợp set trong Python

    Trong toán học, là khái niệm không thể định nghĩa. Ta hiểu tập hợp như sự tụ tập các đối tượng nào đó, mà ta gọi là các phần tử. Kiểu dữ liệu tập hợp set trong Python cũng giống như vậy, là một tập các phần tử trong đó mỗi phần tử chỉ xuất hiện đúng một lần. Hiểu đơn giản như kể tên các học sinh trong một lớp, mỗi học sinh đương nhiên chỉ được kể một lần, và ta không cần theo thứ tự nào cả; lúc này, ta cần đến kiểu tập hợp.

    1. Cách khai báo kiểu tập hợp set trong Python

    Để tạo một tập hợp set ta có cú pháp khá giống với kiểu từ điển dictionary, với các phần tử trong cặp ngoặc nhọn cách nhau bởi dấu phẩy. Tuy nhiên, mỗi phần tử của set là một giá trị (thay cho một cặp giá trị như với dictionary), ví dụ:

    >>> A = {1, 7, 2, 6, 4, 5}
    >>> my_set = {1.0, "Hello", (1, 2, 3)}
    >>> my_set
    {1.0, 'Hello', (1, 2, 3)}

    Kiểu tập hợp set trong Python có các đặc điểm sau:

    • Các phần tử của tập hợp được đặt trong cặp ngoặc nhọn {} các phần tử phân cách bởi dấu phẩy ,.
    • Mỗi phần tử chỉ xuất hiện một lần cho dù bạn có nhập nó nhiều lần.
    • Kiểu tập hợp set cũng có các phép lấy hợp, lấy giao như trong Toán học.
    • Để tạo một tập hợp s rỗng, bạn cần dùng hàm không có thông số s = set(). Vì sử dụng s = {} sẽ tạo một từ điển dictionary rỗng.

    Tập hợp set là dữ liệu thay đổi được mutable, tuy nhiên bản thân mỗi phần tử trong set thì lại không thể thay đổi immutable được. Tức là, các phần tử của một set chỉ có thể là các kiểu dữ liệu không thay đổi được immutable như các kiểu số, kiểu chuỗi… mà không thể là kiểu danh sách, từ điển. Như ví dụ sau, chúng ta cố gắng gán một phần tử của tập my_set là một danh sách [3, 4] thì Python báo lỗi kiểu dữ liệu ngay lập tức.

    >>> my_set = {1, 2, [3, 4]}
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'

    Python cũng có loại tập hợp không thay đổi được immutable set gọi là frozenset.

    Truy cập các phần tử của một tập hợp set trong Python

    Bạn không thể truy cập các phần tử trong một tập hợp bằng cách sử dụng chỉ mục index như kiểu danh sách list, nhưng bạn có thể duyệt qua lần lượt các phần tử của nó bằng cách sử dụng vòng lặp for  cùng với toán tử in để kiểm tra một đối tượng nào đó có thuộc về tập hợp đã cho không.

    >>> thisset = {"apple", "banana", "cherry"}
    >>> for x in thisset:
    ...     print(x)
    ...
    cherry
    banana
    apple

    2. Các toán tử và phương thức trên kiểu tập hợp set

    Giả sử S, S1S2 là các tập hợp, x là một phần tử:

    2.1. Toán tử in

    Sử dụng cú pháp x in S để kiểm tra phần tử x có nằm trong tập S hay không. Trả về kết quả True nếu tập S chứa phần tử x, False nếu S không chứa x.

    >>> S = {1, 3, 2, 8, 10}
    >>> 1 in S
    True
    >>> 4 in S
    False

    2.2. Hàm len()

    Hàm len(S)trả về số lượng phần tử của tập S, kết quả trả về là một số nguyên không âm.

    >>> S = {1, 3, 2, 8, 10}
    >>> len(S)
    5
    >>> A = set() #tập A là tập rỗng
    >>> len(A)
    0

    2.3. Các phương thức add, remove, discard, pop, clear

    • Phương thức <tap_hop>.add(x) sẽ thêm phần tử x vào tập <tap_hop>.
    • Phương thức <tap_hop>.update(<danh_sách>)sẽ thêm các phần tử của <danh_sách> vào <tập_hợp>. Có thể thay <danh_sách> bởi các dữ liệu kiểu liệt kê như tập hợp set, bộ tuple
    • Phương thức <tap_hop>.remove(x)<tap_hop>.discard(x) sẽ xóa phần tử x khỏi tập <tap_hop>.
    • Phương thức <tap_hop>.pop() trả về phần tử đứng đầu tiên trong tập <tap_hop> đồng thởi xóa phần tử đó khỏi tập <tap_hop>.
    >>> thisset = {2, 'banana', 'cherry', 'apple', 1, 3}
    >>> thisset
    {1, 2, 3, 'banana', 'cherry', 'apple'}
    >>> thisset.pop()
    1
    >>> thisset.pop()
    2
    >>> thisset.pop()
    3
    >>> thisset.pop()
    'banana'

    Chú ý rằng, tập hợp không được đánh chỉ mục nên bạn sẽ không thể biết được phần tử nào đứng đầu tiên, Python có quy luật riêng để quyết định phần tử nào đứng đầu tiên. Như trong ví dụ trên, bạn nhập vào phần tử 2 đầu tiên, nhưng Python lại lưu trong bộ nhớ phần tử 1 ở vị trí đầu tiên.

    • Phương thức <tap_hop>.clear() xóa tất cả các phần tử của tập <tap_hop>.
    >>> S = {1, 2, 3, 4, 5, 6}
    >>> S.add(100) #Thêm phần tử 100 vào tập S
    >>> S
    {1, 2, 3, 4, 5, 6, 100}
    >>> S.remove(1) #Xóa phần tử 1 khỏi tập S
    >>> S
    {2, 3, 4, 5, 6, 100}
    >>> S.pop() #Lấy ra phần tử đầu tiên của tập hợp
    2
    >>> S
    {3, 4, 5, 6, 100}
    >>> S.discard(6)
    >>> S
    {3, 4, 5, 100}
    >>> S.clear() #Xóa hết mọi phần tử của S, lúc này S trở thành rỗng
    >>> S
    set()

    Chú ý rằng hai thủ tục remove(x)discard(x) cùng xóa đi phần tử x, nhưng sự khác nhau ở đây là nếu tập S không tồn tại phần tử x thì phương thức:

    • remove(x) sẽ trả về kết quả None.
    • discard(x) sẽ trả về lỗi KeyError.

    Hãy xem ví dụ sau để hiểu rõ hơn.

    >>> S = {'a', 'b', 'c', 'd'}
    >>> S.discard('e') #Không hiển thị gì, dùng print để xem kết quả
    >>> print(S.discard('e'))
    None
    >>> S.remove('e')
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    KeyError: 'e'

    2.3. Các phép toán trên kiểu tập hợp set trong Python

    Phép lấy hiệu hai tập hợp set trong Python

    Phép lấy hiệu hai tập hợp S1S2, sử dụng cú pháp S1-S2 hoặc S1.difference(S2). Kết quả trả về là một tập mới chứa các phần tử thuộc tập S1 và không thuộc tập S2. Một phép toán tương tự là S1.symmetric_difference(S2) hoặc S1^S2 có tác dụng như S2 – S1.

    >>> S1 = {1, 2, 3, 4, 5, 6}
    >>> S2 = {0, 2, 4, 6, 8, 10}
    >>> S1 – S2
    {1, 3, 5} #Hiệu của tập S1 và S2

    Phép lấy hợp hai tập hợp set trong Python

    Sử dụng cú pháp S1|S2 hoặc S1.union(S2) để lấy hợp hai tập hợp S1S2. Kết quả trả về một tập mới chứa tất cả các phần tử thuộc tập S1 và tất cả các phần tử thuộc tập S2. Đương nhiên, nếu phần tử nào đó thuộc cả hai tập hợp thì chỉ được kể một lần.

    >>> S1 = {1, 2, 3, 4, 5, 6}
    >>> S2 = {0, 2, 4, 6, 8, 10}
    >>> S1|S2
    {0, 1, 2, 3, 4, 5, 6, 8, 10} #Hợp của S1 và S2

    Phép lấy giao hai tập hợp set trong Python

    Sử dụng cú pháp S1 & S2 hoặc S1.intersection(S2) để lấy giao hai tập hợp S1S2. Kết quả trả về một tập mới chứa tất cả các phần tử thuộc đồng thời cả hai tập S1S2. Tức là các phần tử chung của hai tập hợp đó.

    >>> S1 = {1, 2, 3, 4, 5, 6}
    >>> S2 = {0, 2, 4, 6, 8, 10}
    >>> S1&S2
    {2, 4, 6} #Giao của S1 và S2 gồm ba phần tử 2, 4, 6

    Toán tử kiểm tra tập con

    Để kiểm tra tập S1 có là tập con của S2 hay không, ta sử dụng cú pháp S1<= S2 hoặc S1.issubset(S2). Kết quả trả về là kiểu Boolean True nếu đúng và False nếu sai. Nhắc lại rằng, tập S1 là tập con của S2 nếu mọi phần tử của S1 đều là phần tử của S2 (tức là cũng thuộc tập S2).

    >>> S1 = {1, 2, 3, 4, 5, 6, 7}
    >>> S2 = {1, 2, 5}
    >>> S3 = {1, 2, 5, 9}
    >>> S4 = set()
    >>> S1.issubset(S1) #Mọi tập đều là tập con của chính bản thân nó
    True
    >>> S2.issubset(S1)
    True
    >>> S3.issubset(S1)
    False
    >>> S4.issubset(S1) #Tập rỗng là tập con của mọi tập hợp
    True

    Ngược lại của tập con, chúng ta có thể sử dụng S1 >= S2 hoặc S1.issupperset(S2) để kiểm tra S1 có là tập cha của (tức là có chứa) S2 hay không, trả về True nếu đúng và False nếu sai. Tập S1 là tập cha của S2 nếu mọi phần tử của S2 đều thuộc tập S1.

    >>> S1 = {1, 2, 3, 4, 5, 6, 7}
    >>> S2 = {1, 2, 5}
    >>> S3 = {1, 2, 5, 9}
    >>> S4 = set()
    >>> S1.issupperset(S1) #Mọi tập đều là tập cha của chính bản thân nó
    True
    >>> S1.issupperset(S2)
    True
    >>> S1.issupperset(S3)
    False
    >>> S1.issupperset(S4)
    True

    Tập con thực sự, tập cha thực sự

    Sử dụng cú phsp S1<S2S1>S2 để kiểm tra S1 có là tập con thực sự, tập cha thực sự của S2 hay không. Tập S1 là tập con thực sự của S2 nếu S1 là tập con của S1 nhưng S1S2 không bằng nhau. Tương tự đối với khái niệm tập cha thực sự.

    3. Bài tập kiểu tập hợp set trong Python

    Bài 1. Cô giáo Thảo thống kê chiều cao của các học sinh trong lớp 12A được kết quả như sau:

    161 182 161 154 176 170 167 171 170 174 150 142 148
    165 170 178 156 145 149 163 162 159 165 165 170 180
    155 159 155 153 152 162 180 168 169 168 167 170
    1. Hỏi lớp có bao nhiêu học sinh?
    2. Tính chiều cao trung bình của các học sinh trong lớp.
    3. Liệt kê các chiều cao khác nhau của học sinh trong lớp. Tính giá trị trung bình của chúng.

    Bài 2. Liệt kê tập hợp S gồm các kí tự của câu sau, kể cả dấu cách trắng:

    Mọc giữa dòng sông xanh
    Một bông hoa tím biếc
    Ơi con chim chiền chiện
    Hót chi mà vang trời
    Từng giọt long lanh rơi
    Tôi đưa tay hứng về.

    Tập hợp S có bao nhiêu phần tử. Thêm vào tập S các phần tử là các kí tự xuất hiện trong câu sau
    tôi rất nghèo tiền bạc, chỉ giàu thời gian thôi.

    Bài 3. Cho tập hợp A gồm có các phần tử sau, mỗi phần tử cách nhau bởi dấu cách trắng:

    1 a 5 7 f 0 89 g i 11 88 3 p

    Liệt kê các tập con có hai phần tử của tập hợp A. Có tất cả bao nhiêu tập con như vậy.

    Bài 4. Một lớp có 40 học sinh trong đó có 10 bạn học tiếng Pháp, 14 bạn học tiếng Anh, 6 bạn học cả hai thứ tiếng đó. Hỏi có bao nhiêu học sinh không học tiếng Pháp mà cũng không học tiếng Anh.

    Bài 5.  Trong một lớp học mỗi học sinh đều chơi thể bóng đá hoặc bóng chuyền. Có 25 học sinh chơi bóng đá, 27 học sinh chơi bóng chuyền và 18 học sinh chơi cả hai. Hỏi lớp đó có bao nhiêu học sinh?

  • Kiểu dữ liệu list danh sách trong Python

    Kiểu dữ liệu list danh sách trong Python

    Kiểu dữ liệu list danh sách trong Python

    Danh sách trong Python kí hiệu là list, hiểu đơn là một tập hợp các đối tượng có chung một tính chất nào đó. Ví dụ danh sách các món ăn trên bàn tiệc, danh sách các bài hát của một album, danh sách học sinh trong một lớp học…

    Ta thấy ngay, mỗi danh sách đều gồm có các phần tử khác nhau, để liệt kê chúng, chẳng hạn liệt kê các thực phẩm cần mua cho bữa liên hoan, bạn sẽ sử dụng dấu phẩy để ngăn cách các phần tử này. Python cũng vậy, tuy nhiên, các danh sách các phần tử cần được đặt trong cặp ngoặc vuông [].

    1. Giới thiệu kiểu danh sách trong Python

    Để khai báo một danh sách, chúng ta dùng liệt kê các phần tử của danh sách, được đặt trong cặp ngoặc vuông [], các phần tử được ngăn cách nhau bởi dấu phảy ,. Mỗi phần tử trong danh sách có thể có kiểu bất kỳ như str, float, hay int

    Ví dụ sau tạo một danh sách mon_an gồm có các phần tử kiểu xâu str là các món canh cua, cà pháo, cá khothịt rán.

    >>> mon_an = ['canh cua', 'ca phao', 'ca kho', 'thit ran']

    Một danh sách không có thể phần tử, gọi là danh sách rỗng.

    >>> ban_gai = []
    >>> ban_gai
    []

    Để truy cập vào một phần tử của danh sách list trong Python, ta dùng tên danh sách theo sau là chỉ số index của phần tử đó được đặt trong cặp ngoặc vuông.

    >>> mon_an[3]
    'thit ran'

    Cũng giống như kiểu xâu str, các chỉ số index của một danh sách list được đánh số bắt đầu từ 0. Kiểu danh sách có thể hiểu gần giống như kiểu mảng array trong các ngôn ngữ lập trình khác.

    Không như kiểu xâu str, là những đối tượng immutable, thì kiểu danh sách là đối tượng mutable, tức ta có thể thay đổi các phần tử của một danh sách. Chẳng hạn, thay cà pháo bằng dưa muối, ta sẽ gán giá trị mới cho phần tử mon_an[1].

    >>> mon_an[1] = 'dua muoi'
    >>> mon_an
    ['canh cua', 'dua muoi', 'ca kho', 'thit ran']

    2. Các phép toán và phương thức của kiểu danh sách

    Cũng giống như kiểu xâu str, kiểu danh sách list cũng có các phép toán và phương thức đặc thù. Chúng ta sẽ lần lượt tìm hiểu các toán tử và phương thức/hàm của kiểu danh sách trong Python.

    2.1. Toán tử in

    Toán tử in dùng để kiểm tra xem một phần tử có nằm trong danh sách hay không, kết quả trả về của toán tử này là kiểu boolean đúng True hoặc sai False.

    >>> mon_an = ['canh cua', 'ca phao', 'ca kho', 'thit ran']
    >>> 'canh cua' in mon_an
    True
    >>> 3000 in mon_an
    False

    Bạn cũng có thể sử dụng toán tử in để duyệt danh sách trong vòng lặp for như sau.

    >>> for i in mon_an:
    ...     print(i)
    ...
    canh cua
    ca phao
    ca kho
    thit ran

    2.2. Toán tử +

    Toán tử + cho phép ghép nối hai danh sách với nhau. Lưu ý rằng toán tử + này tương tự phép cộng hai xâu (chuỗi, string) chứ không giống như toán tử cộng các số.

    >>> a = [1, 2, 3]
    >>> b = ['x', 'y', 'z', 'a']
    >>> a + b
    [1, 2, 3, 'x', 'y', 'z', 'a']

    2.3. Toán tử *

    Tương tự toán tử * dùng để lặp lại các phần tử trong danh sách lên k lần.

    >>> a = [0] * 4
    >>> a
    [0, 0, 0, 0]

    2.4. Phương thức append()

    Phương thức <ds>.append(<pt>) này sẽ thêm phần tử <pt> vào cuối danh sách <ds>.

    >>> ds = [1, 2, 3, 4]
    >>> ds.append(5)
    >>> ds
    [1, 2, 3, 4, 5]

    2.5. Phương thức extend()

    Phương thức <ds1>.extend(<ds2>) này sẽ thêm các phần tử của danh sách <ds2> vào cuối của danh sách <ds1>

    >>> l1 = [1, 2, 3]
    >>> l2 = [4, 5, 6, 7]
    >>> l1.extend(l2)
    >>> print(l1)
    [1, 2, 3, 4, 5, 6, 7]

    2.6. Phương thức sort()

    Phương thức <ds>.sort() giúp sắp xếp các phần tử của danh sách <ds> theo thứ tự phần tử từ nhỏ đến lớn, đối với kiểu chuỗi thì sắp theo thứ tự alphabet. Lưu ý rằng các phần tử của danh sách phải thuộc cùng một kiểu dữ liệu, cùng kiểu chuỗi hoặc cùng kiểu số…, tức là các phần tử của danh sách phải so sánh được với nhau.

    >>> ds_so = [1, 5, 7, 3, 2, 9]
    >>> ds_so.sort()
    >>> ds_so
    [1, 2, 3, 5, 7, 9]
    >>> ds_xau = ['a', 'e', 'b', 'g', 'i', 'Aa']
    >>> ds_xau.sort()
    >>> ds_xau
    ['Aa', 'a', 'b', 'e', 'g', 'i']

    2.7. Phương thức pop()

    Phương thức <ds>.pop(i) xóa phần tử có chỉ số i của danh sách <ds>, kết quả trả về chính là giá trị của phần tử có chỉ số i đó. Nhắc lại rằng, các phần tử của danh sách được đánh chỉ số từ 0

    >>> ds = [1, 5, 7, 3, 2, 9]
    >>> ds.pop(1)
    5
    >>> ds
    [1, 7, 3, 2, 9]

    2.8. Toán tử del

    Toán tử del <ds>[i] để xóa phần tử có chỉ số i của danh sách <ds> hoặc del <ds>[i:j] một phần của danh sách từ chỉ sối đến chỉ số j.

    >>> ds = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> del ds[0]
    >>> ds
    [2, 3, 4, 5, 6, 7, 8, 9]
    >>> del ds[1:3]
    >>> ds
    [2, 5, 6, 7, 8, 9]

    2.9. Phương thức remove()

    Phương thức pop() xóa bỏ phần tử của danh sách dựa trên chỉ số của phần tử đó, thì phương thức <ds>.remove(<pt>) sẽ xóa bỏ phần tử có giá trị <pt> đầu tiên của danh sách <ds> khỏi danh sách đó. Giá trị trả về của phương thức remove()None.

    ds = [1, 2, 3, 4, 5, 6, 7, 8, 8, 9]
    >>> ds.remove(8)
    >>> ds
    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    Nếu bạn muốn xóa bỏ tất cả các phần tử có giá trị <pt> khỏi danh sách <ds>, có thể làm như sau:

    >>> ds = [1, 2, 3, 4, 5, 6, 7, 8, 8, 9]
    >>> while 8 in ds: ds.remove(8)
    >>> ds
    [1, 2, 3, 4, 5, 6, 7, 9]

    3. Xử lý danh sách trong Python

    Các thao tác thường được thực hiện trên list trong Python là xử lý từng phần tử của list, lọc lấy một số phần tử thỏa điều kiện nào đó, tính toán trên tất cả các phần tử của list.

    Để đơn giản việc xử lý danh sách list, Python hỗ trợ một số hàm có sẵn để thực hiện các tác vụ trên gồm map(), filter(), reduce()

    3.1. Hàm map() để xử lý danh sách trong Python

    Sử dụng câu lệnh map(func, seq) sẽ áp dụng hàm func cho mỗi phần tử của seq và trả về list kết quả.

    Ví dụ, tính bình phương các số có trong list a sử dụng map():

    a = [1, 2, 3, 4, 5]
    def binh_phuong(x):
       return x*x
    print(list(map(binh_phuong,a)))

    Có thể sử dụng hàm nặc danh lamda thay vì viết riêng một hàm binh_phuong.

    >>> a = [1, 2, 3, 4, 5]
    >>> print(list(map(lambda x: x*x, a)))
    [1, 4, 9, 16, 25]

    Thêm một ví dụ nữa, chúng ta sẽ cộng tương ứng từng phần tử của hai danh sách có cùng số lượng phần tử:

    numbers1 = [1, 2, 3] 
    numbers2 = [4, 5, 6] 
      
    result = map(lambda x, y: x + y, numbers1, numbers2) 
    print(list(result))

    3.2. Hàm filter() xử lý kiểu dữ liệu danh sách trong Python

    Hàm filter(func, list) sẽ  lần lượt gọi hàm func với tham số lần lượt là từng phần tử của danh sách list và trả về danh sách gồm các phần tử thỏa mãn hàm func. Lưu ý rằng hàm func phải là hàm mà kết quả trả về thuộc kiểu Boolean True hoặc False, tức là hàm func như là một hàm điều kiện để lọc ra các phần tử của danh sách list thỏa mãn điều kiện đó.

    Ví dụ lọc ra các số chẵn từ danh sách a.

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    def so_chan(number):
       if number % 2 == 0:
          return True
       else:
          return False
    
    print (list(filter(so_chan, a)))

    Hoặc, sử dụng hàm nặc danh lambda, ta có thể viết chương trình gọn hơn như sau:

    >>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> print (list(filter(lambda x: x%2 == 0, a)))
    [2, 4, 6, 8]

    Thêm một ví dụ nữa, sử dụng hàm filter() để in ra các nguyên âm trong một danh sách:

    def nguyen_am(x): 
        ds_nguyen_am = ['a', 'e', 'i', 'o', 'u'] 
        if (x in ds_nguyen_am): 
            return True
        else: 
            return False
    
    ds = ['g', 'e', 'e', 'j', 'k', 's', 'p', 'r'] 
      
    kq = filter(nguyen_am, ds) 
    
    for s in kq: 
        print(s)

    3.3. Hàm reduce() xử lý kiểu dữ liệu danh sách trong Python

    Hàm reduce(func, <ds>) sẽ tính toán, áp dụng hàm func với các phần tử của danh sách và trả về kết quả của.

    Hàm func là một hàm nhận vào 2 tham số có dạng func(arg1, arg2) trong đó arg1 là kết quả tính toán với các phần tử trước, arg2 là giá trị của phần tử của danh sách đang được tính toán.

    Cách thức hoạt động của hàm reduce() chi tiết như sau:

    • Ở bước đầu tiên, hai phần tử đầu tiên của danh sách <ds> được lấy và cung cấp cho hàm func thu được một kết quả kq.
    • Bước tiếp theo, hàm func nhận tham số là kết quả kq đạt được ở bước trước và phần tử tiếp theo của danh sách <ds>, kết quả tính toán lại được sử dụng như một tham số cho bước tiếp theo.
    • Quá trình này tiếp tục cho đến khi không còn phần tử nào trong danh sách <ds>.
    • Kết quả trả về của hàm reduce() là kết quả ở bước cuối cùng của hàm func.

    Lưu ý rằng, hàm reduce nằm trong thư viện functools, nên cần phải khai báo import functools trước khi sử dụng hàm reduce().

    Ví dụ sau in ra tổng các giá trị của danh sách và phần tử lớn nhất của danh sách.

    from functools import *
      
    ds = [ 1 , 3, 5, 6, 2, ] 
    
    print ("Tong cac phan tu cua danh sach la: ",end="") 
    print (reduce(lambda a,b : a+b, ds)) 
      
    
    print ("Phan tu lon nhat cua danh sach la: ",end="") 
    print (reduce(lambda a,b : a if a > b else b, ds))

    Ví dụ tính tổng bình phương của các phần tử trong danh sách a

    a = [1, 2, 3, 4, 5]
    
    def tong_binh_phuong(kq, x):
       return kq + x*x
    
    print(reduce(tong_binh_phuong, a))

    4. Danh sách của danh sách, kiểu danh sách nhiều chiều trong Python

    Các phần tử của một danh sách danh sách trong Python lại có thể là một danh sách, chẳng hạn

    >>> A = [[1,2,3], [4,5,6], [7,8,9,10,11]]
    >>> A[1]
    [4, 5, 6]
    >>> A[1][2]
    6
    >>> A[2][4]
    11
    >>> A[1][5]
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    IndexError: list index out of range

    Danh sách A gồm có ba phần tử, mỗi phần tử lại là một danh sách [1,2,3], [4,5,6], [7,8,9,10,11]. Khi đó, để truy cập đến phần tử j của danh sách A[i] nằm trong danh sách  A ta dùng cú pháp A[i][j].

    Kiểu dữ liệu này tương ứng với kiểu mảng hai chiều array, hoặc là ma trận, trong các ngôn ngữ khác. Tuy nhiên, nếu một ma trận thì, nếu xét riêng từng dòng, bắt buộc các dòng phải có số cột như nhau. Nhưng ở đây thì khác, nếu ta viết lại list A ở trên, mỗi phần tử viết trên một dòng thì ta sẽ có dạng gần giống ma trận, do số cột của từng dòng là khác nhau

    [1,2,3]
    [4,5,6]
    [7,8,9,10,11]

    Rõ ràng, kiểu danh sách của danh sách này linh hoạt hơn – nhưng cũng đồng nghĩa với khó kiểm soát hơn – kiểu mảng hai chiều trong các ngôn ngữ khác.

    5. Danh sách và chuỗi

    Bạn có thể kết hợp danh sách và chuỗi để tách các ký tự trong chuỗi thành một danh sách, sử dụng hàm ép kiểu list() như sau.

    >>> s = 'phan van phuong'
    >>> list(s)
    ['p', 'h', 'a', 'n', ' ', 'v', 'a', 'n', ' ', 'p', 'h', 'u', 'o', 'n', 'g']
    Hoặc có thể tách một chuỗi thành danh sách gồm các phần tử cách nhau bởi <kí_tự_tách> bằng hàm split(<kí_tự_tách>), mặc định <kí_tự_tách> là khoảng trắng.
    >>> s = 'phan van phuong'
    >>> s.split()
    ['phan', 'van', 'phuong']
    >>> s.split('n')
    ['pha', ' va', ' phuo', 'g']

    6. Bài tập kiểu list danh sách trong Python

    Bài 1. Cho một list các số nguyên. Viết chương trình tìm phần tử lớn nhất của list đó.

    Bài 2. Cho một list các số nguyên. Viết chương trình in ra tất cả các phần tử lớn là số chẵn và lớn hơn 10 của list đó.

    Bài 3. Viết chương trình tính số trung bình các giá trị của một list số nguyên.

    Bài 4. Tạo một list gồm n số nguyên không âm ngẫu nhiên.

    Xem thêm về các kiểu dữ liệu list (danh sách trong Python) tại https://www.w3schools.com/python/python_lists.asp

  • Chuỗi trong Python (Kiểu xâu string trong Python)

    Chuỗi trong Python (Kiểu xâu string trong Python)

    Kiểu xâu trong Python kí hiệu là str, nó còn được gọi là kiểu chuỗi trong Python. Đây là một kiểu dữ liệu chúng ta thường gặp nhất, dùng để biểu thị các kí tự, các từ, các câu văn… Tải ebook đầy đủ tại đây: 15 Cuốn sách học Python miễn phí

    Xem thêm:

    1. Giới thiệu về string – chuỗi trong Python

    • Để tạo một string, chúng ta có thể dùng một cặp dấu nháy đơn ', cặp dấu nháy kép " hoặc cặp ba dấu nháy kép""".
    • Chuỗi 'xin chào' cũng giống như "xin chào" dù bạn có dùng cặp dấu nháy đơn hay nháy kép.
    • Khi dùng ba dấu nháy kép, chúng ta có thể viết stringchuỗi trong Python trên nhiều dòng mà không cần dùng ký tự thoát \. Lưu ý rằng, cặp dấu nháy dùng để mở và đóng chuỗi này phải cùng loại, cùng là nháy đơn, cùng là nháy kép chẳng hạn, không được trộn lẫn.
    >>> a = 'Xin chao'
    >>> a
    'Xin chao'
    >>> b = "Toi la Phu Ong"
    >>> b
    'Toi la Phu Ong'
    >>> c = """Day la string
    ... tren
    ... nhieu dong"""
    >>> c
    'Day la string\ntren\nnhieu dong'
    • Để sử dụng dấu nháy trong một string, bạn có thể bao nó bằng một cặp dấu nháy khác loại. Chẳng hạn muốn sử dụng dấu nháy kép, thì bạn đặt cả string đó vào trong cặp nháy đơn và ngược lại.
    >>> "I'm Phuong."
    "I'm Phuong."

    Một cách khác là sử dụng kí tự điều khiển \, chẳng hạn

    >>> 'I\'m Phuong'
    "I'm Phuong"
    >>> '\'\"'
    '\'"

    2. Gán chuỗi cho một biến

    Việc gán một chuỗi trong Python cho một biến được thực hiện với tên biến theo sau là dấu bằng và chuỗi, ví dụ

    >>> a = "Hello"
    >>> print(a)
    Hello

    3. Chỉ số index và cắt lát slice() chuỗi trong Python

    Giống như các ngôn ngữ lập trình khác, chuỗi trong Python cũng được đánh chỉ số của các kí tự từ 0. Chẳng hạn

    >>> s = "Phuong"
    >>> s[0]
    'P'
    >>> s[1]
    'h'

    Như ta thấy, xâu “Phuong” gồm có 6 kí tự, và kí tự đầu tiên là ‘P‘ ở vị trí s[0] chứ không phải là s[1].

    Để lấy ra một xâu con của xâu <string>, chúng ta sẽ chỉ ra chính xác vị trí bắt đầu và kết thúc của xâu con, sử dụng cú pháp

    <string>[i:j]

    trong đó, i là vị trí bắt đầu còn j là vị trí kết thúc của xâu con.

    s = '1234567abcde'
    >>> s[1:6]
    '23456'

    Nếu muốn lấy từ vị trí đầu tiên, ta có thể lược bỏ tham số i, còn muốn lấy đến vị trí cuối cùng của xâu ta có thể lược bỏ tham số j.

    >>> s = '1234567abcde'
    >>> s[:6]
    '123456'
    >>> s[6:]
    '7abcde'
    >>> s[:]
    '1234567abcde'

    Đấy là trong trường hợp chúng ta lấy theo chiều tăng của index, còn muốn lấy theo chiều giảm của chỉ số hoặc muốn lấy các kí tự ở những vị trí cách quãng nhau, ta dùng cú pháp

    <string>[i:j:k]

    trong đó, i là vị trí bắt đầu, j là vị trí kết thúc còn k là bước nhảy (có thể là số âm – để lấy theo chiều giảm của index).

    >>> s = '1234567abcde'
    >>> s[1:5:2]
    '24'
    >>> s[6:0:-1]
    '765432'

    Do đó, muốn đảo ngược một xâu, ta chỉ cần đơn giản là dùng cách lấy toàn bộ xâu đó với bước nhảy k bằng -1.

    >>> s = '1234567abcde'
    >>> s[::-1]
    'edcba7654321'

    Cần lưu ý rằng, kiểu xâu string là kiểu dữ liệu immutable không thay đổi được , tức là bạn không thể thay đổi được xâu đã tạo ra như một số ngôn ngữ khác, Pascal chẳng hạn, trừ khi bạn gán giá trị mới cho biến đã tạo đó. Để dễ hiểu, ta xét ví dụ xâu s = "Phu ong", chúng ta không thể thay đổi xâu s thành "phu ong" bằng phép gán s[0] = 'p' được. Lúc này, muốn thay đổi bắt buộc ta phải gán đè nội dung mới cho biến s, và đương nhiên một biến s mới sẽ được tạo ra tại một địa chỉ bộ nhớ mới. Để hiểu rõ hơn, xin mời xem ví dụ sau đây.

    >>> s = 'Phu Ong'
    >>> id(s)
    2281456950328
    >>> s[0]
    'P'
    >>> s[0] = 'p'
    Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
    TypeError: 'str' object does not support item assignment
    >>> s = 'phu ong'
    >>> id(s)
    2281456951056
    >>> s += ' is my name!'
    >>> s
    'phu ong is my name!'
    >>> id(s)
    2281456947112

    Đầu tiên khi khởi tạo biến s = 'Phu Ong' thì máy tính sẽ tham chiếu định danh (biến) s đến vùng ô nhớ có địa chỉ 2281456950328, lưu ý rằng ở máy tính của bạn địa chỉ này có thể khác. Và chúng ta không thể sửa đổi nội dung xâu trong biến s này, chẳng hạn ta thử sửa chữ P thành p bằng phép gán s[0] = 'p', máy báo lỗi ngay. Sau đó, ta bắt buộc phải thực hiện phép gán mới, nếu muốn biến s tham chiếu đến nội dung khác, đương nhiên sẽ được lưu ở vùng bộ nhớ có địa chỉ mới, lần này là 2281456951056. Thậm chí, khi ta thực hiện các phép toán trên xâu s, tổng quát là các hàm, các phương thức, mà làm cho dữ liệu của biến s thay đổi, thì thực ra là máy đã tham chiếu tên biến s đến một vùng ô nhớ mới. Điều này khác hoàn toàn với kiểu dữ liệu mutable thay đổi được, kiểu danh sách list chẳng hạn. Để tìm hiểu kĩ hơn về kiểu danh sách xin mời xem phần sau.

    >>> L = [1, 3, 8]
    >>> id(L)
    2281456980424
    >>> L.append(2)
    >>> L
    [1, 3, 8, 2]
    >>> id(L)
    2281456980424

    Sau khi thực hiện phương thức thêm vào danh sách L phần tử 2 thì địa chỉ ô nhớ của biến L vẫn như cũ, không hề thay đổi.

    Trong Python có hai kiểu dữ liệu là không thay đổi được immutable và thay đổi được mutable. Kiểu dữ liệu immutable gồm có kiểu số nguyên int, kiểu số thực floatdecimal, kiểu số phức complex, kiểu logic bool, kiểu xâu string, kiểu bộ tuple, kiểu khoảng range, kiểu tập hợp đóng băng frozenset, kiểu số nguyên bytes. Còn kiểu mutable gồm có danh sách list, từ điển dict, tập hợp set, mảng số nguyên bytearray, và các lớp do người dùng định nghĩa (trừ trường hợp chỉ rõ lớp đó là immutable). Chúng ta sẽ lần lượt xét tính thay đổi được hay không của từng kiểu dữ liệu khi học đến chúng.

    Ưu điểm lớn nhất của kiểu immutable là máy tính sẽ sử dụng bộ nhớ đúng để biểu diễn dữ liệu của biến đó, như vậy sẽ tiết kiệm bộ nhớ hơn là việc phải dành sẵn một dung lượng bộ nhớ lớn hơn dữ liệu hiện tại biến đó đang tham chiếu đến.

    Ngoài cách dùng câu lệnh <string>[i:j], bạn cũng có thể dùng hàm slice() để cắt lát một phần của chuỗi (hàm slice() này có thể áp dụng không chỉ cho chuỗi mà cho các đối tượng khác có đánh chỉ số). Cú pháp là slice(stop) hoặc slice(start, stop, step)

    4. Tách và gộp chuỗi trong Python

    Phương thức <string>.("<kí tự>") dùng để tách <string> thành các xâu con, mà mỗi xâu con này phân cách nhau bởi kí tự <kí tự>. Kết quả trả về được đặt trong một danh sách list, bạn có thể xem phần kiểu dữ liệu danh sách ở phần sau để hiểu rõ hơn về danh sách. Nếu phương thức split này không có tham số truyền vào, thì mặc định, Python sẽ sử dụng dấu cách trắng để làm kí tự tách.

    >>> s = "We all love Python"
    >>> s.split(" ")
    ['We', 'all', 'love', 'Python']
    >>> s.split()
    ['We', 'all', 'love', 'Python']

    Ở ví dụ trên, chúng ta tách xâu thành các xâu con, mà mỗi xâu con được cách nhau bởi dấu cách trắng. Còn ví dụ sau chúng ta quy định kí tự để tách là dấu chấm.

    >>> pi = "3.1415926"
    >>> pi.split('.')
    ['3', '1415926']

    Đôi khi, chúng ta cần tách từng kí tự của một xâu, khi đó ta phải sử dụng phương pháp chuyển đổi một xâu sang danh sách, sử dụng hàm list(). Chẳng hạn

    >>> s = "Phuong"
    >>> list(s)
    ['P', 'h', 'u', 'o', 'n', 'g']

    Vấn đề này xin tìm hiểu thêm ở phần kiểu dữ liệu danh sách list.

    Ngược lại của tách, chúng ta có thể nối nhiều xâu thành một xâu bằng cách dùng phương thức , sử dụng cú pháp sau

    <kí tự nối>.join(<danh_sách>)

    Phương thức này sẽ nối các phần tử của <danh_sách> lại với nhau thành một xâu mới, giữa các phần tử của <danh_sách> ở trong xâu mới sẽ được cách nhau bởi <kí tự nối>.

    >>> "-".join(["Toi","la","Phu","Ong"])
    'Toi-la-Phu-Ong'

    5. Các phương thức khác của string chuỗi trong Python

    Đối với string kiểu xâu (kiểu chuỗi) trong Python, chúng ta có một số phương thức – hàm hay sử dụng sau đây:

    • Hàm <string>.title() dùng để chuyển các kí tự đầu của mỗi từ trong <string> thành kiểu chữ hoa.
    >>> s = "i'm phu ong"
    >>> s.title()
    "I'm Phu Ong"
    • Hàm <string>.upper() dùng để chuyển tất cả các kí tự trong chuỗi <string> thành kiểu chữ hoa.
    >>> s = "i'm phu ong"
    >>> s.upper()
    "I'M PHU ONG"
    • Hàm <string>.capitalize() dùng để chuyển chữ cái đầu tiên của chuỗi <string> thành kiểu chữ in hoa.
    • Hàm <string>.lower() dùng để chuyển tất cả các kí tự trong <string> thành kiểu chữ thường.
    >>> s = "I'm Phu Ong"
    >>> s.lower()
    "i'm phu ong"
    • Hàm <string>.swapcase() dùng để hoán đổi kí tự hoa thành thường và thường thành hoa cuủa tất cả các kí tự trong <string>.
    >> s = "I'm Phu Ong"
    >>> s.swapcase()
    "i'M pHU oNG"
    • Hàm <string>.center(length, character) trả về một chuỗi mới có độ dài length sẽ chứa chuỗi <string> được căn giữa, sử dụng kí tự character(mặc định là khoảng trắng) như ký tự lấp đầy.
    >>> s='phuong'
    >>> s.center(30,'.')
    '............phuong............'
    >>> s.center(30)
    '            phuong            '
    >>> s.center(30,'~')
    '~~~~~~~~~~~~phuong~~~~~~~~~~~~'
    • Hàm <string>.isalnum() dùng để kiểm tra xem <string> có chỉ gồm các kí tự thuộc bảng chữ cái a-Z hoặc chữ số 0-9 hay không, tức là có không chứa các kí tự đặc biệt như !@#$%… hay không.
    >>> s = "qwerty123"
    >>> s.isalnum()
    True
    >>> s = "qwerty$%"
    >>> s.isalnum()
    False

    Chú ý rằng, kể cả xâu của chúng ta có chứa kí tự cách trắng thì kết quả trả về cũng là False.

    • Tương tự, hàm <string>.digit() dùng để kiểm tra xem <string> có phải chỉ chứa các kí tự số 0-9 hay không.
    >>> s="123"
    >>> s.isdigit()
    True
    >>> s="123.45"
    >>> s.isdigit()
    False
    • Hàm <string>.alpha() dùng để kiểm tra xem <string> có phải chỉ chứa các kí tự thuộc bảng chữ cái a-Z hay không, kết quả trả về là kiểu Boolean. Ở ví dụ sau nếu xâu có chứa dấu cách thì kết quả trả về là False.
    >>> s="Alphabet"
    >>> s.isalpha()
    True
    >>> s="Alphabet ABC"
    >>> s.isalpha()
    False
    • Hàm <string>.islower()<string>.isupper() dùng để kiểm tra xem <string> có phải chỉ chứa các kí tự chữ thường/chữ hoa hay không. Tương tự, chúng ta cũng có hàm <string>.istitle() để kiểm tra xem các từ trong <string> có được viết hoa chữ cái đầu mỗi từ hay không.
    >>> s = 'Toi La Phu Ong'
    >>> s.isupper()
    False
    >>> s.islower()
    False
    >>> s.istitle()
    True
    • Hàm len(<string>) trả về độ dài (số lượng kí tự) của <string>.
    • Phương thức <string>.trip() dùng để loại bỏ các khoảng trắng (dấu cách, dấu Tab, kí tự xuống dòng) ở đầu và cuối xâu. Tương tự, phương thức sẽ loại bỏ các khoảng trắng ở bên trái của xâu, tức ở đầu xâu, còn sẽ loại bỏ ở cuối xâu.
    >>> s = ' Toi la Phu Ong \n'
    >>> s.strip()
    'Toi la Phu Ong'
    >>> s.lstrip()
    'Toi la Phu Ong \n'
    >>> s.rstrip()
    ' Toi la Phu Ong'

    Như ta thấy, kết quả trả về không ảnh hưởng gì tới biến s cả, vì biến s có kiểu xâu là kiểu dữ liệu immutable, nên các hàm, phương thức không thể làm thay đổi được dữ liệu lưu trong biến s.

    • Hàm <string>.(<string con>) dùng để tìm kiếm ký tự hoặc xâu <string con> trong <string>. Kết quả trả về là vị trí đầu tiên xuất hiện <string con> trong <string>, nếu không tìm thấy thì kết quả là -1.
    >>> s = 'Toi la Phu Ong'
    >>> s.find('Phu')
    7
    >>> s.find('PhuOng')
    -1
    • Trong các phương thức tìm kiếm, còn có hai phương thức là <string>.startswith(<string con>)<string>.endswith(<string con>) dùng để kiểm tra xem xâu <string> có bắt đầu hoặc kết thúc bởi <string con> hay không, đương nhiên kết quả trả về là kiểu bool.
    >>> s = 'Toi la Phu Ong'
    >>> s.startswith('Toi')
    True
    >>> s.endswith('g')
    True

    Ngoài ra những phương thức-hàm kể trên, kiểu chuỗi trong Python còn một số phương thức khác, mời bạn xem tại đây.