<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
	<title>Python &#8211; AnonyViet</title>
	<atom:link href="https://anonyviet.com/category/thu-thuat/code/python/feed/" rel="self" type="application/rss+xml" />
	<link>https://anonyviet.com</link>
	<description>Webiste chia sẻ kiến thức công nghệ thông tin, mạng máy tính, bảo mật phổ biến nhất Việt Nam. Luôn cập nhật tin tức, thủ thuật nóng hổi nhất</description>
	<lastBuildDate>Thu, 24 Jul 2025 16:34:42 +0000</lastBuildDate>
	<language>vi</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://anonyviet.com/wp-content/uploads/2018/10/cropped-ico-logo-75x75.png</url>
	<title>Python &#8211; AnonyViet</title>
	<link>https://anonyviet.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Hướng dẫn sử dụng Python trong Excel</title>
		<link>https://anonyviet.com/huong-dan-su-dung-python-trong-excel/</link>
					<comments>https://anonyviet.com/huong-dan-su-dung-python-trong-excel/#respond</comments>
		
		<dc:creator><![CDATA[Thanh Kim]]></dc:creator>
		<pubDate>Thu, 24 Aug 2023 09:19:41 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Excel/Google Sheets]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sử dụng Python trong Excel]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=50278</guid>

					<description><![CDATA[Cách sử dụng Python trong Excel là một chủ đề rất thú vị và hữu ích cho những ai muốn tăng cường khả năng làm việc với dữ liệu. Bằng cách kết hợp Python và Excel, bạn có thể khai thác được ưu điểm của cả hai công cụ và giải quyết được nhiều vấn [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Cách <strong>sử dụng Python trong Excel</strong> là một chủ đề rất thú vị và hữu ích cho những ai muốn tăng cường khả năng làm việc với dữ liệu. Bằng cách kết hợp <a href="https://anonyviet.com/minh-da-bypass-av-xam-nhap-windows-10-voi-metasploit-va-python-nhu-the-nao/">Python</a> và Excel, bạn có thể khai thác được ưu điểm của cả hai công cụ và giải quyết được nhiều vấn đề trong công việc của mình.</p>
<h2><strong>Giới thiệu về Python và Excel</strong></h2>
<p>Python và Excel là hai công cụ mạnh mẽ và phổ biến trong việc làm việc với dữ liệu. Python là một ngôn ngữ lập trình đa năng, dễ học, có cú pháp rõ ràng và có nhiều thư viện hỗ trợ các tác vụ liên quan đến dữ liệu, như phân tích, xử lý, trực quan hóa và học máy.</p>
<p>Excel là một ứng dụng bảng tính, cho phép người dùng nhập, lưu trữ, sắp xếp, lọc, tính toán và biểu diễn dữ liệu theo các công thức và hàm có sẵn.</p>
<p>Python có ưu điểm là linh hoạt, mở rộng, tự động hóa và hiệu năng cao, nhưng cũng có nhược điểm là khó giao tiếp với người dùng không chuyên, yêu cầu kỹ năng lập trình và thiếu tính tương thích với các ứng dụng khác.</p>
<figure id="attachment_50282" aria-describedby="caption-attachment-50282" style="width: 800px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2023/08/su-dung-python-trong-excel-3.jpg" alt="Cách sử dụng Python trong Excel" width="800" height="412" title="Hướng dẫn sử dụng Python trong Excel 10"><figcaption id="caption-attachment-50282" class="wp-caption-text">Cách sử dụng Python trong Excel</figcaption></figure>
<p>Excel có ưu điểm là dễ sử dụng, thân thiện, tương tác và tương thích với các ứng dụng khác, nhưng cũng có nhược điểm là giới hạn, thủ công, lỗi và hiệu năng thấp.</p>
<h2><strong>Lợi ích của việc sử dụng Python trong Excel</strong></h2>
<p>Bằng cách sử dụng Python trong Excel, bạn có thể:</p>
<ul>
<li>Đọc, ghi, thêm, xóa, sửa dữ liệu trong Excel bằng Python</li>
<li>Sử dụng các thư viện Python để phân tích và trực quan hóa dữ liệu trong Excel</li>
<li>Tạo các hàm Python tùy biến và gọi chúng từ Excel</li>
<li>Tự động hóa các tác vụ lặp đi lặp lại trong Excel bằng Python</li>
<li>Tăng hiệu năng và giảm lỗi khi làm việc với dữ liệu trong Excel bằng Python</li>
</ul>
<h3><strong>Làm việc một cách liền mạch</strong></h3>
<p>Bây giờ bạn có thể thực hiện phân tích dữ liệu nâng cao trong môi trường Excel quen thuộc bằng cách truy cập Python trực tiếp từ thanh công cụ Excel mà không cần thiết lập hoặc cài đặt. Sử dụng các kết nối được tích hợp sẵn của Excel và Power Query, bạn có thể dễ dàng mang dữ liệu bên ngoài vào các quy trình làm việc Python trong Excel.</p>
<figure id="attachment_50280" aria-describedby="caption-attachment-50280" style="width: 800px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2023/08/su-dung-python-trong-excel-1.jpg" alt="Cách sử dụng Python trong Excel" width="800" height="604" title="Hướng dẫn sử dụng Python trong Excel 11"><figcaption id="caption-attachment-50280" class="wp-caption-text">Tích hợp Python vào Excel đem lại nhiều lợi ích cho người dùng</figcaption></figure>
<p>Microsoft đang hợp tác với Anaconda, một kho lưu trữ Python hàng đầu được sử dụng bởi hàng chục triệu nhà thực hành dữ liệu trên toàn thế giới, tận dụng Anaconda Distribution chạy trên Azure, bao gồm các thư viện Python phổ biến nhất như pandas để thao tác dữ liệu, statsmodels để mô hình hóa thống kê nâng cao và Matplotlib và seaborn để trực quan hóa dữ liệu.</p>
<div style="width: 512px;" class="wp-video"><!--[if lt IE 9]><script>document.createElement('video');</script><![endif]--><br />
<video class="wp-video-shortcode" id="video-50278-1" width="512" height="384" preload="metadata" controls="controls"><source type="video/mp4" src="https://anonyviet.com/wp-content/uploads/2023/08/c22a98ad-249f-493e-8d29-005af63ed444.mp4?_=1" /><a href="https://anonyviet.com/wp-content/uploads/2023/08/c22a98ad-249f-493e-8d29-005af63ed444.mp4">https://anonyviet.com/wp-content/uploads/2023/08/c22a98ad-249f-493e-8d29-005af63ed444.mp4</a></video></div>
<p>&nbsp;</p>
<h3><strong>Hợp tác dễ dàng</strong></h3>
<p>Bạn có thể chia sẻ bảng tính và phân tích Python trong Microsoft Teams và Microsoft Outlook. Bạn dễ dàng làm việc nhóm với các bình luận và @ đề cập. Thêm vào đó, đồng nghiệp của bạn còn có thể làm mới phân tích Python trong Excel để có thông tin mới nhất, ngay cả khi họ không kích hoạt Python.<br />
Bảo mật tự động</p>
<figure id="attachment_50281" aria-describedby="caption-attachment-50281" style="width: 800px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2023/08/su-dung-python-trong-excel-2.jpg" alt="Cách sử dụng Python trong Excel" width="800" height="377" title="Hướng dẫn sử dụng Python trong Excel 12"><figcaption id="caption-attachment-50281" class="wp-caption-text">Bạn có thể chia sẻ bảng tính một cách dễ dàng</figcaption></figure>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/08/fefe.gif" alt="Hướng dẫn sử dụng Python trong Excel 2" width="640" height="480" title="Hướng dẫn sử dụng Python trong Excel 13"></p>
<p>Bảo vệ dữ liệu của bạn là ưu tiên hàng đầu của Microsoft nên họ đã tích hợp bảo mật và quyền riêng tư vào cốt lõi của thiết kế cho Python trong Excel.</p>
<p>Python trong Excel chạy trên đám mây Microsoft với bảo mật cấp doanh nghiệp như một trải nghiệm kết nối M365.</p>
<h2><strong>Cách thiết lập Python trong Excel</strong></h2>
<p>Python trong Excel đang được triển khai cho phiên bản Public Preview cho những người tham gia <a href="https://insider.microsoft365.com/join/windows" target="_blank" rel="noopener">Microsoft 365 Insiders program</a> ở kênh Beta. Tính năng này sẽ được triển khai cho Windows trước, bắt đầu từ phiên bản 16818, và sau đó đến các nền tảng khác trong tương lai.</p>
<figure id="attachment_50283" aria-describedby="caption-attachment-50283" style="width: 800px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2023/08/su-dung-python-trong-excel-4.jpg" alt="Cách sử dụng Python trong Excel" width="800" height="662" title="Hướng dẫn sử dụng Python trong Excel 14"><figcaption id="caption-attachment-50283" class="wp-caption-text">Python trong Excel đang được triển khai cho Microsoft 365 Insiders program</figcaption></figure>
<h2><strong>Cách sử dụng Python trong Excel</strong></h2>
<h3><strong>Hàm Python trong Excel</strong></h3>
<p>Python được viết bằng một hàm mới trong Excel, là PY.</p>
<p>Bạn chỉ việc gõ =PY rồi nhấn phím TAB, thanh công thức sẽ chuyển sang chế độ Python</p>
<figure id="attachment_50284" aria-describedby="caption-attachment-50284" style="width: 662px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2023/08/su-dung-python-trong-excel-5.jpg" alt="Cách sử dụng Python trong Excel" width="662" height="147" title="Hướng dẫn sử dụng Python trong Excel 15"><figcaption id="caption-attachment-50284" class="wp-caption-text">Dùng chuột để thay đổi kích cỡ thanh công thức</figcaption></figure>
<p>Hoặc bạn cũng có thể chuyển thanh công thức sang chế độ Python bằng cách bấm vào tab Formulas &gt; Insert Python &gt; Custom Python Formula</p>
<figure id="attachment_50285" aria-describedby="caption-attachment-50285" style="width: 427px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2023/08/su-dung-python-trong-excel-6.jpg" alt="Cách sử dụng Python trong Excel" width="427" height="170" title="Hướng dẫn sử dụng Python trong Excel 16"><figcaption id="caption-attachment-50285" class="wp-caption-text">Vào tab Formulas &gt; Insert Python &gt; Custom Python Formula</figcaption></figure>
<h3><strong>Cách thêm thư viện Python vào Excel</strong></h3>
<p>Để thêm thư viện Python vào Excel, bạn nhập lệnh dưới dạng:</p>
<p>import [LibraryName] as [LibraryShortName]</p>
<p>Ví dụ trong ảnh dưới đây, tôi đã nhập Pandas, Seaborn và Matplotlib</p>
<figure id="attachment_50286" aria-describedby="caption-attachment-50286" style="width: 566px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2023/08/su-dung-python-trong-excel-7.jpg" alt="Cách sử dụng Python trong Excel" width="566" height="191" title="Hướng dẫn sử dụng Python trong Excel 17"><figcaption id="caption-attachment-50286" class="wp-caption-text">Cách thêm thư viện Python vào Excel</figcaption></figure>
<p>Sau đó nhấn Ctrl+Enter để hoàn tất công thức</p>
<p>Mẹo: nếu ô không hiển thị biểu tượng Python Object, bạn hãy chọn nó từ danh sách thả xuống bên cạnh thanh công thức</p>
<figure id="attachment_50287" aria-describedby="caption-attachment-50287" style="width: 551px" class="wp-caption aligncenter"><img decoding="async" class=" size-full" src="https://anonyviet.com/wp-content/uploads/2023/08/su-dung-python-trong-excel-8.jpg" alt="Cách sử dụng Python trong Excel" width="551" height="142" title="Hướng dẫn sử dụng Python trong Excel 18"><figcaption id="caption-attachment-50287" class="wp-caption-text">Cách hiển thị biểu tượng Python Object</figcaption></figure>
<h2><strong>Lời Kết</strong></h2>
<p>Trong bài viết này, mình đã giới thiệu cho bạn cách <strong>sử dụng Python trong Excel</strong>. Hy vọng bài viết này sẽ giúp bạn nâng cao khả năng làm việc với dữ liệu bằng Python và Excel, và mở ra nhiều cơ hội mới cho bạn trong tương lai.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Tôi cần làm gì để bắt đầu sử dụng Python trong Excel?</h3>
<p>Hiện tại, tính năng này đang trong giai đoạn thử nghiệm (Public Preview) dành cho người dùng Microsoft 365 Insiders program trên kênh Beta (phiên bản 16818 trở lên cho Windows).  Hãy tham gia chương trình Insiders để truy cập sớm tính năng này.</p>
<h3>Làm thế nào để gọi một hàm Python từ Excel?</h3>
<p>Bạn có thể gọi hàm Python bằng hàm `=PY` trong Excel.  Nhập `=PY` vào ô tính, nhấn TAB, và thanh công thức sẽ chuyển sang chế độ Python để bạn viết mã.</p>
<h3>Tôi có thể sử dụng các thư viện Python nào trong Excel?</h3>
<p>Bạn có thể thêm các thư viện Python vào Excel bằng cách sử dụng câu lệnh `import [LibraryName] as [LibraryShortName]`.  Ví dụ: `import pandas as pd`.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/huong-dan-su-dung-python-trong-excel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://anonyviet.com/wp-content/uploads/2023/08/c22a98ad-249f-493e-8d29-005af63ed444.mp4" length="695127" type="video/mp4" />
<enclosure url="https://anonyviet.com/wp-content/uploads/2023/08/c22a98ad-249f-493e-8d29-005af63ed444.mp4?_=1" length="695127" type="video/mp4" />

			</item>
		<item>
		<title>Hoàn thành thử thách 30 ngày học python</title>
		<link>https://anonyviet.com/hoan-thanh-thu-thach-30-ngay-hoc-python/</link>
					<comments>https://anonyviet.com/hoan-thanh-thu-thach-30-ngay-hoc-python/#comments</comments>
		
		<dc:creator><![CDATA[Ellyx13]]></dc:creator>
		<pubDate>Mon, 07 Aug 2023 00:30:38 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[học lập trình Python]]></category>
		<category><![CDATA[học python]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python cơ bản]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=49539</guid>

					<description><![CDATA[Vậy là chúng ta đã hoàn thành xong thử thách 30 ngày học Python. Dành cho bạn nào chưa biết, đây là thử thách mình làm dành cho những bạn mới học lập trình, và muốn tìm hiểu về ngôn ngữ lập trình Python trên group facebook của anonyviet. Giới thiệu về thử thách 30 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Vậy là chúng ta đã hoàn thành xong thử thách 30 ngày học Python. Dành cho bạn nào chưa biết, đây là thử thách mình làm dành cho những bạn mới học lập trình, và muốn tìm hiểu về ngôn ngữ lập trình Python trên <a href="https://www.facebook.com/groups/anonyviet" target="_blank" rel="noopener">group facebook của anonyviet</a>.</p>
<p><img decoding="async" class="aligncenter  size-full" src="https://anonyviet.com/wp-content/uploads/2023/07/anonyviet7.jpg" alt="Hoàn thành thử thách 30 ngày học python" width="600" height="400" title="Hoàn thành thử thách 30 ngày học python 20"></p>
<h2>Giới thiệu về thử thách 30 ngày học Python</h2>
<p>Học một ngôn ngữ lập trình mới có thể là một thách thức đối với những bạn mới học lập trình, nhưng nó cũng là một trải nghiệm thú vị và bổ ích. Nhằm giúp các bạn có thể dễ dàng học tập và tạo môi trường học hỏi cùng những người khác, mình đã tạo ra seri Thử thách 30 ngày học Python được tham khảo từ lộ trình của thầy Asabeneh, một người thầy rất tuyệt vời và là người chủ yếu truyền cảm hứng cho mình. Trong thử thách này, bạn sẽ học mọi thứ cần thiết để trở thành một lập trình viên python và toàn bộ các khái niệm khác về lập trình.</p>
<p>Thử thách được chia thành 30 ngày, mỗi ngày tập trung vào một chủ đề khác nhau về Python. Các chủ đề bao gồm:</p>
<ul>
<li>Giới thiệu về Python</li>
<li>Cú pháp Python</li>
<li>Lập trình hướng đối tượng</li>
<li>Các cấu trúc dữ liệu</li>
<li>Các thuật toán</li>
<li>Khoa học dữ liệu</li>
<li>Lập trình web</li>
</ul>
<p>Thử thách này được thiết kế dành cho tất cả mọi trình độ, vậy nên bạn cũng có thể tham gia thử thách kể cả bạn <a href="https://anonyviet.com/kien-thuc-python-co-ban-cho-nguoi-moi/">chưa biết gì về python</a> hoặc là bạn đã có chút kinh nghiệm làm việc với python.</p>
<p>Mình cũng đã thay đổi phương pháp học tập thành từng slide, giúp các bạn cảm thấy mới lạ và hứng thú với việc học hơn. Lộ trình và nội dung bài học đã được nghiên cứu kỹ lưỡng, từ những người khác trên github và mình cũng kiểm tra lại code nên các bạn có thể yên tâm về thử thách này.</p>
<p>Cuối mỗi bài học đều sẽ có bài tập liên quan đến nội dung đã được học. Bài tập sẽ chia làm các cấp độ khác nhau, từ dễ đến khó, các bài tập này sẽ giúp các bạn thực hành và áp dụng những kiến thức đã được học, cũng như kiểm tra khả năng của các bạn. Nếu các bạn không biết cách giải thì cũng có thể bình luận dưới bài học đó hoặc hỏi những người khác trong cộng đồng. Vậy nên đừng ngại hỏi nhé, học cùng những người khác chắc chắn sẽ đỡ nhàm chán hơn là học một mình và những người học cùng bạn cũng sẽ là nguồn động lực giúp bạn tiếp tục quá trình tự học của mình.</p>
<p>Qua seri này, mình thấy mọi người rất thích cách truyền tải nội dung này, bằng chứng là bài nào cũng có lượt tương tác và share cao. Sau seri Thử thách 30 ngày học Python này, mình sẽ cần chút thời gian để tổng hợp lại toàn bộ quá trình, và lên kế hoạch cho một seri mới hấp dẫn không kém. Vậy nên các bạn có thể vào group facebook của anonyviet và cùng đón chờ thử thách mới nhé.</p>
<p>Các bạn có thể tải file pdf đầy đủ tất cả các thử thách <a href="https://www.mediafire.com/file/vyv80yzlli5yyh0/KietPham_30DayOfPython.pdf/file" target="_blank" rel="noopener">tại đây</a> nha.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Thử thách 30 ngày học Python này dành cho ai?</h3>
<p>Thử thách này dành cho mọi người, từ những bạn chưa biết gì về Python đến những bạn đã có kinh nghiệm.  Mỗi bài học được thiết kế với nhiều cấp độ bài tập, phù hợp với trình độ khác nhau.</p>
<h3>Tôi có thể tìm tài liệu của thử thách ở đâu?</h3>
<p>Bạn có thể tải file PDF đầy đủ tất cả các bài học <a href="https://www.mediafire.com/file/vyv80yzlli5yyh0/KietPham_30DayOfPython.pdf/file" target="_blank" rel="noopener">tại đây</a>.</p>
<h3>Nếu tôi gặp khó khăn trong bài tập thì sao?</h3>
<p>Đừng ngần ngại! Bạn có thể bình luận dưới bài học hoặc hỏi những người khác trong cộng đồng để được hỗ trợ.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/hoan-thanh-thu-thach-30-ngay-hoc-python/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Hướng dẫn tự tạo Bot ChatGPT trên Telegram</title>
		<link>https://anonyviet.com/huong-dan-tu-tao-bot-chatgpt-tren-telegram/</link>
					<comments>https://anonyviet.com/huong-dan-tu-tao-bot-chatgpt-tren-telegram/#comments</comments>
		
		<dc:creator><![CDATA[Ellyx13]]></dc:creator>
		<pubDate>Mon, 27 Mar 2023 01:34:02 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[bot telegram]]></category>
		<category><![CDATA[chatgpt]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tạo bot telegram chatgpt]]></category>
		<category><![CDATA[Telegram]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=46052</guid>

					<description><![CDATA[ChatGPT có cung cấp API và token 18$ miễn phí để anh em tạo Bot trên Telegram. Trong bài này mình sẽ hướng dẫn tạo Bot ChatGPT trên Telegram miễn phí để bạn chat hoặc add vào group Telegram của mình. Mình thấy chủ đề này mãi không hết hot nhỉ. ChatGPT càng phát triển [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>ChatGPT có cung cấp API và token 18$ miễn phí để anh em tạo Bot trên Telegram. Trong bài này mình sẽ hướng dẫn tạo Bot ChatGPT trên Telegram miễn phí để bạn chat hoặc add vào group Telegram của mình.</p>
<p>Mình thấy chủ đề này mãi không hết hot nhỉ. <a href="https://anonyviet.com/cach-tao-tai-khoan-chatgpt-o-viet-nam/">ChatGPT</a> càng phát triển thì anh em phần mềm càng lo sợ, nhưng đó là đối với những người không biết cách khai thác sức mạnh của ChatGPT thôi. Muốn tận dụng hết sức mạnh của ChatGPT thì các bạn phải đưa nó vào các hoạt động hằng ngày của mình. Một trong những hoạt động các bạn thường xuyên làm nhất là trao đổi tin nhắn trên các nền tảng ứng dụng trực tuyến như messenger và telegram. Messenger thì mình chưa nghe nói có ai tích hợp ChatGPT cả, nhưng telegram thì có rồi. Vậy nên trong bài viết này, mình sẽ hướng dẫn các bạn tạo bot telgeram sử dụng ChatGPT cực kỳ dễ dàng nhé.</p>
<p><img decoding="async" class="aligncenter  size-full" src="https://anonyviet.com/wp-content/uploads/2023/03/anonyviet-8.jpg" alt="Cách tạo bot telegram sử dụng ChatGPT" width="675" height="450" title="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 27"></p>
<h2>Tính năng bot telegram ChatGPT</h2>
<ul>
<li>Hỗ trợ markdown trong câu trả lời</li>
<li>Đặt lại cuộc trò chuyện bằng lệnh /reset</li>
<li>Hiển thị đang nhập tin nhắn trong khi đợi phản hồi từ bot</li>
<li>Có thể hạn chế quyền truy cập bằng cách chỉ định danh sách người dùng</li>
<li>Hỗ trợ Docker và Proxy</li>
<li>Tạo hình ảnh bằng cách sử dụng DALL·E thông qua lệnh /image</li>
<li>Phiên âm tin nhắn âm thanh và video bằng Whisper (có thể yêu cầu ffmpeg)</li>
<li>Tự động tóm tắt câu trả lời để tránh sử dụng API quá mức</li>
<li>Theo dõi mức sử dụng API trên mỗi người dùng</li>
<li>Thống kê mức sử dụng API của mỗi cá nhân và chi phí mỗi ngày/tháng thông qua lệnh /stats</li>
<li>Hỗ trợ Stream</li>
</ul>
<h2>Yêu cầu</h2>
<p>Để tạo Bot ChatGPT trên Telegram, bạn nên cài trên Ubuntu hoặc Kali Linux để hỗ trợ tốt hơn.</p>
<ul>
<li>Python 3.9+</li>
<li>Token bot Telegram. Các bạn có thể sử dụng Bot Father <a href="https://vietnix.vn/tao-bot-telegram/" target="_blank" rel="noopener">tại đây</a>: Gõ lệnh <code>/newbot</code>, sau đó nhập tên cho Bot muốn tạo. Lưu ý, tên Bot phải kết thúc bằng _BOT, ví dụ:<code> ANVGPT_BOT</code>, sau khi tạo xong bạn sẽ thấy botfather cung cấp HTTP API, nhớ lưu token này lại nhé.<br />
<img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/03/2023-03-27_08-21.jpg" alt="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 8" width="631" height="473" title="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 28"></li>
<li>API của OpenAI. Đăng ký tài khoản ChatGPT OpenAI (<a href="https://anonyviet.com/cach-tao-tai-khoan-chatgpt-o-viet-nam/">hướng dẫn</a>). Sau đó copy API Key tại <a href="https://platform.openai.com/account/api-keys" target="_blank" rel="noopener">trang này</a>.</li>
</ul>
<h2>Cách cài đặt</h2>
<p><strong>Bước 1:</strong> Clone repo từ github về và truy cập vào folder project từ cmd.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">git clone https://github.com/n3d1117/chatgpt-telegram-bot.git
cd chatgpt-telegram-bot</pre>
<p><strong>Bước 2:</strong> Tạo môi trường ảo cho python.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">python -m venv venv</pre>
<p><strong>Bước 3:</strong> Kích hoạt môi trường ảo</p>
<p>Windows:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">venv\Scripts\activate</pre>
<p>Linux:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">source venv/bin/activate
</pre>
<p><strong>Bước 4:</strong> Cài đặt các thư viện khác trong file <strong>requirements.txt</strong>:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">pip3 install -r requirements.txt</pre>
<p><strong>Bước 5:</strong> Thay API của OpenAI và bot father trong file <code>.env.example</code>. Sau đó đổi tên file này thành <code>.env</code>.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/03/2023-03-26_21-36.png" alt="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 9" width="494" height="220" title="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 29"></p>
<p>Trong trường hợp bạn muốn thêm bot vào group telegram thì có thể thay đổi thông số <strong>ADMIN_USER_IDS</strong> và <strong>ALLOWED_TELEGRAM_USER_IDS</strong>.</p>
<ul>
<li><strong>ADMIN_USER_IDS</strong>: ID Telegram của quản trị admin. Những người dùng này có quyền truy cập vào các lệnh, thông tin đặc biệt và không bị hạn chế về ngân sách. Bạn không cần phải thêm ID quản trị viên vào ALLOWED_TELEGRAM_USER_IDS. Lưu ý: theo mặc định, bot sẽ không có quản trị viên (&#8216;-&#8216;).</li>
<li><strong>ALLOWED_TELEGRAM_USER_IDS</strong>: Danh sách ID người dùng Telegram, được phép tương tác với bot (bạn có thể sử dụng getidsbot để tìm ID người dùng của bạn). Để tất cả mọi người đều có thể chat với bot thì bạn điền dấu *.</li>
</ul>
<p><strong>Bước 6:</strong> Chạy bot bằng lệnh dưới đây.</p>
<pre class="notranslate">python bot/main.py</pre>
<p>Vậy là xong rồi đó. Bây giờ bạn vào Telegram, tìm con bot vừa tạo bằng Botfather rồi chat với nó, nó sẽ lấy kết quả từ ChatGPT để trả lời cho bạn.</p>
<p>Ngoài ra Bot hỗ trợ một số lệnh sau:</p>
<ul>
<li>/image: tạo hình ảnh từ các từ gọi ý</li>
<li>/stats: thống kê số token đã dùng bằng API ChatGPT</li>
<li>/reset: xóa các thông tin đã hỏi được lưu trên ChatGPT</li>
<li>/help: hiển thị bảng hỗ trợ</li>
</ul>
<h2>Nâng cao: Tối ưu lại Bot ChatGPT trên Telegram</h2>
<p>Trường hợp bạn tạo Bot ChatGPT vào group telegram thì có một điểm cần lưu ý là các tin nhắn bình thường đều sẽ được bot phản hồi lại hết. Vậy nên sẽ dễ gặp trường hợp spam nếu group bạn đông. Bạn có thể sửa đổi một số dòng code sau để khi người dùng dùng lệnh ask thì bot mới phản hồi.</p>
<p><strong>Bước 1:</strong> Đầu tiên, các bạn tìm hàm prompt và đổi tên hàm này thành <strong><code>ask</code></strong>. Chỉ thay chữ prompt thành chữ ask thôi nhé.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/03/2023-03-26_21-39.png" alt="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 10" width="743" height="117" title="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 30"></p>
<p><strong>Bước 2:</strong> Trong hàm ask vừa đổi tên, các bạn thay dòng lệnh trong ảnh thành lệnh dưới đây:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">prompt = update.message.text.replace('/ask', '').strip()</pre>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/03/2023-03-26_21-39_1.png" alt="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 11" width="624" height="159" title="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 31"></p>
<p><strong>Bước 3:</strong> Thay lệnh gọi hàm xử lý bằng hàm dưới đây:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">application.add_handler(CommandHandler('ask', self.ask))</pre>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/03/2023-03-26_21-38.png" alt="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 12" width="883" height="163" title="Hướng dẫn tự tạo Bot ChatGPT trên Telegram 32"></p>
<p>Như vậy bạn đã tự tạo cho mình Bot ChatGPT trên Telegram, bạn có thể dùng 1 mình hoạt add vào group để nó trở thành trợ lý cho bạn bằng cách tự trả lời bằng kết quả của AI GPT nhé.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Tôi cần những gì để tạo bot ChatGPT trên Telegram?</h3>
<p>Bạn cần một tài khoản OpenAI với API key, một tài khoản Telegram và token bot Telegram (tạo bằng BotFather), cũng như cài đặt Python 3.9+.</p>
<h3>Làm thế nào để hạn chế quyền truy cập bot chỉ cho một số người dùng nhất định?</h3>
<p>Bạn cần chỉnh sửa file <code>.env</code>, thay đổi giá trị của <code>ALLOWED_TELEGRAM_USER_IDS</code>.  Thêm ID Telegram của những người được phép sử dụng bot, hoặc để dấu * để cho phép tất cả người dùng.</p>
<h3>Bot có hỗ trợ các lệnh nào khác ngoài việc chat thông thường?</h3>
<p>Bot hỗ trợ các lệnh như /image (tạo ảnh), /stats (thống kê token đã sử dụng), /reset (reset cuộc trò chuyện), và /help (hiển thị trợ giúp).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/huong-dan-tu-tao-bot-chatgpt-tren-telegram/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Cách vượt Captcha Google bằng python</title>
		<link>https://anonyviet.com/cach-vuot-captcha-google-bang-python/</link>
					<comments>https://anonyviet.com/cach-vuot-captcha-google-bang-python/#comments</comments>
		
		<dc:creator><![CDATA[Ellyx13]]></dc:creator>
		<pubDate>Thu, 23 Feb 2023 01:32:14 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[recaptcha]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=45354</guid>

					<description><![CDATA[Bài viết này dành cho những bạn đang làm tool reg, đăng ký nhiều tài khoản trên website. Hoặc cũng có thể là crawl data và bị dính captcha mà không biết cách giải quyết. Khi bị dính captcha, bạn phải dành ra từ 3 -5s để giải chúng. Đối với những người dùng bình [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Bài viết này dành cho những bạn đang làm tool reg, đăng ký nhiều tài khoản trên website. Hoặc cũng có thể là crawl data và bị dính captcha mà không biết cách giải quyết. Khi bị dính captcha, bạn phải dành ra từ 3 -5s để giải chúng. Đối với những người dùng bình thường thì không sao nhưng với người dùng tool để tạo từ vài trăm đến vài nghìn tài khoản hoặc request thì đây không phải là cách giải quyết. Vậy nên trong bài viết này, mình sẽ hướng dẫn các bạn cách giải captcha Google bằng <a href="https://anonyviet.com/tag/python/">Python</a> siêu dễ nhé.</p>
<p><img decoding="async" class="aligncenter  size-full" src="https://anonyviet.com/wp-content/uploads/2023/02/captchacaptcha.jpg" alt="Cách vượt Captcha Google bằng python" width="900" height="600" title="Cách vượt Captcha Google bằng python 36"></p>
<h2>Captcha là gì?</h2>
<p>CAPTCHA là viết tắt của Completely Automated Public Turing test to tell Computers and Humans Apart. CAPTCHA là công cụ được sử dụng để phân biệt giữa người dùng thực và máy tính, chẳng hạn như bot.CAPTCHA đưa ra những thử thách khó thực hiện đối với máy tính nhưng tương đối dễ dàng đối với con người. Ví dụ: xác định các chữ cái hoặc chọn đèn giao thông trong một tấm ảnh khó nhìn.</p>
<p>CAPTCHA hoạt động bằng cách cung cấp thông tin cho người dùng thực để giải mã. CAPTCHA truyền thống cung cấp các chữ cái và số bị bóp méo hoặc chồng chéo để người dùng xác nhận. Các chữ cái bị biến dạng khiến bot khó giải mã và ngăn chặn truy cập cho đến khi captcha được xác minh.</p>
<p>Kể từ khi CAPTCHA được giới thiệu, các bot sử dụng machine learning đã được phát triển. Các bot này có khả năng xác minh CAPTCHA truyền thống tốt hơn bằng các thuật toán được huấn luyện nhiều lần. Do sự phát triển này, các phương pháp CAPTCHA mới hơn dựa trên các bài kiểm tra phức tạp hơn được ra đời. Ví dụ: reCAPTCHA yêu cầu nhấp vào một khu vực cụ thể và đợi cho đến khi giải thành công.</p>
<div>
<div class="TnITTtw-mv-translit TnITTtw-translation-translit TnITTtw-t">
<h2>Lấy KeyAPI của AzCaptcha</h2>
</div>
<p><strong>Bước 1:</strong> Đầu tiên, các bạn truy cập vào <a href="https://azcaptcha.com/" target="_blank" rel="noopener">trang web AZcaptcha</a> và đăng ký tài khoản mới. Mỗi tài khoản mới tạo sẽ được tặng $0.02, các bạn có thể giải từ 10 đến 20 lần tùy vào loại Captcha. Lưu ý: Mình khuyên các bạn nên sử dụng email tạm thời để tạo tài khoản nhé. Nếu hết tiền thì chỉ cần tạo tiếp tài khoản mới khác là được.</p>
<p><strong>Bước 2:</strong> Ở trang dashboard, các bạn sang bên phái sẽ thấy keyAPI, sao chép keyAPI đó.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/02/2023-02-21_22-36.jpg" alt="Cách vượt Captcha Google bằng python 15" width="437" height="520" title="Cách vượt Captcha Google bằng python 37"></p>
<h2>Cách vượt Captcha Google bằng python</h2>
<p>Đầu tiên, các bạn cần đảm bảo hệ thống của mình có đầy đủ python, pip. Sau đó cài đặt thêm 2 package request và bs. Mình cũng sẽ sử dụng trang <a href="https://www.google.com/recaptcha/api2/demo" target="_blank" rel="noopener">reCaptcha demo</a> để làm ví dụ trong bài viết này.</p>
<p>Các bạn nhấn <strong>F12</strong> vào tìm từ khóa <strong>sitekey</strong> bằng <strong>Ctrl + F</strong>.</p>
<p><img decoding="async" class="size-full  aligncenter" src="https://anonyviet.com/wp-content/uploads/2023/02/2023-02-21_22-47-1.png" alt="Cách vượt Captcha Google bằng python 16" width="722" height="235" title="Cách vượt Captcha Google bằng python 38"></p>
<p>Như các bạn thấy ở trên, thẻ div có class &#8220;g-recaptcha&#8221; có data-sitekey là &#8220;6Le-wvk&#8230;&#8230;&#8221;. Trong python có một thư viện giúp chúng ta bóc tách html và lấy được data-sitekey bên trong thẻ div là bs4.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">from bs4 import BeautifulSoup
import requests
from time import sleep

URL = 'https://www.google.com/recaptcha/api2/demo'

def get_siteKey(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    g_recaptcha = soup.find_all('div', {'class' : 'g-recaptcha'})
    sitekey = g_recaptcha[0].get('data-sitekey')
    return sitekey</pre>
<p>Tiếp theo là hàm solve_Captcha dùng để giải captcha. Các bạn thay {keyAPI} bằng API mà bạn lấy được trong trang AZcaptcha. Sau khi gửi request giải captcha thành công thì server sẽ gửi về id của captcha của bạn. ID này dùng để nhận diện captcha mà bạn gửi lên server. Các bạn nên để chương trình ngừng tầm 30 giây để server tiến hành giải captcha nhé.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def solve_Captcha(REQ_URL, url, keyAPI, sitekey):
    payload = {
        'key': keyAPI,
        'method': 'userrecaptcha',
        'googlekey': sitekey,
        'pageurl': url,
        'here': 'now'
    }
    response = requests.post(REQ_URL, data=payload)
    return response

BASE_URL = 'http://azcaptcha.com'
REQ_URL = BASE_URL + '/in.php'
RES_URL = BASE_URL + '/res.php'
keyAPI = '{keyAPI}'

response = solve_Captcha(REQ_URL, URL, keyAPI, siteKey)
if response.status_code == 200:
    print('Solving captcha...')
    id = response.text.split('|')[1]
    sleep(30)</pre>
<p>Tiếp theo các bạn sử dụng hàm get_gCaptcha để kiểm tra xem captcha đã được giải xong chưa. Nếu xong rồi thì chúng ta sẽ lấy được gCaptcha, còn nếu chưa xong thì chúng ta lại tiếp tục gọi hàm get_gCaptcha tiếp để kiểm tra.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def get_gCaptcha(RES_URL, keyAPI, id):
    payload = {
        'key': keyAPI,
        'action': 'get',
        'id': id,
    }
    response = requests.post(RES_URL, data = payload)
    if response.text == 'CAPCHA_NOT_READY':
        print('CAPTCHA NOT READY. Try again in 30s.')
        sleep(30)
        gCaptcha = get_gCaptcha(RES_URL, keyAPI, id)
        return gCaptcha
    if 'OK' in response.text:
        gCaptcha = response.text.split('|')[1]
        return gCaptcha</pre>
<p>Toàn bộ code:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">from bs4 import BeautifulSoup
import requests
from time import sleep

URL = 'https://www.google.com/recaptcha/api2/demo'

def get_siteKey(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    g_recaptcha = soup.find_all('div', {'class' : 'g-recaptcha'})
    sitekey = g_recaptcha[0].get('data-sitekey')
    return sitekey

siteKey = get_siteKey(URL)
print(siteKey)
def solve_Captcha(REQ_URL, url, keyAPI, sitekey):
    payload = {
        'key': keyAPI,
        'method': 'userrecaptcha',
        'googlekey': sitekey,
        'pageurl': url,
        'here': 'now'
    }
    response = requests.post(REQ_URL, data=payload)
    return response
def get_gCaptcha(RES_URL, keyAPI, id):
    payload = {
        'key': keyAPI,
        'action': 'get',
        'id': id,
    }
    response = requests.post(RES_URL, data = payload)
    if response.text == 'CAPCHA_NOT_READY':
        print('CAPTCHA NOT READY. Try again in 30s.')
        sleep(30)
        gCaptcha = get_gCaptcha(RES_URL, keyAPI, id)
        return gCaptcha
    if 'OK' in response.text:
        gCaptcha = response.text.split('|')[1]
        return gCaptcha
    
BASE_URL = 'http://azcaptcha.com'
REQ_URL = BASE_URL + '/in.php'
RES_URL = BASE_URL + '/res.php'
keyAPI = '{keyAPI}'

response = solve_Captcha(REQ_URL, URL, keyAPI, siteKey)
if 'OK' in response.text:
    print('Solving captcha...')
    id = response.text.split('|')[1]
    sleep(30)
    gCaptcha = get_gCaptcha(RES_URL, keyAPI, id)
    print(gCaptcha)
else:
    print(response.text)
</pre>
<p>Các bạn đã lấy được mã gCaptcha thành công rồi đó. Tiếp theo, các bạn chỉ cần thay mã gCaptcha vào trang bạn muốn vượt captcha bằng cách sử dụng lệnh excute javascript dưới đây:</p>
<p><code>document.getElementById("g-recaptcha-response").innerHTML="{gCaptcha}";</code></p>
<p>Vậy xong rồi đó. Chúc các bạn thành công.</p>
</div>
<h2>Câu hỏi thường gặp</h2>
<h3>Tôi cần những gì để sử dụng mã nguồn này?</h3>
<p>Bạn cần cài đặt Python, thư viện <code>requests</code> và <code>bs4</code>,  một tài khoản AZcaptcha và API key tương ứng.</p>
<h3>Mã nguồn có hoạt động với mọi loại CAPTCHA không?</h3>
<p>Mã nguồn này tập trung vào việc giải quyết reCAPTCHA của Google sử dụng dịch vụ AZcaptcha.  Nó có thể không hoạt động với các loại CAPTCHA khác.</p>
<h3>Nếu CAPTCHA không được giải quyết, tôi nên làm gì?</h3>
<p>Hãy kiểm tra lại API key của bạn, kết nối mạng và đảm bảo bạn đã chờ đủ thời gian (khoảng 30 giây) cho AZcaptcha xử lý.  Có thể cần thử lại một vài lần.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/cach-vuot-captcha-google-bang-python/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Thêm &#8220;tin nhắn bí mật&#8221; vào hình ảnh bằng Python: Steganography</title>
		<link>https://anonyviet.com/them-tin-nhan-bi-mat-vao-hinh-anh-bang-python/</link>
					<comments>https://anonyviet.com/them-tin-nhan-bi-mat-vao-hinh-anh-bang-python/#comments</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Thu, 17 Nov 2022 04:03:02 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[ẩn tin nhắn]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Steganography]]></category>
		<category><![CDATA[tin nhắn bí mật]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=44090</guid>

					<description><![CDATA[Trước khi triển khai Steganography trong python, chúng ta cần hiểu chính xác Steganography là gì. Steganography là phương pháp che giấu thông tin trong dữ liệu rõ. Từ steganography xuất phát từ các từ tiếng Hy Lạp: steganos có nghĩa là &#8220;được bảo vệ&#8221; hoặc &#8220;bí mật&#8221; và graphein, có nghĩa là &#8220;viết&#8221;. Steganography [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Trước khi triển khai Steganography trong python, chúng ta cần hiểu chính xác Steganography là gì.</p>
<p>Steganography là phương pháp che giấu thông tin trong dữ liệu rõ. Từ steganography xuất phát từ các từ tiếng Hy Lạp: steganos có nghĩa là &#8220;được bảo vệ&#8221; hoặc &#8220;bí mật&#8221; và graphein, có nghĩa là &#8220;viết&#8221;.</p>
<p>Steganography &#8220;kỹ thuật số&#8221; có thể liên quan đến việc ẩn thông tin trong hình ảnh, tệp âm thanh và thậm chí cả  video. Ưu điểm của Steganography &#8220;kỹ thuật số&#8221; so với các phương pháp truyền thống là tin nhắn có thể được ẩn trong một tệp đã được nhìn thấy bằng mắt. Ví dụ: ai đó có thể ẩn nội dung tin nhắn trong hình ảnh được đăng trên trang web. Người nhận chỉ có thể xem tin nhắn nếu biết cách giải mã nó.</p>
<p>Để tăng mức độ bảo mật, người gửi có thể mã hóa tin nhắn trước khi sử dụng một số kỹ thuật Steganography.</p>
<p>Steganography có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm gửi tin nhắn bí mật, chia sẻ thông tin nhạy cảm và đánh dấu bản quyền các dữ liệu số.</p>
<h2><strong>Tổng quan về kỹ thuật Steganography</strong></h2>
<p>Nhìn vào hệ thập lục phân (hex) của hình ảnh, chúng ta có thể thấy rằng các tệp <strong>png</strong> và <strong>jpg</strong> luôn kết thúc bằng cùng một chuỗi byte.</p>
<p>Nếu dùng Linux, vì vậy chúng ta sẽ kiểm tra với lệnh <code>xxd</code> hoặc hoặc dùng phần mềm <a href="https://mh-nexus.de/downloads/HxDSetup.zip" target="_blank" rel="noopener"><strong>chỉnh sửa hex HxD</strong></a> trên Windows.</p>
<p>Khi dùng lệnh Linux xem hệ hex của file <strong>jpg</strong>: <code>xxd -i image.jpg</code></p>
<p>Kết quả sẽ giống như thế này:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">..... 
0xef, 0x47, 0xf7, 0x94, 0x70, 0x51, 0xec, 0xa2, 0x9f, 0x4a, 0x7d, 0xe6, 0xa8, 0x73, 0xff, 0x00, 0xc7, 0x3f, 0xff, 0xd9</pre>
<p>Khi dùng HxD mở hình ảnh trên Windows.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/11/giau-tin-nhan-vao-Steganography.jpg" alt="giau tin nhan vao Steganography" width="597" height="323" title="Thêm &quot;tin nhắn bí mật&quot; vào hình ảnh bằng Python: Steganography 41"></p>
<p>Dù dùng cách nào thì bạn cũng thấy <strong>FF</strong> và <strong>D9</strong> ở cuối cùng, đối với hình ảnh, các nội dung sau <strong>FF D9</strong> đều sẽ không được đọc. Do đó ta dễ dàng thêm tin nhắn bí mất vào sau các vị trí này.</p>
<p>Quá trình tương tự có thể được thực hiện với <strong>png</strong> và chúng ta sẽ thấy kết quả tương tự như thế này</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">... 
0xfc, 0xab, 0x38, 0x9d, 0x9d, 0xa2, 0xee, 0x3d, 0xc0, 0x77, 0xfe, 0xd1, 0xef, 0xbf, 0xe8, 0x1f, 0x77, 0xc3, 0x86, 0x0d, 0x1b, 0x36, 0x6c, 0xb8, 0x3c, 0xfc, 0x6f, 0x44, 0x3a, 0x0e, 0x7e, 0xe2, 0x52, 0x24, 0x49, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82</pre>
<p>Đối với file <strong>png</strong>, chuỗi kết thúc bao gồm 12 byte cuối cùng là: <code>0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82</code></p>
<h2>Triển khai Steganography trong Python</h2>
<p>Để viết script cho steganography trong python, chúng ta chỉ cần Python 3 và không cần thêm các thư viện bên.</p>
<p>Bước tiếp theo là tạo một từ điển (dictionary) chứa các chuỗi kết thúc cho để phân biệt giữa file .png và .jpg</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">file_end = {
    ".png": b'\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82',
    ".jpg": b'\xff\xd9'
}</pre>
<h3><strong>Phương thức:</strong></h3>
<p>Đoạn mã  bên dưới mở một tệp ở chế độ &#8220;append binary&#8221; và ghi nội dung bí mật vào đó.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def append_secret(filename, file_extension, secret):
    with open(f"{filename}{file_extension}", "ab") as f:
        f.write(bytes(secret, encoding="utf-8"))</pre>
<p>Hàm này sẽ kiểm tra xem đuôi file (png, jpg) của hình ảnh có trong từ điển &#8220;file_end&#8221; hay không.</p>
<p>Nếu đúng, hàm này sẽ mở file và đọc nó dưới dạng một mảng byte.</p>
<p>Sau đó, nó sẽ tìm vị trí của tệp kết thúc bằng mảng byte.</p>
<p>Sau khi tìm thấy vị, nó sẽ giải mã mảng byte từ vị trí đó trở đi (sau vị trí đó là tin nhắn bí mật) và trả về dưới dạng một chuỗi.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def retrieve_secret(filename, file_extension):
    if not file_extension in file_end:
        print("Format not supported!")
    else:
        with open(f"{filename}{file_extension}", 'rb') as f:
            buff = bytes(f.read())
            index = buff.index(file_end[file_extension])

            return buff[index+len(file_end[file_extension]):].decode('utf-8')</pre>
<p>Hàm này sẽ đọc nội dung File ảnh, tìm vị trí kết thúc của file ảnh, xóa tất cả nội dung ở vị trí vị trí kết thúc của file ảnh ( xóa mã bí mật)</p>
<p>Lúc này chúng ta chỉ cần sử dụng chúng vào việc chính.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def clear_secret(filename, file_extension):

    if not file_extension in file_end:
        print("Format not supported!")
    else:
        buff = ''
        with open(f"{filename}{file_extension}", 'rb+') as f:
            buff = bytes(f.read())
            index = buff.index(file_end[file_extension])

            f.truncate(index+len(file_end[file_extension]))</pre>
<h3>Hàm Main</h3>
<p>Về cơ bản, chúng ta có 3 tính năng sau:</p>
<ul>
<li>Append: sẽ thêm tin nhắn bí mật vào hình ảnh</li>
<li>Retrieve: sẽ hiển thị tin nhắn bí mật</li>
<li>Clear: sẽ xóa tin nhắn bí mật</li>
</ul>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">if __name__=="__main__":
    request = sys.argv[1]
    filename, file_extension = os.path.splitext(sys.argv[2])

    if request == "r":
        secret = retrieve_secret(filename, file_extension)
        print(secret)
    
    elif request == "a":
        append_secret(filename, file_extension, sys.argv[3])
    
    elif request == "c":
        clear_secret(filename, file_extension)
    
    else:
        print("[!] Wrong request, please use 'r' or 'a'")</pre>
<p>Kết hợp các hàm lại với nhau ta sẽ có một chương trình tin nhắn vào hình ảnh bằng Python hoàn chỉnh:</p>
<p>Tạo file <code>main.py</code> với nội dung:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">import sys
import os

file_end = {
    ".png": b'\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82',
    ".jpg": b'\xff\xd9'
}

def retrieve_secret(filename, file_extension):
    if not file_extension in file_end:
        print("Format not supported!")
    else:
        with open(f"{filename}{file_extension}", 'rb') as f:
            buff = bytes(f.read())
            index = buff.index(file_end[file_extension])

            return buff[index+len(file_end[file_extension]):].decode('utf-8')

def append_secret(filename, file_extension, secret):
    with open(f"{filename}{file_extension}", "ab") as f:
        f.write(bytes(secret, encoding="utf-8"))

def clear_secret(filename, file_extension):

    if not file_extension in file_end:
        print("Format not supported!")
    else:
        buff = ''
        with open(f"{filename}{file_extension}", 'rb+') as f:
            buff = bytes(f.read())
            index = buff.index(file_end[file_extension])

            f.truncate(index+len(file_end[file_extension]))

if __name__=="__main__":
    request = sys.argv[1]
    filename, file_extension = os.path.splitext(sys.argv[2])

    if request == "r":
        secret = retrieve_secret(filename, file_extension)
        print(secret)
    
    elif request == "a":
        append_secret(filename, file_extension, sys.argv[3])
    
    elif request == "c":
        clear_secret(filename, file_extension)
    
    else:
        print("[!] Wrong request, please use 'r' or 'a'")</pre>
<h2>Cách sử dụng Python thêm/đọc/xóa tin nhắn trong file ảnh</h2>
<p>Chuẩn bị 1 tấm ảnh và đặt tên là <code>anonyviet.jpg</code> hoặc <code>anonyviet.png</code></p>
<p>Thêm tin nhắn bí mật vào hình ảnh:</p>
<p>Linux:<code>python main.py a anonyviet.jpg "tin nhắn bí mật"</code></p>
<p>Đọc tin nhắn bí mật trong file ảnh:</p>
<p><code>python main.py r anonyviet.jpg</code></p>
<p>Xóa tin nhắn đã thêm trong ảnh:</p>
<p><code>python main.py c anonyviet.jpg</code></p>
<p>Đây là kỹ thuật Steganography giúp ẩn giấy nội dung tin nhắn vào hình ảnh bằng Python, bạn có thể sáng chế thêm việc mã hóa code để người khác khi đọc được nội dung cũng không giải mã được trừ khi có Private Key. Đây là bài tập nâng cao, các bạn thử tự áp dụng vào thực tế nhé.</p>
<h2>Giải thưởng:</h2>
<p>05 bạn tìm được &#8220;Nội dung bí mật&#8221; và trong tấm ảnh bên dưới và <span style="text-decoration: underline;">ghi cách giải</span> sau đó bình luận dưới bài viết này sẽ được tặng Card điện thoại 10K nha.</p>
<p>&nbsp;</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/11/anonyviet.jpg" alt="anonyviet" width="320" height="320" title="Thêm &quot;tin nhắn bí mật&quot; vào hình ảnh bằng Python: Steganography 42"></p>
<h2>Câu hỏi thường gặp</h2>
<h3>Phương pháp này có an toàn không?</h3>
<p>Phương pháp này không được coi là an toàn tuyệt đối.  Thông tin ẩn có thể bị phát hiện nếu người khác biết về kỹ thuật này và kiểm tra file ảnh.</p>
<h3>Tôi có thể sử dụng phương pháp này với các định dạng file nào?</h3>
<p>Hiện tại, mã nguồn đã hỗ trợ .jpg và .png.  Việc hỗ trợ các định dạng khác cần phải chỉnh sửa mã nguồn để phù hợp với cấu trúc file của chúng.</p>
<h3>Nếu tôi xóa tin nhắn bí mật, liệu file ảnh gốc có bị ảnh hưởng?</h3>
<p>File ảnh gốc sẽ được giữ nguyên, chỉ có phần dữ liệu được thêm vào (tin nhắn bí mật) sẽ bị xóa bỏ.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/them-tin-nhan-bi-mat-vao-hinh-anh-bang-python/feed/</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
		<item>
		<title>Chương 3: Chuỗi &#8211; Python cơ bản</title>
		<link>https://anonyviet.com/chuong-3-chuoi-python-co-ban/</link>
					<comments>https://anonyviet.com/chuong-3-chuoi-python-co-ban/#respond</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Fri, 30 Sep 2022 14:11:47 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[chuỗi]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python cơ bản]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=43697</guid>

					<description><![CDATA[Chuỗi là tập các ký tự gồm các chữ cái hoặc chữ cái và số. Trong cuộc sống thường ngày, chúng ta gặp &#8220;chuỗi&#8221; thường xuyên như những câu chữ trong bài này. Ví dụ về chuỗi: "Đây là Website AnonyViet.com" "Thứ 2 là ngày đầu tuần" "1 2 3 5 anh đánh rơi nhịp [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Chuỗi là tập các ký tự gồm các chữ cái hoặc chữ cái và số. Trong cuộc sống thường ngày, chúng ta gặp &#8220;chuỗi&#8221; thường xuyên như những câu chữ trong bài này. Ví dụ về chuỗi:</p>
<ul>
<li><code>"Đây là Website AnonyViet.com"</code></li>
<li><code>"Thứ 2 là ngày đầu tuần"</code></li>
<li><code>"1 2 3 5 anh đánh rơi nhịp nào không"</code></li>
</ul>
<h2>Cách tạo 1 chuỗi trong Python</h2>
<p>Trong Python, chuỗi được định nghĩa nằm trong dấu <strong>ngoặc đơn</strong> hoặc <strong>ngoặc kép</strong> hoặc <strong>3 dấu nháy đơn</strong>:</p>
<p><strong>Ví dụ tạo chuỗi bằng dấu Ngoặc đơn:</strong></p>
<p><code>s1 = 'Đây là Website AnonyViet.com'</code></p>
<p><strong>Ví dụ về định nghĩa chuỗi bằng dấu Ngoặc kép:</strong></p>
<p><code>s2 = "Thứ 2 là ngày đầu tuần"</code></p>
<p><strong>Ví dụ về định nghĩa chuỗi bằng 3 dấu nháy đơn. Với 3 dấu &#8221;&#8217; bạn có thể viết chuỗi trên nhiều dòng.</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">s3 = '''Cộng hòa xã hội chủ nghĩa Việt Nam
Độc lập - Tự do - Hạnh phúc'''</pre>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/tao-chuoi-trong-python.jpg" alt="tao chuoi trong python" width="1212" height="314" title="Chương 3: Chuỗi - Python cơ bản 55"></p>
<p>Để nối chuỗi ta dùng phép toán <code>+</code></p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/Capture.png" alt="Chương 3: Chuỗi - Python cơ bản 28" width="465" height="271" title="Chương 3: Chuỗi - Python cơ bản 56"></p>
<h2>Một số hàm xử lý chuỗi trong Python</h2>
<table style="width: 88.3591%;" width="460">
<tbody>
<tr>
<td style="width: 34.2572%;" width="72">upper, lower</td>
<td style="width: 65.6379%;" width="388">Xử lý in Hoa, in thường</td>
</tr>
<tr>
<td style="width: 34.2572%;">rjust</td>
<td style="width: 65.6379%;">Căn lề phải</td>
</tr>
<tr>
<td style="width: 34.2572%;">ljust</td>
<td style="width: 65.6379%;">Căn lề trái</td>
</tr>
<tr>
<td style="width: 34.2572%;">center</td>
<td style="width: 65.6379%;">Căn gữa</td>
</tr>
<tr>
<td style="width: 34.2572%;">strip</td>
<td style="width: 65.6379%;">Xóa khoảng trắng dư thừa</td>
</tr>
<tr>
<td style="width: 34.2572%;">startswith</td>
<td style="width: 65.6379%;">Kiểm tra Chuỗi có phải bắt đầu là ký tự?</td>
</tr>
<tr>
<td style="width: 34.2572%;">endswith</td>
<td style="width: 65.6379%;">Kiểm tra Chuỗi có phải kết thúc là ký tự?</td>
</tr>
<tr>
<td style="width: 34.2572%;">count</td>
<td style="width: 65.6379%;">Đếm số lần xuất hiện trong Chuỗi</td>
</tr>
<tr>
<td style="width: 34.2572%;">find</td>
<td style="width: 65.6379%;">Tìm kiếm Chuỗi con</td>
</tr>
<tr>
<td style="width: 34.2572%;">format</td>
<td style="width: 65.6379%;">Định dạng Chuỗi</td>
</tr>
<tr>
<td style="width: 34.2572%;">len ()</td>
<td style="width: 65.6379%;">Trả về số lượng ký tự trong chuỗi, dùng index để lấy ký tự ra: str[index]</td>
</tr>
</tbody>
</table>
<h3><strong>Bài tập 1: Chuyển tất cả chữ in thường thành in hoa.</strong></h3>
<p>Ta sẽ tạo biến <code>s1</code> với đầu vào là <code>input()</code>.</p>
<p>Sau khi biến <code>s1</code> có giá trị nhập từ bàn phím rồi, ta sẽ chuyển thành in hoa bằng hàm <code>upper()</code>. Khi đó công thức sẽ là <code>s1.upper()</code>. Cuối cùng là dùng lệnh <code>print()</code> để in ra màn hình.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/27-09-2022-09-31-24-1.jpg" alt="Chương 3: Chuỗi - Python cơ bản 29" width="982" height="184" title="Chương 3: Chuỗi - Python cơ bản 57"></p>
<p>Tương tự, hàm <code>lower()</code> sẽ chuyển chữ HOA về chữ thường. Bạn hãy tự làm ví dụ ngược lại nhé.</p>
<h3><strong>Bài tập 2: Canh lề trái cho chuỗi &#8220;AnonyViet&#8221; với 5 dấu *</strong></h3>
<p><strong>Lưu ý</strong> nếu số ký tự muốn chèn nhỏ hơn Chuỗi gốc thì không có gì thay đổi.</p>
<p><strong>Mặc định ký tự sẽ là khoảng trắng,</strong> bạn có thể thay đổi thành các ký tự khác như dấu *,$,@ hoặc bất kỳ ký tự nào trên bàn phím</p>
<p>Ta sẽ tạo biến <code>s1</code> chứa chuỗi <code>AnonyViet</code>.</p>
<p>Ta có <code>AnonyViet</code> có 9 ký tự, do đó để chèn ký tự tiếp theo thì độ dài phải bắt đầu từ 10. Vâỵ để thêm 5 ký tự *, ta sẽ có công thức độ dài là <code>10+5 = 15</code>.</p>
<p>Canh lên trái ta sẽ dùng hàm <code>ljust(độ dài, ký tự)</code>, vậy để canh lề trái với 10 dấu * cho chuỗi <code>s1</code> sẽ là <code>s1.ljust(15,*)</code> Cuối cùng là dùng lệnh <code>print()</code> để in ra màn hình.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/27-09-2022-09-52-49-1.jpg" alt="Chương 3: Chuỗi - Python cơ bản 30" width="1122" height="192" title="Chương 3: Chuỗi - Python cơ bản 58"></p>
<p>Tương tự, các bạn hãy thử sức với canh lề phải và canh lề giữa trong Python nhé!</p>
<h3><strong>Bài tập 3: Xóa các dấu cách dư thừa ở đầu dòng và cuối dùng</strong></h3>
<p>Python hỗ trợ hàm chuẩn hóa chuỗi, giúp xóa các khoảng trắng dư thừa ở đầu và cuối chuỗi. Bạn có thể dùng hàm <code>strip()</code> để thực hiện việc này.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/27-09-2022-10-03-05-1.jpg" alt="Chương 3: Chuỗi - Python cơ bản 31" width="592" height="362" title="Chương 3: Chuỗi - Python cơ bản 59"></p>
<h3><strong>Bài tập 3: Kiểm tra xem có cụm từ Anony trong chuỗi &#8220;AnonyViet đẹp trai&#8221; không?</strong></h3>
<p>Python có 2 hàm <code>startswith()</code> và <code>endswith()</code> để kiểm tra trong chuỗi đã có có tồn tại chuỗi con không? Nếu có trả về <strong>True</strong>, nếu không trả về <strong>False </strong></p>
<p>Lưu ý: 2 hàm này có phân việt chữ hoa và chữ thường.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/27-09-2022-10-09-57-1.jpg" alt="Chương 3: Chuỗi - Python cơ bản 32" width="1081" height="244" title="Chương 3: Chuỗi - Python cơ bản 60"></p>
<p>Hãy thử bài trên với hàm <code>endswith()</code> nhé.</p>
<h3><strong>Bài tập 4: Tìm vị trí chữ V trong chuỗi &#8220;AnonyViet&#8221;</strong></h3>
<p>Python có hàm <code>find()</code> dùng để tìm vị trí đầu tiên của ký tự trong chuỗi. Lưu ý: vị trí trong Python bắt đầu từ <strong>0</strong> nhé.</p>
<p>Ta có chuỗi <code>s1 = "AnonyViet"</code>. Để tìm vị trí đầu tiên xuất hiện chữ V ta dùng lệnh <code>find("v")</code>. Sau đó dùng lệnh <code>print()</code> để in ra vị trí.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/27-09-2022-10-16-41.png" alt="Chương 3: Chuỗi - Python cơ bản 33" width="937" height="55" title="Chương 3: Chuỗi - Python cơ bản 61"></p>
<p>Như vậy kết quả sẽ ra vị trí chữ V đầu tiên trong chuỗi AnonyViet là: <strong>5</strong></p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/27-09-2022-10-18-24-1.jpg" alt="Chương 3: Chuỗi - Python cơ bản 34" width="489" height="214" title="Chương 3: Chuỗi - Python cơ bản 62"></p>
<h3><strong>Bài tập 4: Tìm chữ vị trí cuối cùng của chữ &#8220;n&#8221; trong chuỗi &#8220;AnonyViet&#8221;</strong></h3>
<p>Trong python ta có hàm <code>rfind()</code>, tìm vị trí cuối cùng được tìm thấy. Để giải bài này, ta thực hiện như sau:</p>
<p>Tạo biến s1 chứa chuỗi AnonyViet:</p>
<p><code>s1 = "AnonyViet"</code></p>
<p>Để in chữ n cuối cùng trong chuỗi s1 ta dùng lệnh <code>print()</code> kết hợp <code>s1.rfind("n")</code>.</p>
<p>Kết quả là <code>print(s1.rfind("n"))</code></p>
<p>Do Python tính từ vị trí số 0, nên sẽ đếm được vị trí chữ n cuối cùng là <strong>3</strong></p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/30-09-2022-08-52-23.png" alt="Chương 3: Chuỗi - Python cơ bản 35" width="646" height="130" title="Chương 3: Chuỗi - Python cơ bản 63"></p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/30-09-2022-08-49-46.png" alt="Chương 3: Chuỗi - Python cơ bản 36" width="648" height="309" title="Chương 3: Chuỗi - Python cơ bản 64"></p>
<p><strong>Trường hợp nếu không có từ nào trong chuỗi sẽ trả về -1. </strong></p>
<p>Ví dụ bạn cần tìm chữ <code>X</code> trong chuỗi &#8220;AnonyViet&#8221;.</p>
<p>Do X không xuất hiện trong AnonyViet nên kết quả sẽ trả về <code>-1</code>.</p>
<h3><strong>Bài tập 5: Tính số lần xuất hiện từ &#8220;no&#8221; trong chuỗi &#8220;AnonyViet&#8221;</strong></h3>
<p>Ta có hàm <code>count()</code> để đếm số lần xuất hiện của chuỗi con trong chuỗi mẹ. Ta thực hiện như sau:</p>
<p><code>s1 = "AnonyViet"</code></p>
<p><code>print(s1.count("no")</code></p>
<p>Kết quả sẽ ra: <strong>1.</strong> Do trong chuỗi xuất hiện 1 lần chữ no =&gt; A<span style="color: #ff0000;"><strong>no</strong></span>nyViet</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/30-09-2022-09-00-08.png" alt="Chương 3: Chuỗi - Python cơ bản 37" width="574" height="278" title="Chương 3: Chuỗi - Python cơ bản 65"></p>
<h3><strong>Bài tập 6: In chữ Viet trong chuỗi &#8220;AnonyViet&#8221;</strong></h3>
<p>Trong python ta có thể <strong>lấy chuỗi con</strong> bằng cách sử dụng <strong>khoảng cách</strong> từ vị trí A đến vị trí B theo công thức [A:B]</p>
<ul>
<li>Phía sau dấu : nếu không có gì là lấy vị trí cuối cùng</li>
<li>Phía trước dấu : nếu không có gì là lấy vị trí đầu tiên</li>
</ul>
<p>Trong chuỗi &#8220;AnonyViet&#8221; ta có vị trí tính từ 0. Để tách chuỗi bạn thực hiện như sau:</p>
<p><code>s1 = "AnonyViet"</code></p>
<p><code>print(s1[5:])</code> #do chữ t ở vị trí cuối cùng lên sau dấu : ta để trống.</p>
<p><strong>Kết quả:</strong> <strong>Viet</strong></p>
<p>&nbsp;</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/30-09-2022-09-09-24.png" alt="Chương 3: Chuỗi - Python cơ bản 38" width="270" height="227" title="Chương 3: Chuỗi - Python cơ bản 66"></p>
<p>Còn 2 hàm tách chuỗi và nối chuỗi chúng ta sẽ gặp ở Chương 4, khi đó sẽ dùng vòng lặp để thực hiện 2 lệnh này.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Chuỗi trong Python được định nghĩa như thế nào?</h3>
<p>Chuỗi trong Python được định nghĩa bằng cách đặt các ký tự trong dấu ngoặc đơn (&#8216;&#8230;&#8217;), ngoặc kép (&#8220;&#8230;&#8221;), hoặc ba dấu nháy đơn (&#8221;&#8217;&#8230;&#8221;&#8217;). Ba dấu nháy đơn cho phép chuỗi trải trên nhiều dòng.</p>
<h3>Làm thế nào để nối hai chuỗi lại với nhau trong Python?</h3>
<p>Sử dụng toán tử cộng (+) để nối hai chuỗi lại với nhau. Ví dụ:  <code>chuoi1 = "Hello" ; chuoi2 = " World"; chuoi3 = chuoi1 + chuoi2; print(chuoi3)</code> sẽ in ra &#8220;Hello World&#8221;.</p>
<h3>Hàm `len()` trong Python dùng để làm gì khi áp dụng với chuỗi?</h3>
<p>Hàm `len()` trả về độ dài (số lượng ký tự) của một chuỗi. Ví dụ: <code>chuoi = "Python"; do_dai = len(chuoi); print(do_dai)</code> sẽ in ra 6.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/chuong-3-chuoi-python-co-ban/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Chương 2: Biến và định danh &#8211; Python cơ bản</title>
		<link>https://anonyviet.com/chuong-2-bien-va-dinh-danh/</link>
					<comments>https://anonyviet.com/chuong-2-bien-va-dinh-danh/#comments</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Fri, 23 Sep 2022 04:19:50 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[lập trình python]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python cơ bản]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=43639</guid>

					<description><![CDATA[Biến Biến là một đơn vị lưu trữ trên bộ nhớ của máy tính, lưu trữ các giá trị có thể được dùng để tính toán xử lý. Biến có thể lưu trữ dữ liệu dạng chuỗi, dạng số … Bằng cách gán các kiểu dữ liệu khác nhau cho biến, ta sẽ tạo ra [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2><strong>Biến</strong></h2>
<ul>
<li>Biến là một đơn vị lưu trữ trên bộ nhớ của máy tính, lưu trữ các giá trị có thể được dùng để tính toán xử lý.</li>
<li>Biến có thể lưu trữ dữ liệu dạng chuỗi, dạng số …</li>
<li>Bằng cách gán các kiểu dữ liệu khác nhau cho biến, ta sẽ tạo ra các biến kiểu số nguyên, số thập phân, chuỗi…</li>
<li>Biến cần được khai báo trước khi sử dụng.</li>
<li>Cú pháp khai báo và gán giá trị cho biến: <strong>tên_biến</strong> = &lt;<strong>giá trị</strong>&gt;.</li>
<li>Ta có thể khai báo và gán giá trị cho nhiều biến cùng một lúc, cú pháp: <code>biến_1</code>, <code>biến_2</code>, <code>biến_3…</code> = <code>&lt;giá_trị_1&gt;</code>, <code>&lt;giá_trị_2&gt;</code>, <code>&lt;giá_trị_3&gt;</code>,…</li>
</ul>
<h2><strong>Định danh (Identifier)</strong></h2>
<ul>
<li>Khi lập trình, ta thường đặt tên cho các biến (variable), phương thức/hàm (function), lớp (class), module và các đối tượng khác. Việc đặt tên như thế được gọi là <strong>định danh (identifier)</strong>.</li>
<li>Identifier được bắt đầu bằng các ký tự A – Z, a – z, hoặc dấu _, tiếp theo là các ký tự chữ, ký tự số 0 – 9. Identifier trong <a href="https://anonyviet.com/?s=python">Python</a> có phân biệt chữ hoa và chữ thường, đặc biệt khi đặt tên, Python không sử dụng các ký tự dấu câu như @, #, $, % …</li>
<li>Khi đặt tên biến cần đặt một tên có ý nghĩa và có tính gợi nhớ cao. Trong trường hợp tên biến gồm nhiều tiếng ghép lại, thông thường ta sẽ có 2 cách sử dụng để đặt tên.</li>
</ul>
<p><strong>Cách 1</strong>: Các tiếng cách nhau bằng dấu gạch dưới <code>_</code>: <code>ten_hoc_sinh</code>, <code>nghiem_phuong_trinh</code>.</p>
<p><strong>Cách 2</strong>: Viết theo kiểu “lạc đà” (Camel), các chữ cái đầu của mỗi tiếng sẽ được viết in hoa: <code>TenHocSinh</code>, <code>NghiemPhuongTrinh</code>.</p>
<h3>Một số quy tắc của định danh:</h3>
<p>&#8211; Tên class bắt đầu bằng chữ hoa. Tất cả identifier khác bắt đầu bằng chữ thường.</p>
<p>&#8211; Tên function viết thường, các từ nối với nhau bằng dấu gạch dưới <code>_</code>.</p>
<p>&#8211; Không sử dụng các từ khoá (keyword) trong Python khi đặt tên cho bất kỳ identifier nào, như: <code>and</code>, <code>assert</code>, <code>break</code>, <code>class</code>, <code>continue</code>, <code>def</code>, <code>del</code>, <code>elif</code>, <code>else</code>, <code>except</code>, <code>exec</code>, <code>finally</code>, <code>for</code>, <code>from</code>, <code>global</code>, <code>if</code>, <code>import</code>, <code>in</code>, <code>is</code>, <code>lambda</code>, <code>not</code>, <code>or</code>, <code>pass</code>, <code>print</code>, <code>raise</code>, <code>return</code>, <code>try</code>, <code>while</code>, <code>with</code>, <code>yield</code>…</p>
<h3>Các ví dụ khi đặt tên biến:</h3>
<p>&#8211; <strong><code>1_gia_tri</code></strong>: tên biến không hợp lệ vì ký tự bắt đầu là một ký tự số.</p>
<p>&#8211; <strong><code>nghiem_x1</code></strong>: tên biến hợp lệ, thể hiện rõ sư phân cách bằng cách sử dụng dấu gạch dưới.</p>
<p>&#8211;<code> </code><strong><code>ty_gia_$</code></strong>: tên biến không hợp lệ vì tên biến có chứa ký tự $ là một ký tự đặc biệt.</p>
<p>&#8211; <strong><code>tenhocsinh</code></strong>: tên biến hợp lệ, tuy nhiên nên tách rời các tiếng ra theo hai cách dùng dấu gạch dưới hay viết kiểu “lạc đà” như trên.</p>
<p>&#8211; <strong><code>print</code></strong>: tên biến không hợp lệ vì trùng với từ khoá hàm “print” trong Python.</p>
<h2>Bài tập</h2>
<p>Bên dưới là một số bài tập lập trình cơ bản về biến và định danh, tính toán cơ bản giúp bạn làm quen và hiểu hơn về thao tác lập trình Python. Mọi thắc mắc các bạn cứ comment bên dưới nha.</p>
<h3><strong>Bài 1:</strong></h3>
<p>Viết chương trình tính tiền hàng theo công thức: <code>Thành tiền = Số lượng * Đơn giá</code>.</p>
<p><strong>Mô tả:</strong> nhập dữ liệu số lượng hàng và đơn giá bằng lệnh <code>input()</code> theo kiểu dữ liệu <strong>integer (int)</strong> vào 2 biến <code>so_luong</code> và <code>don_gia</code>. In ra màn hình bằng lệnh <code>print()</code> giá trị thành tiền bằng cách lấy số lượng nhân cho đơn giá.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/23-09-2022-11-08-07-1.jpg" alt="Chương 2: Biến và định danh - Python cơ bản 44" width="538" height="226" title="Chương 2: Biến và định danh - Python cơ bản 72"></p>
<h3>Bài 2:</h3>
<p>Viết chương trình tính diện tích và chu vi hình tròn.</p>
<p><strong>Mô tả:</strong> do tính diện tích và chu vi hình tròn ta cần sử dụng hằng số pi trong toán học nên ta cần dùng lệnh import để khai báo thư viện math dùng trong toán học. Nhập giá trị bán kính hình tròn bằng lệnh <code>input()</code> với kiểu dữ liệu <strong>integer (int)</strong> vào biến <code>ban_kinh</code>.</p>
<p>Tính chu vi hình tròn theo công thức: hai lần bán kính nhân cho giá trị pi, giá trị pi sẽ được lấy từ thư viện <code>math</code> với cú pháp: <code>math.pi</code>, giá trị chu vi hình tròn sau khi tính sẽ được gán giá trị vào biến <code>p</code>. Tương tự, ta cũng tính diện tích hình tròn theo công thức: bình phương bán kính nhân cho pi, giá trị diện tích sau đó sẽ gán vào biến <code>s</code>.</p>
<p>Dùng hàm <code>print()</code> để in giá trị chu vi và diện tích hình tròn, hai giá trị này sẽ được định dạng theo kiểu số thực <strong>float (f)</strong> và được làm tròn dưới dạng hai chữ số thập phân (<code>%.2f và %p</code>) (Sẽ được trình bày cụ thể ở Chương 3).</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/23-09-2022-11-09-48-1.jpg" alt="Chương 2: Biến và định danh - Python cơ bản 45" width="504" height="394" title="Chương 2: Biến và định danh - Python cơ bản 73"></p>
<h3>Bài 3</h3>
<p>Viết chương trình đổi nhiệt độ từ độ C sang độ F.</p>
<p><strong>Mô tả:</strong> Nhập nhiệt độ C có kiểu số nguyên (integer – int) vào biến C bằng lệnh input(). Tính giá trị quy đổi sang nhiệt độ F theo công thức: 9/5 * nhiệt độ C +32, và gán giá trị này vào biến F.</p>
<p>Dùng hàm <code>print()</code> để in ra kết quả, hai giá trị nhiệt độ C và độ F đều mang kiểu số thực (float – f) và được làm tròn thành 2 chữ số thập phân. Cặp giá trị %(C,F) thể hiện thứ tự in giá trị dựa theo ký hiện % trong việc in kết quả.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/23-09-2022-11-11-21-1.jpg" alt="Chương 2: Biến và định danh - Python cơ bản 46" width="467" height="241" title="Chương 2: Biến và định danh - Python cơ bản 74"></p>
<h3>Bài 4</h3>
<p>Viết chương trình xử lý chuỗi theo yêu cầu:</p>
<ul>
<li>Chuỗi s1, s2, s3 được nhập vào từ bàn phím.</li>
<li>Chỉ mục index được nhập từ bàn phím.</li>
<li>Cho biết chiều dài của chuỗi s1, s2 và s3.</li>
<li>Tạo chuỗi con s4 từ chuỗi s1 với nội dung từ Index đến hết chuỗi.</li>
<li>Lặp lại chuỗi s2: 2 lần.</li>
</ul>
<p><strong>Mô tả:</strong> Dùng lệnh <code>input()</code> nhập dữ liệu dạng chuỗi (string – str) vào các biến s1, s2, s3. Nhập giá trị index theo kiểu số nguyên (integer – int) vào biến index. Chiều dài của các chuỗi được tính bằng hàm <code>len()</code>. Lệnh <code>s1[index:]</code> dùng để tạo 1 chuỗi mới bắt đầu từ vị trí index đến cuối chuỗi s1. Việc tạo chuỗi mới gấp đôi bằng cách toán tử nhân *.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/23-09-2022-11-12-29-1.jpg" alt="Chương 2: Biến và định danh - Python cơ bản 47" width="819" height="396" title="Chương 2: Biến và định danh - Python cơ bản 75"></p>
<h2>Bài 5</h2>
<p>Viết chương trình tính tiền lãi gửi tiết kiệm</p>
<p>Tính tiền lãi gửi tiết kiệm: Lãi suất 1 năm, số tiền gửi và số tháng gửi được nhập vào từ bàn phím. Viết chương trình tính tiền lãi và tính tổng số tiền nhận được sau khi hết thời hạn gửi tiền:</p>
<p>Tiền lãi = (Số tiền gửi * Số tháng) * (Lãi suất năm/12) ;</p>
<p>Tổng số tiền = Số tiền gửi + Tiền lãi.</p>
<p>Sau đó hiển thị kết quả.</p>
<p><strong>Mô tả:</strong> Nhập các giá trị lãi suất dạng số thực (float), số tiền gửi và số tháng thuộc kiểu số nguyên (integer – int) vào các biến <code>lai_suat</code>, <code>so_tien_gui</code> và <code>so_thang</code>. Tiền lãi tính theo công thức cho trước và gán vào biến <code>so_tien_lai</code>. Cộng số tiền gửi và số tiền lãi vừa tính vào biến <code>tong_tien</code>. Dùng lệnh <code>print()</code> để in ra kết quả.</p>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/23-09-2022-11-13-23-1.jpg" alt="Chương 2: Biến và định danh - Python cơ bản 48" width="746" height="396" title="Chương 2: Biến và định danh - Python cơ bản 76"></p>
<p><strong><em>Lưu ý:</em></strong><em> Bài viết được biên soạn bởi bạn <a href="https://www.facebook.com/LeTanThuan.Official" target="_blank" rel="noopener">Lê Tuấn Thuận</a> có mục tiêu giới thiệu và hỗ trợ giảng dạy các bạn học sinh hay các bạn mới bắt đầu muốn làm quen và học tập ngôn ngữ lập trình Python nên các câu lệnh và nội dung mang tính chất đơn giản và dễ hiểu, dễ đọc.</em></p>
<p><strong><em>Tài liệu tham khảo:</em></strong></p>
<ul>
<li><em>Giáo trình &#8220;Tự học lập trình Python căn bản&#8221; (2019); Vũ Hải Quân, Cao Xuân Nam, Hoàng Trung Hiếu, Nguyễn Hải Triều, Vòng Chí Tài; Phòng Thí nghiệm Trí tuệ Nhân tạo (AILab), Trường Đại học Khoa học Tự nhiên (ĐHQG-TPHCM); Nhà xuất bản Đại học Quốc gia TP. Hồ Chí Minh.</em></li>
<li><em>Tài liệu học tập &#8220;Lập trình Python cơ bản&#8221; (2017); Trung tâm Tin học Trường Đại học Khoa học Tự nhiên TP.HCM.</em></li>
</ul>
<h2>Câu hỏi thường gặp</h2>
<h3>Biến trong Python là gì và cách khai báo như thế nào?</h3>
<p>Biến là đơn vị lưu trữ trên bộ nhớ máy tính, chứa các giá trị có thể dùng để tính toán.  Khai báo và gán giá trị cho biến theo cú pháp: <code>tên_biến = <giá trị></code>.</p>
<h3>Định danh (Identifier) trong Python là gì và có những quy tắc nào cần lưu ý?</h3>
<p>Định danh là tên đặt cho biến, hàm, lớp, v.v&#8230;  Quy tắc: bắt đầu bằng chữ cái (A-Z, a-z) hoặc dấu gạch dưới (_), tiếp theo là chữ cái, số (0-9) hoặc dấu gạch dưới. Phân biệt chữ hoa, chữ thường và không được trùng với từ khóa Python.</p>
<h3>Tôi có thể khai báo nhiều biến cùng lúc trong Python không?</h3>
<p>Có, bạn có thể khai báo và gán giá trị cho nhiều biến cùng lúc bằng cách: <code>biến_1, biến_2, biến_3 = <giá_trị_1>, <giá_trị_2>, <giá_trị_3></code></p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/chuong-2-bien-va-dinh-danh/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Chương 1: Làm quen với Python &#8211; Python cơ bản</title>
		<link>https://anonyviet.com/chuong-1-lam-quen-voi-python/</link>
					<comments>https://anonyviet.com/chuong-1-lam-quen-voi-python/#respond</comments>
		
		<dc:creator><![CDATA[AnonyViet]]></dc:creator>
		<pubDate>Fri, 23 Sep 2022 03:55:36 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[lập trình]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[python cơ bản]]></category>
		<guid isPermaLink="false">https://anonyviet.com/?p=43634</guid>

					<description><![CDATA[Python là gì? Python là một ngôn ngữ lập trình cấp cao, thông dịch, hướng đối tượng và đa mục đích. Triết lý thiết kế: code dễ đọc, dễ viết, cú pháp ngắn gọn, cấu trúc rõ ràng, phù hợp để xây dựng các loại ứng dụng với quy mô khác nhau. Đặc điểm: code [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>Python là gì?</h2>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><a href="https://anonyviet.com/?s=python">Python</a> là một ngôn ngữ lập trình cấp cao, thông dịch, hướng đối tượng và đa mục đích.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Triết lý thiết kế: code dễ đọc, dễ viết, cú pháp ngắn gọn, cấu trúc rõ ràng, phù hợp để xây dựng các loại ứng dụng với quy mô khác nhau.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Đặc điểm: code dễ đọc, dễ học; bố cục trực quan, dễ hiểu; lập trình hướng đối tượng, lập trình hàm, thủ tục (đa lập trình); từ khoá ít, cấu trúc đơn giản; thư viện chuẩn rộng lớn, tương thích và tích hợp với UNIX, Windows và Macintosh; ngôn ngữ thông dịch, quá trình debug dễ dàng; hỗ trợ lập trình GUI, mã nguồn mở, có thể tích hợp với các ngôn ngữ lập trình khác.</span></li>
</ul>
<p><span style="font-weight: 400;">Bên dưới là một số bài tập lập trình cơ bản về nhập xuất dữ liệu, tính toán cơ bản giúp bạn làm quen và hiểu hơn về thao tác lập trình Python. Mọi thắc mắc các bạn cứ comment bên dưới nha.</span></p>
<p><b><i>Lưu ý:</i></b><i><span style="font-weight: 400;"> Bài viết có mục tiêu giới thiệu và hỗ trợ giảng dạy các bạn học sinh hay các bạn mới bắt đầu muốn làm quen và học tập ngôn ngữ lập trình Python nên các câu lệnh và nội dung mang tính chất đơn giản và dễ hiểu, dễ đọc.</span></i></p>
<p><b><i>Tài liệu tham khảo:</i></b></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><i><span style="font-weight: 400;">Giáo trình &#8220;Tự học lập trình Python căn bản&#8221; (2019); Vũ Hải Quân, Cao Xuân Nam, Hoàng Trung Hiếu, Nguyễn Hải Triều, Vòng Chí Tài; Phòng Thí nghiệm Trí tuệ Nhân tạo (AILab), Trường Đại học Khoa học Tự nhiên (ĐHQG-TPHCM); Nhà xuất bản Đại học Quốc gia TP. Hồ Chí Minh.</span></i></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><i><span style="font-weight: 400;">Tài liệu học tập &#8220;Lập trình Python cơ bản&#8221; (2017); Trung tâm Tin học Trường Đại học Khoa học Tự nhiên TP.HCM.</span></i></li>
</ul>
<h2>Bài 1. Viết chương trình ghi chép lại nội dung nhập vào từ bàn phím và xuất ra ngoài màn hình để ghi nhớ.</h2>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/1.jpg" alt="Chương 1: Làm quen với Python - Python cơ bản 52" width="690" height="215" title="Chương 1: Làm quen với Python - Python cơ bản 80"></p>
<p><strong>Chú giải:</strong></p>
<p><span style="font-weight: 400;">&#8211; Lệnh input: dùng để nhập dữ liệu.</span></p>
<p><span style="font-weight: 400;">&#8211; Lệnh print: in ra ngoài màn hình nội dung mong muốn.</span></p>
<h2><span style="font-weight: 400;">Bài 2. Viết chương trình xuất ra màn hình chữ HELLO.</span></h2>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/2.jpg" alt="Chương 1: Làm quen với Python - Python cơ bản 53" width="684" height="248" title="Chương 1: Làm quen với Python - Python cơ bản 81"></p>
<p><strong>Chú giải:</strong></p>
<p><span style="font-weight: 400;">&#8211; Dấu <code>\n</code>: xuống dòng con trỏ.</span></p>
<h2><span style="font-weight: 400;">Bài 3. Viết chương trình tính toán đơn giản.</span></h2>
<p><img decoding="async" class="aligncenter size-full " src="https://anonyviet.com/wp-content/uploads/2022/09/3-1.jpg" alt="Chương 1: Làm quen với Python - Python cơ bản 54" width="428" height="210" title="Chương 1: Làm quen với Python - Python cơ bản 82"></p>
<p style="text-align: right;">Tài liệu được biên soạn bởi bạn<a href="https://www.facebook.com/LeTanThuan.Official" target="_blank" rel="noopener">Lê Tuấn Thuận</a>.</p>
<h2>Câu hỏi thường gặp</h2>
<h3>Python là ngôn ngữ lập trình như thế nào?</h3>
<p>Python là một ngôn ngữ lập trình cấp cao, thông dịch, hướng đối tượng và đa mục đích.  Nó được thiết kế để dễ đọc, dễ viết, với cú pháp ngắn gọn và cấu trúc rõ ràng, phù hợp cho nhiều loại ứng dụng.</p>
<h3>Tôi có thể làm gì với Python?</h3>
<p>Python có thể được sử dụng để xây dựng nhiều loại ứng dụng khác nhau, từ các chương trình nhỏ đến các hệ thống phức tạp.  Nó được ứng dụng rộng rãi trong khoa học dữ liệu, máy học, phát triển web và tự động hóa.</p>
<h3>Python có khó học không?</h3>
<p>Python được biết đến với cú pháp dễ đọc và dễ hiểu, làm cho nó trở thành một ngôn ngữ lập trình lý tưởng cho người mới bắt đầu.  Có rất nhiều tài liệu và nguồn học tập trực tuyến hỗ trợ việc học Python.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://anonyviet.com/chuong-1-lam-quen-voi-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
