<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.6">Jekyll</generator><link href="https://blog.icodes.tech/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.icodes.tech/" rel="alternate" type="text/html" /><updated>2021-12-12T12:35:52+01:00</updated><id>https://blog.icodes.tech/feed.xml</id><title type="html">Icodes.tech coding blog</title><subtitle>A website contains a lot of projects, scripts and codes examples on python automation web-development data science web-scraping ...</subtitle><author><name>{&quot;twitter&quot;=&gt;&quot;mohsiss&quot;}</name></author><entry><title type="html">The best note-taking software for programmers</title><link href="https://blog.icodes.tech/posts/The-best-note-taking-software-for-programmers.html" rel="alternate" type="text/html" title="The best note-taking software for programmers" /><published>2021-10-25T00:00:00+01:00</published><updated>2021-10-25T21:29:56+01:00</updated><id>https://blog.icodes.tech/posts/The-best-note-taking-software-for-programmers</id><content type="html" xml:base="https://blog.icodes.tech/posts/The-best-note-taking-software-for-programmers.html">&lt;p&gt;The best note-taking software for programmers&lt;/p&gt;
&lt;div&gt;
  &lt;img
    data-original-height=&quot;427&quot;
    data-original-width=&quot;800&quot;
    height=&quot;427&quot;
    src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhiCkIQHuLmYE_vgznYO-VMLVbtKRJOgj4lkJEqJoiOgPeM6mj_PplsX3r0w4Dv00M1GYnHPHBcZYBKMYWRpLVxIjf_-zEgaHZB_eHcQE0flefB8UOCCljnwtdY2Mwa8oE_k-oi8b65o5trLO1CkAzVBfd-sCrUNofA3Ad3L3Akb88uXLyhVZk5Rw=s800&quot;
    width=&quot;800&quot;
  /&gt;
&lt;/div&gt;
&lt;p&gt;
  The programmer's note-taking software should meet the following conditions.
  &lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    (1) Cross-platform, supports desktop computers (Windows, Mac, Linux) and
    mobile phones (Android, iOS) at the same time.
  &lt;/li&gt;
  &lt;li&gt;
    (2) Synchronize at any time, open any machine, you can continue writing from
    the previous job.
  &lt;/li&gt;
  &lt;li&gt;
    (3) Real-time storage, if the software is suddenly closed, the content will
    not be lost.
  &lt;/li&gt;
  &lt;li&gt;
    (4) Support Markdown format, which is convenient for direct release later.
  &lt;/li&gt;
  &lt;li&gt;
    (5) Support push to remote Git warehouse, generate historical version, and
    serve as remote backup at the same time.
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  I have been looking for tools that meet these conditions, but most note-taking
  software on the market does not support the above point 5. Git integration is
  either not available or very weak.
  &lt;br /&gt;
  &lt;br /&gt;
  I have used
  &lt;a href=&quot;https://stackedit.io/&quot;&gt;Stackedit.io&lt;/a&gt;
  and
  &lt;a href=&quot;http://HackMD.io&quot;&gt;HackMD.io&lt;/a&gt;
  , but they are not ideal.
&lt;/p&gt;
&lt;div&gt;
  &lt;img
    data-original-height=&quot;361&quot;
    data-original-width=&quot;800&quot;
    height=&quot;361&quot;
    src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiku8DC6c6SYiLUt5rGmHS1btuCcRPVmw9pMyXwf5Vz3zIwm7RMesU0dyUK1U17HHmqbtdFywhEtEtwXK-uwQmYxEgzvVpDQeUvW_9xzCh9sDaW5F0zoxkg81bwtQnauZE6YM6VLgiuELCQ8cUZpavU225Hps1pjUzYUQeuNl1UvBR-pNaZtJh-Qg=s800&quot;
    width=&quot;800&quot;
  /&gt;
&lt;/div&gt;

&lt;p&gt;
  Recently, I finally found the best solution, which is
  &lt;a href=&quot;http://github.dev&quot; target=&quot;_blank&quot;&gt;github.dev&lt;/a&gt;
  officially launched by GitHub .
&lt;/p&gt;
&lt;p&gt;
  As long as you visit the following URL, you can use VS Code to edit the
  specified repository in your browser. You can click&amp;nbsp;
  &lt;a href=&quot;https://github.dev/github/dev&quot; target=&quot;_blank&quot;&gt;here to&lt;/a&gt;
  experience it.
&lt;/p&gt;
&lt;p&gt;
  It is actually the web version of the VS Code editor and is highly integrated
  with Git. With this combination, what other note-taking software would be
  stronger than it!
&lt;/p&gt;
&lt;div&gt;
  &lt;img
    border=&quot;0&quot;
    data-original-height=&quot;565&quot;
    data-original-width=&quot;800&quot;
    height=&quot;565&quot;
    src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEioS2eSn-zbkc6wDDO4c0u8ixCFf4D5LB25AwIz4utcVTQ5u2i6fVYhj0qGtFd-FyRYPhFtrw9g-GlZYgF_GO5yvZGJTblEmJwKQ8zAr1oAdfsHaSG4Kg9KAk7x-UD-sRgUD_-hGqKBEpZG_Yw-3N7YLPAVwYnFiQlzeJR7a2D5SKtUVRoam2sfFw=s800&quot;
    width=&quot;800&quot;
  /&gt;
&lt;/div&gt;
&lt;p&gt;
  To use it, first create a note repository on GitHub, either publicly or
  privately. Then use github.dev to edit, and then push back to the warehouse.
  When changing to another machine, first get the latest version of the document
  from the warehouse, which is simply the perfect solution.
&lt;/p&gt;
&lt;p&gt;
  Even better, GitHub provides a quick entry. Open the GitHub repository
  homepage, click the decimal point ( .) button, the page will automatically
  jump to the VS Code editing environment, which is really convenient.
&lt;/p&gt;
&lt;p&gt;
  &lt;br class=&quot;Apple-interchange-newline&quot; /&gt;
  In addition, there is an unofficial
  &lt;a href=&quot;http://github1s.com&quot;&gt;github1s.com&lt;/a&gt;
  that also provides similar functions. Just add &quot;1s&quot; to the warehouse domain
  name. But after all, it is an unofficial tool, so it is not recommended here.
  &lt;br /&gt;
  &lt;br /&gt;
  github.dev is aimed at the desktop &quot;keyboard + mouse&quot; environment. The touch
  screen of the mobile phone can be used, but it is clumsy after all.
  &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
  If you prefer to use the native mobile app, I recommend
  &lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian&lt;/a&gt;
  . It has a full-platform client, and you can refer to
  &lt;a
    href=&quot;https://forum.obsidian.md/t/mobile-setting-up-ios-git-based-syncing-with-mobile-app-using-working-copy/16499&quot;
  &gt;
    this article
  &lt;/a&gt;
  to set up Git integration.
&lt;/p&gt;
&lt;div&gt;
  &lt;img
    border=&quot;0&quot;
    data-original-height=&quot;370&quot;
    data-original-width=&quot;640&quot;
    height=&quot;370&quot;
    src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhDwpq4xnqLEWoXymD1nm5nq-j71TL_WElux7VhnLUVx6bnmFRYLW0WxwcKMOr3DLABRljeckrvQBYnMJ_eb8QtnHQdn0shtnVZaqialbRvAI_ZmOhRhEISz67mnqXjQeY5lP3T2mdUCRwVUh_uzUsIPHD_OcUX-hNifReCEIgkDmHIfH8S_C1xWQ=s640&quot;
    width=&quot;640&quot;
  /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;
  In addition,
  &lt;a href=&quot;https://fsnot.es/&quot; target=&quot;_blank&quot;&gt;FSNotes&lt;/a&gt;
  is also good, but unfortunately it only supports Apple devices.
  &lt;br /&gt;
&lt;/p&gt;
&lt;div&gt;
  &lt;img
    border=&quot;0&quot;
    data-original-height=&quot;512&quot;
    data-original-width=&quot;800&quot;
    height=&quot;512&quot;
    src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgKmd1FF7aotPOquzDSDuMngkk5dEjn41mpmoaOVDjJWHvtejLKxZ53UHCA_QzaeDv6i6r_PaeFQR_OgJ1bskY9RRMSCP1-gq3--gojhvsgtR0KIY1cRWmVvIVuxMBqJHrkhw2Z2tic7cHjv-4ct35ohSm-KhKQ6pu7jM0P4IB_UFpHuWkIz2f3Eg=s800&quot;
    width=&quot;800&quot;
  /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;
  If you don't need Git integration and Markdown support, it is the easiest. The
  official note-taking apps of several major software giants are very easy to
  use: Google keep , Apple Notes (only Apple devices are supported), and
  Microsoft OneNote .
  &lt;br /&gt;
&lt;/p&gt;
&lt;div&gt;
  &lt;img
    border=&quot;0&quot;
    data-original-height=&quot;450&quot;
    data-original-width=&quot;800&quot;
    height=&quot;450&quot;
    src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBcaQrPXbaaBaThRqGtfFbZ-rp4s1xBiFMcYz9qlvJHdM0CVhUyEbjX0T28ONNj9repbx6VL2HzdWX0CGOnJGNoj-HR72L1t8RDa0dIElvWqVJzqvxJhE6F_rDv3YMtF072ngmWDCTGZjEmCExQGNo0A__vFYb6-WEESG_6ztlBAguV29VzfL5Qw=s800&quot;
    width=&quot;800&quot;
  /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;
  They are all automatic multi-terminal synchronization, the disadvantage is
  that it is not convenient to write large documents, and it is troublesome to
  export data.
&lt;/p&gt;</content><author><name>mohsin</name></author><category term="Programming" /><category term="Tools" /><category term="Python" /><summary type="html">The best note-taking software for programmers The programmer's note-taking software should meet the following conditions. (1) Cross-platform, supports desktop computers (Windows, Mac, Linux) and mobile phones (Android, iOS) at the same time. (2) Synchronize at any time, open any machine, you can continue writing from the previous job. (3) Real-time storage, if the software is suddenly closed, the content will not be lost. (4) Support Markdown format, which is convenient for direct release later. (5) Support push to remote Git warehouse, generate historical version, and serve as remote backup at the same time. I have been looking for tools that meet these conditions, but most note-taking software on the market does not support the above point 5. Git integration is either not available or very weak. I have used Stackedit.io and HackMD.io , but they are not ideal.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhiCkIQHuLmYE_vgznYO-VMLVbtKRJOgj4lkJEqJoiOgPeM6mj_PplsX3r0w4Dv00M1GYnHPHBcZYBKMYWRpLVxIjf_-zEgaHZB_eHcQE0flefB8UOCCljnwtdY2Mwa8oE_k-oi8b65o5trLO1CkAzVBfd-sCrUNofA3Ad3L3Akb88uXLyhVZk5Rw=s800" /><media:content medium="image" url="https://blogger.googleusercontent.com/img/a/AVvXsEhiCkIQHuLmYE_vgznYO-VMLVbtKRJOgj4lkJEqJoiOgPeM6mj_PplsX3r0w4Dv00M1GYnHPHBcZYBKMYWRpLVxIjf_-zEgaHZB_eHcQE0flefB8UOCCljnwtdY2Mwa8oE_k-oi8b65o5trLO1CkAzVBfd-sCrUNofA3Ad3L3Akb88uXLyhVZk5Rw=s800" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Python Binary search explained with examples</title><link href="https://blog.icodes.tech/posts/Python-Binary-search.html" rel="alternate" type="text/html" title="Python Binary search explained with examples" /><published>2021-09-29T00:00:00+01:00</published><updated>2021-09-29T14:48:02+01:00</updated><id>https://blog.icodes.tech/posts/Python-Binary-search</id><content type="html" xml:base="https://blog.icodes.tech/posts/Python-Binary-search.html">&lt;h2&gt;What is Binary search&lt;/h2&gt;
&lt;p&gt;
  Binary search is another fairly intuitive way of searching for things. It's a
  very efficient algorithm.It's a logarithmic algorithm and it's intuitive if
  you imagine you were searching through an actual physical dictionary.
&lt;/p&gt;
&lt;p&gt;
  Binary Search relies upon the list that you're searching to be sorted.Just
  like a dictionary is sorted.
&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;!-- Ezoic - under_second_paragraph - under_second_paragraph --&gt;
  &lt;div id=&quot;ezoic-pub-ad-placeholder-111&quot;&gt; &lt;/div&gt;
  &lt;!-- End Ezoic - under_second_paragraph - under_second_paragraph --&gt;
&lt;/div&gt;
&lt;h2&gt;How Binary search works&lt;/h2&gt;
&lt;h3&gt;Real life example&lt;/h3&gt;
&lt;p&gt;
  So imagine you had a dictionary in front of you and you wanted to search for
  the word &quot;ostrich&quot;. You wouldn't start at page one of the dictionary and then
  go to page 2 and then page 3 and then page 4.
&lt;/p&gt;
&lt;img
  src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg-Q6aogBiNBkHK7QCkcp2xPt3Wxjj0gEqM_-hOOLCKgx4iTcm5wDkO09ycuqATBC16z3sqEtfiMdif3z2STuQEAUXO4E6ZzNc6DXPMThpOjIuwnD7zMW7Vqe3pIxMvpDZ2DrBiTLx9xV6Isjwlxq51OquBmIHVhAVVu_jLms0sQiJu3yQ0VeEVEA=s250&quot;
  alt=&quot;&quot;
/&gt;
&lt;p&gt;
  You'd turn to sort of somewhere in the middle and then you'd be able to
  discard all of the letters to the left all of the pages to the left as you
  turn to them to the middle and then you'd be able to get another section sort
  of somewhere halfway between the stack that you have your breath you cut that
  in half and you'd get that page and then if the O's were on that side you'd
  keep hold of the bit in your left hand or if they were you'd keep hold of the
  bit in your right hand and you'd keep repeating that process until you found
  the word that you were looking for.
&lt;/p&gt;
&lt;h3&gt;Binary search algorithm&lt;/h3&gt;
&lt;p&gt;
  a binary search does something very similar. So it relies on having a sorted
  list so you have this list. Let's say it's 1024 items long. And what you do
  with binary search is you go to the middle item of this sorted list and if
  that's the item you're looking for then that's it.The search is over.
&lt;/p&gt;
&lt;p&gt;
  if the item is not the item you're looking for but is higher than the item
  that you're looking for in value in numerical value or in the latter value
  depending what it is that you're searching for. Then you can say well the item
  that I'm looking for must be in the left part of the list because I know these
  are in the correct order they're sorted.
&lt;/p&gt;
&lt;img
  src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiQ-AHTSrSpmvCIYlCThq1Aak6smbtdKpkHQx6Q2aZIZL7bD6HqeVXHJQWOh2gZMNxVicnWppDL3t7gyS5-fHOIIjmJIkEiob1edrCFDGqEuKxAOmrO-gZQZwdYE4AWYAUPSmnPES8XIFU5njJoVniswlRZAcvu2fVGr4Sn_kU1wjdVe_lLkLMvsQ=s582&quot;
  alt=&quot;&quot;
/&gt;
&lt;p&gt;
  So if I've landed on the midpoint of this list and I'm the item I land on is
  higher in value than the item I'm looking for.I can get rid of all of the
  items to the right of me to the to the right of the item that I've landed on
  because I know that they are also going to be too high. And then you repeat
  that process.
&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;1474747476&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;p&gt;
  But in doing that first step you get rid of half of the items that you're
  searching through so your list of 1024 items is now 512 items and then you
  repeat that process.
&lt;/p&gt;
&lt;img
  class=&quot;in-post-image&quot;
  src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj34mV-r-jVSJFkeFdXkeCkbwLpd3qBAi6lyBX7V5v-bDWqGOwaLZ35xC0eLcD0KJyrxpGaqzeqBcbJjU4tQCHGnLjrVEFhhJ_QirMfxhxAN9hOfLPMYjnSsAkxSXlewuIOVOaUoXyxRyqA4Oj9GrWLyEUSFbQ3-4DASgMBHkVaa8q_VyOSzGt3fw=s247&quot;
  alt=&quot;binary search python&quot;
  width=&quot;247&quot;
  height=&quot;204&quot;
/&gt;
&lt;p&gt;
  But the bit of the list that you've got left you go to the midpoint of your
  sorted list and you determine whether that's the item you're looking for. If
  it's not you ask whether it's higher or lower than the item you're looking
  for.
&lt;/p&gt;
&lt;p&gt;
  If it's higher than you get rid of all the items that are to the right all the
  items that are higher than the item you're on. And if it's lower you get rid
  of all of the items in the other direction. so you've just halved your search
  again You've halved the number of items that you have to search through again.
&lt;/p&gt;
&lt;p&gt;
  So now we're down to 256 and then you keep repeating this process the next
  time you do it you're down to 128 items and then you're down to 64 items and
  then 32 items and then 16 and then 8 then for them too until eventually you
  you reach the item that you're looking for . it's the only item that's left.
&lt;/p&gt;
&lt;p&gt;
  You keep repeating that process until you find the item you're looking for.
  And by doing so each time you're cutting the number of items that you'd have
  to search through by half. So each time the length of the list is halving and
  then halving and then halving and then halving again until it gets down to
  just one item which is either the item you're looking for or it's not the
  item  it doesn't exist.
&lt;/p&gt;
&lt;img
  class=&quot;in-post-image&quot;
  src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjDe82g9O4PSLh2PCEHTRQ1pE2XOw9QEb9AFjVNumVRSdCQj9weB-O-yZ7KkgSFzXVIefMcQFERYADb4P1y0fn-FVOMHQkMu16X6Lcqpv8xyapKhzB7q68Wsc7BsUCXx0f5iw7CVBZ8hPxgeV22yM_jW8T1_LRVzVZKYIhL4ZVtuFdqCNHR6tpPdQ=s400&quot;
  alt=&quot;binary search python&quot;
  width=&quot;400&quot;
  height=&quot;200&quot;
/&gt;
&lt;h2&gt;Binary search in Python&lt;/h2&gt;
&lt;p&gt;
  And so you can see it's a very efficient searching algorithm but it does rely
  on the list being sorted. So anyway we're going to code a binary search in
  Python now binary search algorithm so you can see exactly  how it works right.
  Binary search then. So we have our holding function here.
&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;2239313003&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;def binary_search(item,my_list):
    pass&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
  So we have a function called binary search it also like linear search takes
  the item that you're looking for and the name of the list .We need to know
  whether we found the item we're looking for.
&lt;/p&gt;
&lt;p&gt;
  So to begin with we haven't found it. we'll set it to False but that will
  change if we find what we're looking for. And we also need to keep track of
  the first item in the list. And the last item in the list. Mainly so that we
  can calculate the midpoint of the list because we are going to move to the
  midpoint of the list as we go through and carry out our binary search.
&lt;/p&gt;

&lt;p&gt;
  So if we create a variable and call it first and set that to zero and then we
  create a variable and we call that last and we set that variable to the last
  item in the list. Now that's going to be the length of the list which is my
  list minus 1 because of the zero indexing that we have in Python.
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def binary_search(item,my_list):
    found=False
    first=0
    last=len(my_list)-1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
  &lt;span&gt;
    And then we're going  to create a loop that will keep us searching until
    we've either found what we're looking for or we've exhausted all the search
    options and we haven't returned anything at all. We haven't found the item
    we're looking for.
  &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;span&gt;
    And so what would the condition be for that. Well we want to search while
    certain conditions are met. So it would be a while loop that we're using and
    the conditions that we need to ensure are true that  :
  &lt;/span&gt;
&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;7563367810&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;span&gt;
      we need the first item to be less than or equal to the last item. So that
      is as our list gets shorter because we keep dividing it in two. We need to
      make sure that the first and last are in the right order because they're
      eventually going to converge to one value. And so that's why we need that.
    &lt;/span&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;span&gt;
      we need found to be false because we don't want to continue our search. If
      we found what we're looking for.
    &lt;/span&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  So those are the conditions and then we now need to calculate what our
  midpoint will be because we're going to be moving to our midpoint. And so the
  midpoint is just equal to the first place And the last place divided by two
  but we'll do floor division because we don't want a decimal point because we
  can't have a decimal point for an index. So if we do floor division there that
  will give us our midpoint and it will give us our midpoint every time as this
  list gets shorter and shorter as we iterate through the search.
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def binary_search(item,my_list):
    found=False
    first=0
    last=len(my_list)-1
    while first &amp;lt;=last and found==False:
        midpoint=(first+last)//2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
  &lt;span&gt;
    Now the first thing we need to check is if the item at the midpoint is the
    item we're looking for then we found our item.So we need to make sure that
    we account for that. So if the midpoint equals the item I'm looking for then
    job done. I found what I'm looking for and found equals true.
  &lt;/span&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if my_list[midpoint]==item:
    found=True&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
  &lt;span&gt;
    But if it doesn't we need to either look on the left hand side or on the
    right hand side and the conditions for that are.
  &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;span&gt;
    if the value at the midpoint is less than the item that we're looking for
    then the new list starts on the right hand side. It starts at the next point
    up so we can say that first now equals the midpoint plus 1. And similarly in
    sort of reverse logic if you like otherwise the last item is equal to the
    midpoint minus what's minus 1. Because we're then concerned with just the
    items on the left hand side if midpoint is higher than the item that we're
    looking for because remember we have a sorted list here.
  &lt;/span&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if my_list[midpoint]==item:
    found=True
else:
    if my_list[midpoint]&amp;lt;item:
        first=midpoint+1
    else:
        last=midpoint-1&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;9503274099&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;span&gt;
    So we know that to be true. And that said we just keep iterating through
    that until we find or don't find the item we're looking for. And when we get
    to the end of the search we return found and that will let us know whether
    or not we found the item we're looking for.
  &lt;/span&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def binary_search(item,my_list):
    found=False
    first=0
    last=len(my_list)-1
    while first &amp;lt;=last and found==False:
        midpoint=(first+last)//2
        if my_list[midpoint]==item:
            found=True
        else:
            if my_list[midpoint]&amp;lt;item:
                first=midpoint+1
            else:
                last=midpoint-1
    return found&lt;/code&gt;&lt;/pre&gt;
&lt;img
  class=&quot;in-post-image&quot;
  src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj2925n1m6xb-aPK6FrWNzP7R2nyTks5HUl2Sc6keYBivnWFHY55kgFVKavSmwbs0GmqfUGVcle21otajBFYAnm4sDoA6EtKtUMgXKfPCnqrqOLsvGkEOSm-ladZVZ8T-76-BbEhvHGa1aFDGFj0ouxuvJoPWfob-eocykxqc_sL6NRaDp5YsLwlQ=s611&quot;
  alt=&quot;binary search python&quot;
  width=&quot;611&quot;
  height=&quot;332&quot;
/&gt;
&lt;h2&gt;Testing our python binary search function&lt;/h2&gt;
&lt;div class=&quot;ad&quot;&gt;&lt;div id=&quot;ezoic-pub-ad-placeholder-109&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We will test the code on three lists&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;list1=[1,2,4,5,8,9,11,22,23,28,32]
list2=[99,298,300,587]
list3=[-9,-2,6,33]
print(binary_search(22,list1))
print(binary_search(7,list1))
print(binary_search(300,list2))
print(binary_search(-2,list3))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output&lt;/p&gt;
&lt;pre&gt;
True
False
True
True&lt;/pre
&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;
  &lt;span&gt;
    That's how you implement binary search in Python. And I would definitely
    urge you to practice that and keep keep thinking about it and keep coding it
    and keep writing that code until you've really got it fixed in your mind how
    it works and then you can almost write the code with your eyes closed and
    follow the logic each time. And that will really help that understanding of
    how binary search works and it'll just become second nature to you. 
  &lt;/span&gt;
&lt;/p&gt;</content><author><name>mohsin</name></author><category term="Python" /><category term="Algorithms" /><summary type="html">What is Binary search Binary search is another fairly intuitive way of searching for things. It's a very efficient algorithm.It's a logarithmic algorithm and it's intuitive if you imagine you were searching through an actual physical dictionary. Binary Search relies upon the list that you're searching to be sorted.Just like a dictionary is sorted.   How Binary search works Real life example So imagine you had a dictionary in front of you and you wanted to search for the word &quot;ostrich&quot;. You wouldn't start at page one of the dictionary and then go to page 2 and then page 3 and then page 4. You'd turn to sort of somewhere in the middle and then you'd be able to discard all of the letters to the left all of the pages to the left as you turn to them to the middle and then you'd be able to get another section sort of somewhere halfway between the stack that you have your breath you cut that in half and you'd get that page and then if the O's were on that side you'd keep hold of the bit in your left hand or if they were you'd keep hold of the bit in your right hand and you'd keep repeating that process until you found the word that you were looking for. Binary search algorithm a binary search does something very similar. So it relies on having a sorted list so you have this list. Let's say it's 1024 items long. And what you do with binary search is you go to the middle item of this sorted list and if that's the item you're looking for then that's it.The search is over. if the item is not the item you're looking for but is higher than the item that you're looking for in value in numerical value or in the latter value depending what it is that you're searching for. Then you can say well the item that I'm looking for must be in the left part of the list because I know these are in the correct order they're sorted. So if I've landed on the midpoint of this list and I'm the item I land on is higher in value than the item I'm looking for.I can get rid of all of the items to the right of me to the to the right of the item that I've landed on because I know that they are also going to be too high. And then you repeat that process. But in doing that first step you get rid of half of the items that you're searching through so your list of 1024 items is now 512 items and then you repeat that process. But the bit of the list that you've got left you go to the midpoint of your sorted list and you determine whether that's the item you're looking for. If it's not you ask whether it's higher or lower than the item you're looking for. If it's higher than you get rid of all the items that are to the right all the items that are higher than the item you're on. And if it's lower you get rid of all of the items in the other direction. so you've just halved your search again You've halved the number of items that you have to search through again. So now we're down to 256 and then you keep repeating this process the next time you do it you're down to 128 items and then you're down to 64 items and then 32 items and then 16 and then 8 then for them too until eventually you you reach the item that you're looking for . it's the only item that's left. You keep repeating that process until you find the item you're looking for. And by doing so each time you're cutting the number of items that you'd have to search through by half. So each time the length of the list is halving and then halving and then halving and then halving again until it gets down to just one item which is either the item you're looking for or it's not the item  it doesn't exist. Binary search in Python And so you can see it's a very efficient searching algorithm but it does rely on the list being sorted. So anyway we're going to code a binary search in Python now binary search algorithm so you can see exactly  how it works right. Binary search then. So we have our holding function here. def binary_search(item,my_list): pass So we have a function called binary search it also like linear search takes the item that you're looking for and the name of the list .We need to know whether we found the item we're looking for. So to begin with we haven't found it. we'll set it to False but that will change if we find what we're looking for. And we also need to keep track of the first item in the list. And the last item in the list. Mainly so that we can calculate the midpoint of the list because we are going to move to the midpoint of the list as we go through and carry out our binary search.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjmrkXhY3U6rEhIDnvPbOTA6Fwiczm1EW6pKytRvPp0BZvxKANFrLATJax-yR0U_KoFO8PxWYknoz1iSluAsw1m5tUWkrMbXqkatuTa22hCM8qnROaXufJqGa0Umr_qJdnZBM6jVioswXN-PNq5Q22ciodM0KwAS7XMA_4-mSmtT6qjSCu87q28Yg=s600" /><media:content medium="image" url="https://blogger.googleusercontent.com/img/a/AVvXsEjmrkXhY3U6rEhIDnvPbOTA6Fwiczm1EW6pKytRvPp0BZvxKANFrLATJax-yR0U_KoFO8PxWYknoz1iSluAsw1m5tUWkrMbXqkatuTa22hCM8qnROaXufJqGa0Umr_qJdnZBM6jVioswXN-PNq5Q22ciodM0KwAS7XMA_4-mSmtT6qjSCu87q28Yg=s600" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Python TicTacToe Game</title><link href="https://blog.icodes.tech/posts/python-tictactoe-game.html" rel="alternate" type="text/html" title="Python TicTacToe Game" /><published>2021-09-18T00:00:00+01:00</published><updated>2021-09-18T18:14:44+01:00</updated><id>https://blog.icodes.tech/posts/python-tictactoe-game</id><content type="html" xml:base="https://blog.icodes.tech/posts/python-tictactoe-game.html">&lt;p&gt;This is a code of python game TicTacToe it is so hard because the computer check for all next moves then chose the right one.&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;&lt;!-- Ezoic - under_second_paragraph - under_second_paragraph --&gt;
    &lt;div id=&quot;ezoic-pub-ad-placeholder-111&quot;&gt; &lt;/div&gt;
    &lt;!-- End Ezoic - under_second_paragraph - under_second_paragraph --&gt;&lt;/div&gt;
&lt;p&gt;I won the game after 9 tries .&lt;/p&gt;
&lt;h2&gt;Python TicTacToe Source Code&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;import os
board=[' ' for x in range(10)]


def insertBoard(letter, pos):
    board[pos]=letter

def spaceIsFree(pos):
    return board[pos]==' '
def isWinner(bo, le):
        return ((bo[7] == le and bo[8] == le and bo[9] == le) or # across the top
    (bo[4] == le and bo[5] == le and bo[6] == le) or # across the middle
    (bo[1] == le and bo[2] == le and bo[3] == le) or # across the bottom
    (bo[7] == le and bo[4] == le and bo[1] == le) or # down the left side
    (bo[8] == le and bo[5] == le and bo[2] == le) or # down the middle
    (bo[9] == le and bo[6] == le and bo[3] == le) or # down the right side
    (bo[7] == le and bo[5] == le and bo[3] == le) or # diagonal
    (bo[9] == le and bo[5] == le and bo[1] == le)) # diagonal
def playerMove():
    run=True
    while run:
        move=input(' enter place 1-9 : ')
        try:
            move=int(move)
            if move&amp;gt;0 and move &amp;lt; 10:
                if spaceIsFree(move):
                    run=False
                    insertBoard('X',move)
                else:
                    print('this place occuped !')
            else:
                print('type number with the range 1-9')
        except:
            print('enter valid numb! ')
def selectRandom(li):
    import random
    ln= len(li)
    r=random.randrange(0, ln)
    return li[r]
def compMove():
    possibleMoves=[x for x, letter in enumerate(board) if letter== ' ' and x !=0]
    move=0
    for let in  ['O', 'X']:
        for i in possibleMoves:
            boardcopy=board[:]
            boardcopy[i]=let
            if isWinner(boardcopy, let):
                move=i
                return move
    cornersOpen=[]
    for i in possibleMoves:
        if i in [1,3,7,9]:
            cornersOpen.append(i)
    if len(cornersOpen)&amp;gt;0:
        move=selectRandom(cornersOpen)
        return move
    if 5 in possibleMoves:
        move=5
        return move
    edgesOpen=[]
    for i in possibleMoves:
        if i in [2,4,6,8]:
            edgesOpen.append(i)
    if len(edgesOpen)&amp;gt;0:
        move=selectRandom(edgesOpen)
    return move

def isBoardFull(board):
    if board.count(' ')&amp;gt;1:
        return False
    else:
        return True
def printBoard(board):
    print('   |   |')
    print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
    print('   |   |')
    print('-----------')
    print('   |   |')
    print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
    print('   |   |')
    print('-----------')
    print('   |   |')
    print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
    print('   |   |')
def main():
    print('welcome')
    printBoard(board)
    while not(isBoardFull(board)):
        if not(isWinner(board, 'O')):
            playerMove()
            printBoard(board)
        else:
            print('O\'s won this time ...')
            break

        if not(isWinner(board,'X')):
            move=compMove()
            if move==0:
                print('Game is a Tie')
            else:
                insertBoard('O',move)
                print('comp has place an o in place:',move)
                printBoard(board)
        else:
            print('X\'s won , good job ')
            break



main()&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;ad&quot;&gt;&lt;div id=&quot;ezoic-pub-ad-placeholder-109&quot;&gt; &lt;/div&gt;&lt;/div&gt;</content><author><name>mohsin</name></author><category term="Python" /><category term="Game" /><summary type="html">This is a code of python game TicTacToe it is so hard because the computer check for all next moves then chose the right one.   I won the game after 9 tries . Python TicTacToe Source Code import os board=[' ' for x in range(10)]</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-rDv8u_ljNG8/YUYc1N5ZXiI/AAAAAAAAAak/05EmkAWaYacJFTEBj0m_oedGNdjEOA0NgCLcBGAsYHQ/s600/ezgif.com-gif-maker%252815%2529.webp" /><media:content medium="image" url="https://1.bp.blogspot.com/-rDv8u_ljNG8/YUYc1N5ZXiI/AAAAAAAAAak/05EmkAWaYacJFTEBj0m_oedGNdjEOA0NgCLcBGAsYHQ/s600/ezgif.com-gif-maker%252815%2529.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Python firebase authentication Definitive guide (2021)</title><link href="https://blog.icodes.tech/posts/python-firebase-authentication.html" rel="alternate" type="text/html" title="Python firebase authentication Definitive guide (2021)" /><published>2021-09-06T00:00:00+01:00</published><updated>2021-09-28T00:26:27+01:00</updated><id>https://blog.icodes.tech/posts/python-firebase-authentication</id><content type="html" xml:base="https://blog.icodes.tech/posts/python-firebase-authentication.html">&lt;p&gt;
  This is my complete guide to use
  &lt;strong&gt;python firebase Auth&lt;/strong&gt;
  in 2021. I used 
  &lt;strong&gt;Firebase Auth REST API &lt;/strong&gt;
  official documentation to build a simple and clean python codes (api) that
  allows you to  :
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Sign up with email / password.&lt;/li&gt;
  &lt;li&gt;Sign in with email / password.&lt;/li&gt;
  &lt;li&gt;Send email verification.&lt;/li&gt;
  &lt;li&gt;Sign in anonymously.&lt;/li&gt;
  &lt;li&gt;Send password reset email.&lt;/li&gt;
  &lt;li&gt;Get user data.&lt;/li&gt;
  &lt;li&gt;Delete account.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After this article you will be able also to make your own api.&lt;/p&gt;
&lt;p&gt;
  So if you want use firebase authentication in one of your project, You will
  love today's article.
&lt;/p&gt;
&lt;p&gt;Let's dive in.&lt;/p&gt;
&lt;h2&gt;What is firebase authentication&lt;/h2&gt;
&lt;p&gt;
  Firebase Authentication provides back-end services, easy-to-use , and
  ready-made UI libraries to authenticate users to your app . It supports
  authentication using passwords, phone numbers, popular federated identity
  providers like Google, Facebook and Twitter, and more.
&lt;/p&gt;
&lt;p&gt;It is also free !&lt;/p&gt;
&lt;h2&gt;Create Firebase Project&lt;/h2&gt;
&lt;p&gt;To create a firebase project :&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    Go to
    &lt;a
      href=&quot;https://console.firebase.google.com&quot;
      target=&quot;_blank&quot;
      rel=&quot;nofollow noopener noreferrer&quot;
    &gt;
      https://console.firebase.google.com
    &lt;/a&gt;
    .
  &lt;/li&gt;
  &lt;li&gt;Click add project.&lt;/li&gt;
  &lt;li&gt;Chose name for your project.&lt;/li&gt;
  &lt;li&gt;If you want add google analytics you can do it.&lt;/li&gt;
  &lt;li&gt;Then click Create project.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Requirements&lt;/h4&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;!-- Ezoic - under_second_paragraph - under_second_paragraph --&gt;
  &lt;div id=&quot;ezoic-pub-ad-placeholder-111&quot;&gt; &lt;/div&gt;
  &lt;!-- End Ezoic - under_second_paragraph - under_second_paragraph --&gt;
&lt;/div&gt;
&lt;h5&gt;Project api key&lt;/h5&gt;
&lt;p&gt;To get started you will need an api key from you firebase project.&lt;/p&gt;
&lt;p&gt;
   Go to your firebase project and click on project settings. and copy the
  &lt;strong&gt;Web API key.&lt;/strong&gt;
&lt;/p&gt;
&lt;img
  class=&quot;in-post-image lozad&quot;
  src=&quot;https://1.bp.blogspot.com/-sFUZQ3h1mUw/YUPfJ840RYI/AAAAAAAAAac/Lug_njXV1xAK_YPpnVqoWRt4XPr3DCtNwCLcBGAsYHQ/s853/imageedit_1_7522741404.webp&quot;
  alt=&quot;Python firebase project settings&quot;
  data-src=&quot;https://1.bp.blogspot.com/-R5hJVkhwBVw/YTYiyeUMieI/AAAAAAAAAZ0/D3nhXQxCqjwVXd_VrkeAXh62W4VIzwPcACLcBGAsYHQ/s794/imageedit_2_5135212765.webp&quot;
/&gt;
&lt;img
  class=&quot;in-post-image lozad&quot;
  src=&quot;https://1.bp.blogspot.com/-sFUZQ3h1mUw/YUPfJ840RYI/AAAAAAAAAac/Lug_njXV1xAK_YPpnVqoWRt4XPr3DCtNwCLcBGAsYHQ/s853/imageedit_1_7522741404.webp&quot;
  alt=&quot;python firebase project details&quot;
  data-src=&quot;https://1.bp.blogspot.com/-Tl_zjWYDdY4/YTYiyRh1xdI/AAAAAAAAAZw/lxuZ567BdyMzmDFcoDEbZuxXGy2GOJJfwCLcBGAsYHQ/s685/imageedit_3_3119604343.webp&quot;
/&gt;
&lt;h5&gt;Python requests&lt;/h5&gt;
&lt;p&gt;You can install requests by:&lt;/p&gt;
&lt;pre&gt;pip install requests&lt;/pre&gt;
&lt;p&gt;or &lt;/p&gt;
&lt;pre&gt;pip3 install requests&lt;/pre&gt;
&lt;p&gt;
  check :
  &lt;a
    href=&quot;https://pypi.org/project/requests/&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    https://pypi.org/project/requests/ .
  &lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;How we are going to do this&lt;/h2&gt;
&lt;p&gt;
  If you checked the
  &lt;a
    href=&quot;https://firebase.google.com/docs/reference/rest/auth&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    official documentation 
  &lt;/a&gt;
  on each service they give you:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    Request method : We use
    &lt;strong&gt;POST &lt;/strong&gt;
    to send data to a server.
  &lt;/li&gt;
  &lt;li&gt;
    Content-Type : The type of the data we gonna send (in this course we gonna
    use only
    &lt;strong&gt;JSON&lt;/strong&gt;
    ).
  &lt;/li&gt;
  &lt;li&gt;Endpoint : The url we gonna send data to .&lt;/li&gt;
  &lt;li&gt;Request Body Payload : The data we gonna send to the server.&lt;/li&gt;
  &lt;li&gt;
    Sample request : An example of a request using
    &lt;strong&gt;curl.&lt;/strong&gt;
  &lt;/li&gt;
  &lt;li&gt;Sample response : An example of the response from the server.&lt;/li&gt;
  &lt;li&gt;Common error codes : The possible errors you can get .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  To do all this on python we are going to  use
  &lt;strong&gt;requests &lt;/strong&gt;
  .
&lt;/p&gt;
&lt;p&gt;
  To set the request method to
  &lt;strong&gt;POST &lt;/strong&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;requests.post()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The endpoint is an URL so it's a string.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;requests.post('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key={}'.format(apikey))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
  In the request Body Payload we are going to use a
  &lt;strong&gt;python dict.&lt;/strong&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;details={
    'email':email,
    'password':password,
    'returnSecureToken': True
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So the sample request will be like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;details={
    'email':email,
    'password':password,
    'returnSecureToken': True
}

# send post request
r=requests.post('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key={}'.format(apikey),data=details)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
  The
  &lt;code&gt;r&lt;/code&gt;
  contains the response.
&lt;/p&gt;
&lt;p&gt;To handle the errors we gonna use a function:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def NewUser(email,password):
    details={
        'email':email,
        'password':password,
        'returnSecureToken': True
    }
    # send post request
    r=requests.post('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key={}'.format(apikey),data=details)
    #check for errors in result
    if 'error' in r.json().keys():
        return {'status':'error','message':r.json()['error']['message']}
    #if the registration succeeded
    if 'idToken' in r.json().keys() :
            return {'status':'success','idToken':r.json()['idToken']}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And so on ..&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;&lt;div id=&quot;ezoic-pub-ad-placeholder-109&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3&gt;Enable Email/Password Sign Up&lt;/h3&gt;
&lt;p&gt;Allow users to sign up using their email address and password.&lt;/p&gt;
&lt;img
  class=&quot;in-post-image lozad&quot;
  src=&quot;https://1.bp.blogspot.com/-sFUZQ3h1mUw/YUPfJ840RYI/AAAAAAAAAac/Lug_njXV1xAK_YPpnVqoWRt4XPr3DCtNwCLcBGAsYHQ/s853/imageedit_1_7522741404.webp&quot;
  alt=&quot;python firebase allow Email/Password Sign Up &quot;
  data-src=&quot;https://1.bp.blogspot.com/-bvdjfAcddYs/YTYizKsVhZI/AAAAAAAAAZ8/HHJ3_0gwb_gtSm-bLJhlyOW4YE3YvvS4ACLcBGAsYHQ/s1146/imageedit_8_3105394119.webp&quot;
/&gt;
&lt;h3&gt;Sign up with email / password&lt;/h3&gt;
&lt;p&gt;
  To create a new user account on firebase Auth you need to send a
  &lt;strong&gt;POST&lt;/strong&gt;
  request to this URL 
&lt;/p&gt;
&lt;pre&gt;https://identitytoolkit.googleapis.com/v1/accounts:signUp&lt;/pre&gt;
&lt;p&gt;
  then if the registration succeeded we will get a
  &lt;strong&gt;token&lt;/strong&gt;
  to use it later.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don't panic it's all easy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is how you do it in python using requests module.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
import requests

apikey='.....................'# the web api key

def NewUser(email,password):
    details={
        'email':email,
        'password':password,
        'returnSecureToken': True
    }
    # send post request
    r=requests.post('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key={}'.format(apikey),data=details)
    #check for errors in result
    if 'error' in r.json().keys():
        return {'status':'error','message':r.json()['error']['message']}
    #if the registration succeeded
    if 'idToken' in r.json().keys() :
            return {'status':'success','idToken':r.json()['idToken']}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now this is simple all you have to do is call the function like this :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;NewUser('user@example.com','password')# use the email and the password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output:&lt;/p&gt;
&lt;p&gt;You will get something like this if everything is okay  :&lt;/p&gt;
&lt;pre&gt;
{'status': 'success',
 'idToken': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjkwMDk1YmM2ZGM2ZDY3NzkxZDdkYTFlZWIxYTU1OWEzZDViMmM0ODYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vaGFja2Vybm9vbi1hcHAiLCJhdWQiOiJoYWNrZXJub29uLWFwcCIsImF1dGhfdGltZSI6MTYzMDA4NTAwOSwidXNlcl9pZCI6Ilk0Q3luTHFVNVRRZGRSSE52MDRzWU54ZWFpdTIiL'}&amp;lt;/pre
&amp;gt;&lt;/pre
&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;{'status': 'error', 'message': 'EMAIL_EXISTS'}&lt;/pre&gt;
&lt;p&gt;it means that the email already registered.&lt;/p&gt;
&lt;h3&gt;Sign in with email / password&lt;/h3&gt;
&lt;p&gt;
  To sign in a registered user on firebase Auth you need to make a
  &lt;strong&gt;POST&lt;/strong&gt;
  request to
&lt;/p&gt;
&lt;pre dir=&quot;ltr&quot; translate=&quot;no&quot;&gt;
https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword&amp;lt;/pre
&amp;gt;&lt;/pre
&gt;
&lt;p&gt;like this :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import requests&lt;br&gt;&lt;br&gt;apikey='........................'# the web api key&lt;br&gt;&lt;br&gt;def SignIn(email,password):&lt;br&gt;    details={&lt;br&gt;        'email':email,&lt;br&gt;        'password':password,&lt;br&gt;        'returnSecureToken': True&lt;br&gt;    }&lt;br&gt;    #Post request&lt;br&gt;    r=requests.post('https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={}'.format(apikey),data=details)&lt;br&gt;    #check for errors&lt;br&gt;    if 'error' in r.json().keys():&lt;br&gt;        return {'status':'error','message':r.json()['error']['message']}&lt;br&gt;    #success&lt;br&gt;    if 'idToken' in r.json().keys() :&lt;br&gt;            return {'status':'success','idToken':r.json()['idToken']}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run it :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SignIn('user@example.com','password') #put the actual info &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You will get :&lt;/p&gt;
&lt;pre&gt;
{'status': 'success',
 'idToken': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjkwMDk1YmM2ZGM2ZDY3NzkxZDdkYTFlZWIxYTU1OWEzZDViMmM0ODYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vaGFja2Vybm9vbi1hcHAiLCJhdWQiOiJoYWNrZXJub29uLWFwcCIsImF1dGhfdGltZSI6MTYzMDA4NTY0MSwidXNlcl9pZCI6Ilk0Q3luTHFVNVRRZGRSSE'}&lt;/pre
&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;{'status': 'error', 'message': 'INVALID_PASSWORD'} # Password wrong&lt;/pre&gt;
&lt;pre&gt;
{'status': 'error', 'message': 'EMAIL_NOT_FOUND'} # Email not registered&amp;lt;/pre
&amp;gt;&lt;/pre
&gt;
&lt;h3&gt;Send email verification&lt;/h3&gt;
&lt;p&gt;
  Now to send an email verification using python. You need to send a
  &lt;strong&gt;POST&lt;/strong&gt;
  request to
&lt;/p&gt;
&lt;pre dir=&quot;ltr&quot; translate=&quot;no&quot;&gt;
https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode
&lt;/pre&gt;
&lt;p&gt;
   You need also the
  &lt;strong&gt;token&lt;/strong&gt;
  that you get after
  &lt;strong&gt;sign in&lt;/strong&gt;
  or
  &lt;strong&gt;sign up.&lt;/strong&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import requests

apikey='..................'# the web api key

idToken='eyJh1pVjuYvfX72ewSqUxRNUNoGKgdhsaYdeOjs9OsQ......'#token

def VerifyEmail(idToken):
    headers = {
        'Content-Type': 'application/json',
    }
    data='{&quot;requestType&quot;:&quot;VERIFY_EMAIL&quot;,&quot;idToken&quot;:&quot;'+idToken+'&quot;}'
    r = requests.post('https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key={}'.format(apikey), headers=headers, data=data)
    if 'error' in r.json().keys():
        return {'status':'error','message':r.json()['error']['message']}
    if 'email' in r.json().keys():
        return {'status':'success','email':r.json()['email']}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;run :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;VerifyEmail(idToken)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;result:&lt;/p&gt;
&lt;p&gt;Success&lt;/p&gt;
&lt;pre&gt;{'status': 'success', 'email': 'user@example.com'}&lt;/pre&gt;
&lt;p&gt;Failed &lt;/p&gt;
&lt;pre&gt;{'status': 'error', 'message': 'INVALID_ID_TOKEN'}&lt;/pre&gt;
&lt;p&gt;The user will receive an email from you like this :&lt;/p&gt;
&lt;img
  class=&quot;in-post-image lozad&quot;
  src=&quot;https://1.bp.blogspot.com/-sFUZQ3h1mUw/YUPfJ840RYI/AAAAAAAAAac/Lug_njXV1xAK_YPpnVqoWRt4XPr3DCtNwCLcBGAsYHQ/s853/imageedit_1_7522741404.webp&quot;
  alt=&quot;python firebase verify email&quot;
  data-src=&quot;https://1.bp.blogspot.com/-zhB4oUiDLeg/YTYiyYrrw9I/AAAAAAAAAZs/NwfaOUzrsRITQEDDQBjLxKsXl68IwqNOACLcBGAsYHQ/s635/imageedit_4_5081572962.webp&quot;
/&gt;
&lt;h3&gt;Sign in anonymously&lt;/h3&gt;
&lt;p&gt;
  Sometimes you need to use user's features without creating an account. So you
  can do it on firebase  just by sending another
  &lt;strong&gt;POST&lt;/strong&gt;
  request to :
&lt;/p&gt;
&lt;pre&gt;https://identitytoolkit.googleapis.com/v1/accounts:signUp&lt;/pre&gt;
&lt;p&gt;But You have to enable it first&lt;/p&gt;
&lt;img
  class=&quot;in-post-image lozad&quot;
  src=&quot;https://1.bp.blogspot.com/-sFUZQ3h1mUw/YUPfJ840RYI/AAAAAAAAAac/Lug_njXV1xAK_YPpnVqoWRt4XPr3DCtNwCLcBGAsYHQ/s853/imageedit_1_7522741404.webp&quot;
  alt=&quot;python firebase enable sign in anonymously&quot;
  data-src=&quot;https://1.bp.blogspot.com/-6HoJsHJ_EBk/YTYizJfJ-iI/AAAAAAAAAaA/TO7Dg6yPDlgxbz5RNk9MaoEyMH6NhV6nQCLcBGAsYHQ/s987/imageedit_9_6641761152.webp&quot;
/&gt;
&lt;p&gt;Code :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import requests

apikey='...................'# the web api key

def SignInAnonymously():
    headers = {
        'Content-Type': 'application/json',
    }
    data='{&quot;returnSecureToken&quot;:&quot;true&quot;}'
    r = requests.post('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key={}'.format(apikey), headers=headers, data=data)
    if 'error' in r.json().keys():
        return {'status':'error','message':r.json()['error']['message']}
    if 'idToken' in r.json().keys():
        return {'status':'success','idToken':r.json()['idToken']}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output :&lt;/p&gt;
&lt;pre&gt;
{'status': 'success',
 'idToken': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjkwMDk1YmM2ZGM2ZDY3NzkxZDdkYTFlZWIxYTU1OWEzZDViMmM0'}&lt;/pre
&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;1474747476&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;h3&gt;Send password reset email&lt;/h3&gt;
&lt;p&gt;
  All you need to send an email to reset password using python and the
  email.Then the user will receive an email to change his password.
&lt;/p&gt;
&lt;p&gt;
  just by issuing a
  &lt;strong&gt;POST &lt;/strong&gt;
  request to this URL :
&lt;/p&gt;
&lt;pre&gt;https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode&lt;/pre&gt;
&lt;p&gt;Code :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import requests

apikey='..................'# the web api key
def SendResetEmail(email):
    headers = {
        'Content-Type': 'application/json',
    }
    data={&quot;requestType&quot;:&quot;PASSWORD_RESET&quot;,&quot;email&quot;:email}
    r = requests.post('https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key={}'.format(apikey), data=data)
    if 'error' in r.json().keys():
        return {'status':'error','message':r.json()['error']['message']}
    if 'email' in r.json().keys():
        return {'status':'success','email':r.json()['email']}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;SendResetEmail('user@example.com')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Success :&lt;/p&gt;
&lt;pre&gt;{'status': 'success', 'email': 'user@example.com'}&lt;/pre&gt;
&lt;p&gt;if the email isn't registered :&lt;/p&gt;
&lt;pre&gt;{'status': 'error', 'message': 'EMAIL_NOT_FOUND'}&lt;/pre&gt;
&lt;h3&gt;Get user data&lt;/h3&gt;
&lt;p&gt;In firebase Auth you can extract user data like :&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;email&lt;/li&gt;
  &lt;li&gt;is emailVerified&lt;/li&gt;
  &lt;li&gt;displayName&lt;/li&gt;
  &lt;li&gt;createdAt...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All you need is the Idtoken.&lt;/p&gt;
&lt;p&gt;
  Then send a POST request to
  &lt;code&gt;getAccountInfo&lt;/code&gt;
   endpoint
&lt;/p&gt;
&lt;pre dir=&quot;ltr&quot; translate=&quot;no&quot;&gt;
https://identitytoolkit.googleapis.com/v1/accounts:lookup&lt;/pre
&gt;
&lt;p&gt;Code :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def GetData(idToken):
    details={
        'idToken':idToken
    }
    r=requests.post('https://identitytoolkit.googleapis.com/v1/accounts:lookup?key={}'.format(apikey),data=details)
    if 'error' in r.json().keys():
        return {'status':'error','message':r.json()['error']['message']}
    if 'users' in r.json():
        return {'status':'success','data':r.json()['users']}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;GetData('v7MYMlCA')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output:&lt;/p&gt;
&lt;pre&gt;
{'status': 'success',
 'data': [{'localId': '',
   'email': 'user@example.com',
   'passwordHash': 'U',
   'emailVerified': False,
   'passwordUpdatedAt': ,
   'providerUserInfo': [{'providerId': 'password',
     'federatedId': 'user@example.com',
     'email': 'user@example.com',
     'rawId': 'user@example.com'}],
   'validSince': '',
   'lastLoginAt': '',
   'createdAt': '',
   'lastRefreshAt': '2021-08-31T16:37:59.956Z'}]}&lt;/pre
&gt;
&lt;h3&gt;Delete account&lt;/h3&gt;
&lt;p&gt;
  To delete a user account you need the idToken of the account. Then you send a
  &lt;strong&gt;POST &lt;/strong&gt;
  request to :
&lt;/p&gt;
&lt;pre dir=&quot;ltr&quot; translate=&quot;no&quot;&gt;
https://identitytoolkit.googleapis.com/v1/accounts:delete&lt;/pre
&gt;
&lt;p&gt;Code :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def DeleteAccount(idToken):
    details={
        'idToken':idToken
    }
    r=requests.post('https://identitytoolkit.googleapis.com/v1/accounts:delete?key={}'.format(apikey),data=details)
    if 'error' in r.json().keys():
        return {'status':'error','message':r.json()['error']['message']}
    
    return {'status':'success','data':r.json()}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;DeleteAccount('jkdhkeguyegyugv')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output&lt;/p&gt;
&lt;pre&gt;
{'status': 'success',
 'data': {'kind': 'identitytoolkit#DeleteAccountResponse'}}&lt;/pre
&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;1474747476&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;p&gt;
  Firebase Auth can be a really useful service and it is also free. so you don't
  need to deal with the database.Note that you can also connect with Google
  account,Facebook,github,twitter...
&lt;/p&gt;
&lt;p&gt;Just by using the rest API you can build other API for more features.&lt;/p&gt;</content><author><name>mohsin</name></author><category term="Python" /><category term="Firebase" /><category term="Database" /><summary type="html">This is my complete guide to use python firebase Auth in 2021. I used  Firebase Auth REST API  official documentation to build a simple and clean python codes (api) that allows you to  : Sign up with email / password. Sign in with email / password. Send email verification. Sign in anonymously. Send password reset email. Get user data. Delete account. After this article you will be able also to make your own api. So if you want use firebase authentication in one of your project, You will love today's article. Let's dive in. What is firebase authentication Firebase Authentication provides back-end services, easy-to-use , and ready-made UI libraries to authenticate users to your app . It supports authentication using passwords, phone numbers, popular federated identity providers like Google, Facebook and Twitter, and more. It is also free ! Create Firebase Project To create a firebase project : Go to https://console.firebase.google.com . Click add project. Chose name for your project. If you want add google analytics you can do it. Then click Create project. Requirements   Project api key To get started you will need an api key from you firebase project.  Go to your firebase project and click on project settings. and copy the Web API key. Python requests You can install requests by: pip install requests or  pip3 install requests check : https://pypi.org/project/requests/ . How we are going to do this If you checked the official documentation  on each service they give you: Request method : We use POST  to send data to a server. Content-Type : The type of the data we gonna send (in this course we gonna use only JSON ). Endpoint : The url we gonna send data to . Request Body Payload : The data we gonna send to the server. Sample request : An example of a request using curl. Sample response : An example of the response from the server. Common error codes : The possible errors you can get . To do all this on python we are going to  use requests  . To set the request method to POST  requests.post() The endpoint is an URL so it's a string. requests.post('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key={}'.format(apikey)) In the request Body Payload we are going to use a python dict. details={ 'email':email, 'password':password, 'returnSecureToken': True } So the sample request will be like this details={ 'email':email, 'password':password, 'returnSecureToken': True }</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-wbx7EwdpjIA/YTYpeN5nEYI/AAAAAAAAAaU/Toy--NlASL8bfxuT1Z5kbwZanZBX4DZYgCLcBGAsYHQ/s1200/python-firebase.webp" /><media:content medium="image" url="https://1.bp.blogspot.com/-wbx7EwdpjIA/YTYpeN5nEYI/AAAAAAAAAaU/Toy--NlASL8bfxuT1Z5kbwZanZBX4DZYgCLcBGAsYHQ/s1200/python-firebase.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Learn python programming on mobile phone</title><link href="https://blog.icodes.tech/2021/08/25/learn-python-programming-on-mobile-phone.html" rel="alternate" type="text/html" title="Learn python programming on mobile phone" /><published>2021-08-25T00:00:00+01:00</published><updated>2021-09-06T16:49:56+01:00</updated><id>https://blog.icodes.tech/2021/08/25/learn-python-programming-on-mobile-phone</id><content type="html" xml:base="https://blog.icodes.tech/2021/08/25/learn-python-programming-on-mobile-phone.html">&lt;p&gt;
  A lot of people want to learn python programming until they found all courses
  online made with laptops and desktops. so, they get disappointed and lose
  interest in learning. Today, I decided to help you with this problem and show
  you how you can  run python on mobile phone.
&lt;/p&gt;
&lt;h2&gt;Using Mobile Apps IDE&lt;/h2&gt;
&lt;p&gt;
  The first way is using mobile applications ( python mobile IDE ) to run python
  codes on.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Python IDE for android&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;We start with android mobiles .&lt;/p&gt;
&lt;h4&gt;Pydroid 3 - IDE for Python 3&lt;/h4&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;2239313003&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;p&gt;
  This app is very helpful and useful with a good interface and easy to use . It
  provides you also by all the tools you need.
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Pip , so you can install python libraries on your phone.&lt;/li&gt;
  &lt;li&gt;Terminal , to execute commands on your phone like a pc.&lt;/li&gt;
  &lt;li&gt;Offline Python Interpreter .&lt;/li&gt;
  &lt;li&gt;Syntax highlighting &amp;amp; themes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;more features :&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;You can use OpenCV on phone (on devices with Camera2 API support).&lt;/li&gt;
  &lt;li&gt;TensorFlow and PyTorch on mobile.&lt;/li&gt;
  &lt;li&gt;Tkinter support for GUI. &lt;/li&gt;
  &lt;li&gt;Mobile Cython support.&lt;/li&gt;
  &lt;li&gt;Kivy graphical library to build android apps using your phone .&lt;/li&gt;
  &lt;li&gt;pygame 2 to build games on your phone.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;Screenshots&lt;/h5&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-UG5Z8bPPkK0/YSV1izzOwVI/AAAAAAAAAX8/yGcMkPtIv8sTFhvQYcSPvW1lXVGcIJuBgCLcBGAsYHQ/s656/ezgif.com-gif-maker%25282%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-OYW0nW1eVqg/YSV2P3-drCI/AAAAAAAAAYE/V_DCB4i_RDEVkSroF2Y0ww47UTnn2OO7QCLcBGAsYHQ/s656/ezgif-7-41ea42a918c7.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-gzaJSPYuYhU/YSV2g9hbbaI/AAAAAAAAAYM/PIXZ0hv9kMUCi3fys2kIh_0nGeLbaoFewCLcBGAsYHQ/s656/ezgif.com-gif-maker%25283%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;7563367810&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-JnHvjKpz4Ug/YSV21GA3YTI/AAAAAAAAAYU/YyfnfkFnp5szXlz_5a0kXra82QM28mg3ACLcBGAsYHQ/s656/ezgif.com-gif-maker%25284%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a
    href=&quot;https://play.google.com/store/apps/details?id=ru.iiec.pydroid3&amp;amp;hl=en&amp;amp;gl=US&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Download Pydroid on android
  &lt;/a&gt;
&lt;/p&gt;
&lt;h4 class=&quot;AHFaub&quot;&gt;QPython 3L - Python for Android&lt;/h4&gt;
&lt;p&gt;
  QPython is the Python engine for android.it already has millions of users
  worldwide and it is also an open source project.
&lt;/p&gt;
&lt;p&gt;it contains some amazing features such as&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Android Python interpreter&lt;/li&gt;
  &lt;li&gt;Python android runtime environment.&lt;/li&gt;
  &lt;li&gt;Python editor&lt;/li&gt;
  &lt;li&gt;QPYI and SL4A library&lt;/li&gt;
  &lt;li&gt;
    It supports running multiple types of projects, including: console program,
    SL4A program, webapp program
  &lt;/li&gt;
  &lt;li&gt;
    QPYPI and a custom repository for prebuilt wheel packages for enhanced
    scientific libraries, such as numpy, scipy, matplotlib, scikit-learn etc
  &lt;/li&gt;
  &lt;li&gt;
    Third App Integrations, such as: Barcode, Browser, SpeechRecongition,
    SendEmail, TextToSpeech
  &lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Screenshots&lt;/h5&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-AwX3U5hCK_s/YSV3H84RqrI/AAAAAAAAAYc/fxUnvHb2jvMU-BxQpeMzZVyRGUrSsXpYgCLcBGAsYHQ/s615/ezgif.com-gif-maker%25285%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-cGl03YwhGjI/YSV3V2n8oSI/AAAAAAAAAYg/3fpBhgVGqbs7RcwXtbBhILO1ZNZo6DiowCLcBGAsYHQ/s615/ezgif.com-gif-maker%25286%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a
    href=&quot;https://play.google.com/store/apps/details?id=org.qpython.qpy3&amp;amp;hl=en&amp;amp;gl=US&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Download qpython
  &lt;/a&gt;
&lt;/p&gt;
&lt;h4&gt;Termux&lt;/h4&gt;
&lt;p&gt;
  Termux is an
  &lt;strong&gt;Android terminal emulator and Linux environment app&lt;/strong&gt;
  that works directly with no rooting or setup required. A minimal base system
  is installed automatically - additional packages are available using the APT
  package manager.
&lt;/p&gt;
&lt;p&gt;
  Simply termux makes your phone like a pc . so you can install python on your
  phone and run scripts.
&lt;/p&gt;
&lt;p&gt;
  I personally use it to serve website on my android phone. or to run scripts.
&lt;/p&gt;
&lt;p&gt;
  We will use termux only to run python files on phone. And
  &lt;a
    href=&quot;https://play.google.com/store/apps/details?id=com.foxdebug.acodefree&amp;amp;hl=en&amp;amp;gl=US&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Acode app
  &lt;/a&gt;
  to write the code.
&lt;/p&gt;
&lt;h5&gt;Screenshots&lt;/h5&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-_u_BCEhByAw/YSV4ArBfKaI/AAAAAAAAAYs/APkCe0ba0QQzGswcUSHZ46TLV_Rz2BQJACLcBGAsYHQ/s615/ezgif.com-gif-maker%25287%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-lcAqG_sQyt4/YSV4PewT3GI/AAAAAAAAAYw/pqepL96EmtMrrnndWksIagv4MrfdkKeYwCLcBGAsYHQ/s615/ezgif.com-gif-maker%25288%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;9503274099&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a
    href=&quot;https://play.google.com/store/apps/details?id=com.termux&amp;amp;hl=en&amp;amp;gl=US&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Download Termux
  &lt;/a&gt;
&lt;/p&gt;
&lt;h5&gt;How to use termux and acode to run python file on android&lt;/h5&gt;
&lt;p&gt;
  After installing termux and Acode. open Acode create new file and name it
  code.py then save it. After that go to parameters and give termux access to
  storage then open termux then run
&lt;/p&gt;
&lt;pre&gt;pkg install python&lt;/pre&gt;
&lt;p&gt;then &lt;/p&gt;
&lt;pre&gt;cd /storage/emulated/0/&lt;/pre&gt;
&lt;p&gt;then&lt;/p&gt;
&lt;pre&gt;ls&lt;/pre&gt;
&lt;p&gt;
  to see all files in home storage so you copy your file to this location and
  run
&lt;/p&gt;
&lt;pre&gt;python filename.py&lt;/pre&gt;
&lt;h4&gt;Dcoder, Compiler IDE :Code &amp;amp; Programming on mobile&lt;/h4&gt;
&lt;p&gt;
  Dcoder is a mobile coding IDE and platform (Compiler for mobile), where you
  can run your projects, code and learn algorithms by programming on mobile.
  Build and deploy your projects straight from the mobile and integrate with Git
  (Gtihub, bitbucker) and sync with vs code, use of code compilations to make
  coding easy. Now code anytime, anywhere and on the go.
&lt;/p&gt;
&lt;p&gt;The main features include:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Rich Text Editor with Syntax highlighting.(Code Editor)&lt;/li&gt;
  &lt;li&gt;Line number, Auto indent, Autocomplete Parenthesis.&lt;/li&gt;
  &lt;li&gt;Undo Redo.&lt;/li&gt;
  &lt;li&gt;File Open/Save.&lt;/li&gt;
  &lt;li&gt;Custom Suggestion View.&lt;/li&gt;
  &lt;li&gt;Multiple Language Support.&lt;/li&gt;
  &lt;li&gt;
    Thoroughly designed Algorithm problems to improve coding Skills and make
    programmers industry ready.
  &lt;/li&gt;
  &lt;li&gt;
    Leader Board: To know where you stand amongst the vast Dcoder community.
  &lt;/li&gt;
  &lt;li&gt;
    Custom Menu Drawer, Custom Code Editor Themes, Editable font Size for Editor
    and much more!!
  &lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;Screenshots&lt;/h5&gt;
&lt;p&gt;
  &lt;img
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    class=&quot;in-post-image lozad&quot;
    data-src=&quot;https://1.bp.blogspot.com/-LXlB7kCnBW8/YSV4jUIW0mI/AAAAAAAAAY8/m3Ssc_43gKYUlDml94KIbALwyNV9ySKkQCLcBGAsYHQ/s615/ezgif.com-gif-maker%25289%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a
    href=&quot;https://play.google.com/store/apps/details?id=com.paprbit.dcoder&amp;amp;hl=en&amp;amp;gl=US&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Download Dcoder For Android
  &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a
    href=&quot;https://apps.apple.com/us/app/dcoder-code-compiler-ide/id1488496978?ls=1&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Download Dcoder for ios
  &lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;Python IDE'S Iphone IOS &lt;/h3&gt;
&lt;h4 class=&quot;AHFaub&quot;&gt;Dcoder&lt;/h4&gt;
&lt;p&gt;I talked about Dcoder on android section&lt;/p&gt;
&lt;p&gt;
  &lt;a
    href=&quot;https://apps.apple.com/us/app/dcoder-code-compiler-ide/id1488496978?ls=1&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Download Dcoder for ios
  &lt;/a&gt;
&lt;/p&gt;
&lt;h4 id=&quot;articleHeader0&quot;&gt;
  &lt;a
    id=&quot;user-content-pyto&quot;
    class=&quot;anchor&quot;
    aria-hidden=&quot;true&quot;
    href=&quot;https://reposhub.com/python/ides/ColdGrub1384-Pyto.html#pyto&quot;
  &gt;&lt;/a&gt;
  Pyto - python 3
&lt;/h4&gt;
&lt;p dir=&quot;ltr&quot; data-test-bidi=&quot;&quot;&gt;
  Pyto is a Python 3.8 IDE for iPhone and iPad. Run code directly on your device
  and offline. You can run scripts from Shortcuts and code your own home screen
  widgets.
&lt;/p&gt;
&lt;p dir=&quot;ltr&quot; data-test-bidi=&quot;&quot;&gt;Features:&lt;/p&gt;
&lt;ol&gt;
  &lt;li dir=&quot;ltr&quot;&gt; Python 3.8 with all standard libraries&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt; Full Python REPL&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt; Code user interfaces&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt; Smart code completion&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt; Use pip to install pure Python modules from PyPI&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt; Access scripts from everywhere&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt; Preview images and plots on console&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt; Multiple windows for iPadOS 13+&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt;Run scripts and code from Siri Shortcuts&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt;Code your own home screen widgets&lt;/li&gt;
  &lt;li dir=&quot;ltr&quot;&gt;Interact with other apps thanks to x-callback urls&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-kl82JY_dHlA/YSV4wrgbBTI/AAAAAAAAAZA/padD_ujBTyIoDpqEhllvxdxHdmEK7cXrwCLcBGAsYHQ/s418/pyto.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;p dir=&quot;ltr&quot; data-test-bidi=&quot;&quot;&gt;
  &lt;a
    href=&quot;https://apps.apple.com/us/app/pyto-python-ide/id1436650069?l=fr&amp;amp;ls=1&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Download Pyto
  &lt;/a&gt;
&lt;/p&gt;
&lt;h2 dir=&quot;ltr&quot;&gt;Online python IDE - Python website IDE&lt;/h2&gt;
&lt;p&gt;
  Personally i use online python IDE's a lot because it has fast internet access
  and you can store your code online.Here's a list of my favorites python
  websites ide
&lt;/p&gt;
&lt;h3&gt;Replit&lt;/h3&gt;
&lt;p&gt;
  Replit is a simple yet powerful online IDE, Editor, Compiler, Interpreter, and
  REPL. Code, compile, run, and host in 50+ programming languages.
&lt;/p&gt;
&lt;p&gt;
  So you can use replit on your mobile phone you just have to go to
  &lt;a
    href=&quot;ttps://replit.com/&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    replit website
  &lt;/a&gt;
  . then create an account. and start coding.
&lt;/p&gt;
&lt;h4&gt;Screenshots&lt;/h4&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;2239313003&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-x0VWO4tN9JM/YSV4_Uufr5I/AAAAAAAAAZE/jlCHNiJmnKEUQ-Yw76JTwuJy5F5ce267ACLcBGAsYHQ/s601/ezgif.com-gif-maker%252810%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;h3&gt;Google colabs&lt;/h3&gt;
&lt;p&gt;
  Colaboratory, or &quot;Colab&quot; for short, allows you to write and execute Python in
  your browser, with
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Zero configuration required&lt;/li&gt;
  &lt;li&gt;Free access to GPUs&lt;/li&gt;
  &lt;li&gt;Easy sharing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  All you have to do is go to
  &lt;a
    href=&quot;https://colab.research.google.com&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    google colab
  &lt;/a&gt;
  and sign in.Then crate new project and start coding
&lt;/p&gt;
&lt;h4&gt;Screenshots&lt;/h4&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-jzowgoosCfo/YSV5Op88FNI/AAAAAAAAAZQ/_4YaSqkN8wISzFRryqdD0eeuHiRUe5ghACLcBGAsYHQ/s603/ezgif.com-gif-maker%252811%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;h3&gt;Online Python IDE&lt;/h3&gt;
&lt;p&gt;
  Build, Run &amp;amp; Share Python code online using online-python's IDE for free.
&lt;/p&gt;
&lt;p&gt;
  It's one of the quick, robust, powerful online compilers for python language.
&lt;/p&gt;
&lt;p&gt;
  Don't worry about setting up python environment in your local. Now Run the
  python code in your favorite browser instantly.
&lt;/p&gt;
&lt;p&gt;
  Getting started with this Python editor is easy and fast. Just write the
  program and click the
  &lt;strong&gt;RUN&lt;/strong&gt;
  button!! Code can be saved online by using the
  &lt;strong&gt;SHARE&lt;/strong&gt;
  option that enables you to access your code anywhere using internet.
&lt;/p&gt;
&lt;h4&gt;Screenshots&lt;/h4&gt;
&lt;p&gt;
  &lt;img
    class=&quot;in-post-image lozad&quot;
    src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;
    data-src=&quot;https://1.bp.blogspot.com/-zYccK6OHFLI/YSV5enSovhI/AAAAAAAAAZY/uA3q4VF6vKUU2QyCq9n-RM4x1Z3S4mPlgCLcBGAsYHQ/s596/ezgif.com-gif-maker%252812%2529.webp&quot;
    alt=&quot;Learn python programming on mobile phone&quot;
    width=&quot;auto&quot;
    height=&quot;auto&quot;
  /&gt;
&lt;/p&gt;
&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;1474747476&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;p&gt;
  Visit
  &lt;a
    href=&quot;https://www.online-python.com/&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    https://www.online-python.com/
  &lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;
  If you want to do something just stick on it and don't let anything stops you.
&lt;/p&gt;
&lt;p&gt;happy coding on your phones.&lt;/p&gt;</content><author><name>mohsin</name></author><category term="Python" /><summary type="html">A lot of people want to learn python programming until they found all courses online made with laptops and desktops. so, they get disappointed and lose interest in learning. Today, I decided to help you with this problem and show you how you can  run python on mobile phone. Using Mobile Apps IDE The first way is using mobile applications ( python mobile IDE ) to run python codes on. Python IDE for android We start with android mobiles . Pydroid 3 - IDE for Python 3 This app is very helpful and useful with a good interface and easy to use . It provides you also by all the tools you need. Pip , so you can install python libraries on your phone. Terminal , to execute commands on your phone like a pc. Offline Python Interpreter . Syntax highlighting &amp;amp; themes. more features : You can use OpenCV on phone (on devices with Camera2 API support). TensorFlow and PyTorch on mobile. Tkinter support for GUI.  Mobile Cython support. Kivy graphical library to build android apps using your phone . pygame 2 to build games on your phone. Screenshots Download Pydroid on android QPython 3L - Python for Android QPython is the Python engine for android.it already has millions of users worldwide and it is also an open source project. it contains some amazing features such as Android Python interpreter Python android runtime environment. Python editor QPYI and SL4A library It supports running multiple types of projects, including: console program, SL4A program, webapp program QPYPI and a custom repository for prebuilt wheel packages for enhanced scientific libraries, such as numpy, scipy, matplotlib, scikit-learn etc Third App Integrations, such as: Barcode, Browser, SpeechRecongition, SendEmail, TextToSpeech Screenshots Download qpython Termux Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager. Simply termux makes your phone like a pc . so you can install python on your phone and run scripts. I personally use it to serve website on my android phone. or to run scripts. We will use termux only to run python files on phone. And Acode app to write the code. Screenshots Download Termux How to use termux and acode to run python file on android After installing termux and Acode. open Acode create new file and name it code.py then save it. After that go to parameters and give termux access to storage then open termux then run pkg install python then  cd /storage/emulated/0/ then ls to see all files in home storage so you copy your file to this location and run python filename.py Dcoder, Compiler IDE :Code &amp;amp; Programming on mobile Dcoder is a mobile coding IDE and platform (Compiler for mobile), where you can run your projects, code and learn algorithms by programming on mobile. Build and deploy your projects straight from the mobile and integrate with Git (Gtihub, bitbucker) and sync with vs code, use of code compilations to make coding easy. Now code anytime, anywhere and on the go. The main features include: Rich Text Editor with Syntax highlighting.(Code Editor) Line number, Auto indent, Autocomplete Parenthesis. Undo Redo. File Open/Save. Custom Suggestion View. Multiple Language Support. Thoroughly designed Algorithm problems to improve coding Skills and make programmers industry ready. Leader Board: To know where you stand amongst the vast Dcoder community. Custom Menu Drawer, Custom Code Editor Themes, Editable font Size for Editor and much more!! Screenshots Download Dcoder For Android Download Dcoder for ios Python IDE'S Iphone IOS  Dcoder I talked about Dcoder on android section Download Dcoder for ios Pyto - python 3 Pyto is a Python 3.8 IDE for iPhone and iPad. Run code directly on your device and offline. You can run scripts from Shortcuts and code your own home screen widgets. Features:  Python 3.8 with all standard libraries  Full Python REPL  Code user interfaces  Smart code completion  Use pip to install pure Python modules from PyPI  Access scripts from everywhere  Preview images and plots on console  Multiple windows for iPadOS 13+ Run scripts and code from Siri Shortcuts Code your own home screen widgets Interact with other apps thanks to x-callback urls Download Pyto Online python IDE - Python website IDE Personally i use online python IDE's a lot because it has fast internet access and you can store your code online.Here's a list of my favorites python websites ide Replit Replit is a simple yet powerful online IDE, Editor, Compiler, Interpreter, and REPL. Code, compile, run, and host in 50+ programming languages. So you can use replit on your mobile phone you just have to go to replit website . then create an account. and start coding. Screenshots Google colabs Colaboratory, or &quot;Colab&quot; for short, allows you to write and execute Python in your browser, with Zero configuration required Free access to GPUs Easy sharing All you have to do is go to google colab and sign in.Then crate new project and start coding Screenshots Online Python IDE Build, Run &amp;amp; Share Python code online using online-python's IDE for free. It's one of the quick, robust, powerful online compilers for python language. Don't worry about setting up python environment in your local. Now Run the python code in your favorite browser instantly. Getting started with this Python editor is easy and fast. Just write the program and click the RUN button!! Code can be saved online by using the SHARE option that enables you to access your code anywhere using internet. Screenshots Visit https://www.online-python.com/ Conclusion If you want to do something just stick on it and don't let anything stops you. happy coding on your phones.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-2w495tvETv8/YSYoi4TK2EI/AAAAAAAAAZg/baeAFv9INxo_0gK8e8OE7PhLWCptIr5ggCLcBGAsYHQ/s1004/ezgif.com-gif-maker%252813%2529.webp" /><media:content medium="image" url="https://1.bp.blogspot.com/-2w495tvETv8/YSYoi4TK2EI/AAAAAAAAAZg/baeAFv9INxo_0gK8e8OE7PhLWCptIr5ggCLcBGAsYHQ/s1004/ezgif.com-gif-maker%252813%2529.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">What comes after learning Python basics</title><link href="https://blog.icodes.tech/2021/08/21/what-comes-after-learning-python-basics.html" rel="alternate" type="text/html" title="What comes after learning Python basics" /><published>2021-08-21T00:00:00+01:00</published><updated>2021-09-06T16:50:05+01:00</updated><id>https://blog.icodes.tech/2021/08/21/what-comes-after-learning-python-basics</id><content type="html" xml:base="https://blog.icodes.tech/2021/08/21/what-comes-after-learning-python-basics.html">&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;
  Everyone after learning basics asks what should I do now and gets confused and
  sometimes unmotivated so i decided to give some help
&lt;/p&gt;

&lt;div class=&quot;ad&quot;&gt;
  &lt;ins
    class=&quot;adsbygoogle&quot;
    style=&quot;display: block; text-align: center; max-width: 90%&quot;
    data-ad-layout=&quot;in-article&quot;
    data-ad-format=&quot;fluid&quot;
    data-ad-client=&quot;ca-pub-2538726305368557&quot;
    data-ad-slot=&quot;2239313003&quot;
  &gt;&lt;/ins&gt;
&lt;/div&gt;
&lt;h2&gt;&lt;span data-preserver-spaces=&quot;true&quot;&gt;Solve problems and Quizzes&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;
  I love this one so much because it's very helpful and i recommend it for every
  beginner. There is a lot of Websites who gives you problems and quizzes to
  practice with. and here's a list.
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;
    &lt;a
      href=&quot;https://www.hackerrank.com/domains/python&quot;
      target=&quot;_blank&quot;
      rel=&quot;nofollow noopener noreferrer&quot;
    &gt;
      Hackerrank
    &lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a
      href=&quot;https://leetcode.com/&quot;
      target=&quot;_blank&quot;
      rel=&quot;nofollow noopener noreferrer&quot;
    &gt;
      LeetCode
    &lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a
      href=&quot;https://www.codechef.com/problems/school/?itm_medium=navmenu&amp;amp;itm_campaign=problems&quot;
      target=&quot;_blank&quot;
      rel=&quot;nofollow noopener noreferrer&quot;
    &gt;
      CodeChef
    &lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a
      href=&quot;https://www.interviewbit.com/coding-interview-questions/&quot;
      target=&quot;_blank&quot;
      rel=&quot;nofollow noopener noreferrer&quot;
    &gt;
      Interviewbit
    &lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a
      href=&quot;https://www.w3schools.com/quiztest/quiztest.asp?qtest=PYTHON&quot;
      target=&quot;_blank&quot;
      rel=&quot;nofollow noopener noreferrer&quot;
    &gt;
      W3schools
    &lt;/a&gt;
  &lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Learn more&lt;/h2&gt;
&lt;p&gt;
  After getting familiar with Python. You should go deeper into learning and
  more specified. here's a list of what you can learn
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;AI and Machine learning&lt;/li&gt;
  &lt;li&gt;Data visualization, and analysis&lt;/li&gt;
  &lt;li&gt;Web Development&lt;/li&gt;
  &lt;li&gt;Game development&lt;/li&gt;
  &lt;li&gt;Cyber security&lt;/li&gt;
  &lt;li&gt;Mobile apps development&lt;/li&gt;
  &lt;li&gt;Data science&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Projects&lt;/h2&gt;
&lt;p&gt;
  The best way to practices what you've learned is by building projects but what
  kind of projects you can build?
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Create a bot&lt;/li&gt;
  &lt;li&gt;Scrape data from websites&lt;/li&gt;
  &lt;li&gt;Build a website with web development frameworks&lt;/li&gt;
  &lt;li&gt;Build an Android app&lt;/li&gt;
  &lt;li&gt;build a game&lt;/li&gt;
  &lt;li&gt;Script to automate something&lt;/li&gt;
&lt;/ol&gt;</content><author><name>rin</name></author><category term="Python" /><summary type="html">Intro Everyone after learning basics asks what should I do now and gets confused and sometimes unmotivated so i decided to give some help</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-mOB32wCOHqE/YSOp2rT7kfI/AAAAAAAAAX0/C4vhAdBCiz0AVsCp1n1i-DTH-siD_NHhQCLcBGAsYHQ/s0/What%2Bcomes%2Bafter%2Blearning%2BPython%2Bbasics%253F.webp" /><media:content medium="image" url="https://1.bp.blogspot.com/-mOB32wCOHqE/YSOp2rT7kfI/AAAAAAAAAX0/C4vhAdBCiz0AVsCp1n1i-DTH-siD_NHhQCLcBGAsYHQ/s0/What%2Bcomes%2Bafter%2Blearning%2BPython%2Bbasics%253F.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Python 3 Master Course for 2021</title><link href="https://blog.icodes.tech/2021/08/19/python-3-master-course-for-2021.html" rel="alternate" type="text/html" title="Python 3 Master Course for 2021" /><published>2021-08-19T00:00:00+01:00</published><updated>2021-09-06T16:50:11+01:00</updated><id>https://blog.icodes.tech/2021/08/19/python-3-master-course-for-2021</id><content type="html" xml:base="https://blog.icodes.tech/2021/08/19/python-3-master-course-for-2021.html">&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;
  This course is uploaded on udemy
  &lt;a
    href=&quot;https://www.udemy.com/share/103OTq/&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    here
  &lt;/a&gt;
  by :  Learn Tech Plus  rate : 4.8
&lt;/p&gt;
&lt;p&gt;Download link free is in the end of the post&lt;/p&gt;
&lt;h2&gt;Description&lt;/h2&gt;
&lt;p&gt;
  Do you want to Master Python?  Then this is the course for you where I will
  take you from complete beginner to Advanced Python Programmer.  Let me walk
  you through a detailed step by step process that will help you accomplish your
  goals and have fun learning on the way we will cover the following in detail:
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;What is Python&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Getting Started with Python Documentation&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Cover Summary of Python Beginner's Documentation&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Cover a Summary of Python Moderate Guide&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Cover a Summary of Python Advanced Guide&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Cover a Summary of General Python Documentation&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Talk in Depth about Python 3.x Resources&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Talk about what is and How to Port from Python 2 to Python&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;Overview&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;What is IDE&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;IDEs for Python&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;What is a Text Editor&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Text Editors for Python&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Download and Install Python 3 with IDLE Included&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Basic Commands with Terminal&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Write and Run your First Python Script with Terminal and IDLE&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Download &amp;amp; Install Visual Studio Code&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Download &amp;amp; Install Python Extension in Visual Studio Code&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;
          Write &amp;amp; Run Python Script with Visual Studio Code and Terminal
        &lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Download &amp;amp; Install Anaconda&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Write &amp;amp; Run Python Script with Anaconda&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Python Basics&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;Syntax&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Comments&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Data Types&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Numbers&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Casting&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Booleans&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Operators&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;If Else Statements&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;While Loops&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;For Loops&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Functions&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Lambda&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Arrays&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Classes and Objects&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Inheritance&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Iterators&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Scope&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Modules&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Dates&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Math&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;JSON&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;RegEx&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;PIP&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Try Except&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;User Input&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;String Formatting&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Variables&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;Overview&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Variables&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Variable Names&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Assign Multiple Values&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Output Variables&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Global Variables&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Strings&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;Overview&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Strings&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Slicing Strings&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Modify Strings&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Concatenate Strings&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Format Strings&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Escape Characters&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;String Methods&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Lists&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;Overview&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Lists&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Access List Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Change List Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Add List Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Remove List Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Loop Lists&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;List Comprehension&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Sort Lists&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Copy Lists&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Join Lists&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;List Methods&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Tuples&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;Overview&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Tuples&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Access Tuples&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Update Tuples&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Unpack Tuples&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Loop Tuples&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Join Tuples&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Tuple Methods&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Sets&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;Overview&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Sets&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Access Set Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Add Set Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Remove Set Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Loop Sets&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Join Sets&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Set Methods&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Dictionaries&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
      &lt;li&gt;
        &lt;p&gt;Overview&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Access Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Change Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Add Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Remove Items&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Loop Dictionaries&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Copy Dictionaries&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Nested Dictionaries&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Dictionary Methods&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;What you'll learn&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;What is Python&lt;/li&gt;
  &lt;li&gt;Python Documentation Resources&lt;/li&gt;
  &lt;li&gt;Porting From Python 2 to Python 3&lt;/li&gt;
  &lt;li&gt;Python 3.x Resources&lt;/li&gt;
  &lt;li&gt;Download and Install Python 3&lt;/li&gt;
  &lt;li&gt;Write Your First Python Script&lt;/li&gt;
  &lt;li&gt;Run Your First Python Script&lt;/li&gt;
  &lt;li&gt;Python Basics&lt;/li&gt;
  &lt;li&gt;Syntax&lt;/li&gt;
  &lt;li&gt;Comments&lt;/li&gt;
  &lt;li&gt;Data Types&lt;/li&gt;
  &lt;li&gt;Numbers&lt;/li&gt;
  &lt;li&gt;Casting&lt;/li&gt;
  &lt;li&gt;Booleans&lt;/li&gt;
  &lt;li&gt;Operators&lt;/li&gt;
  &lt;li&gt;If Else Statements&lt;/li&gt;
  &lt;li&gt;While Loops&lt;/li&gt;
  &lt;li&gt;For Loops&lt;/li&gt;
  &lt;li&gt;Functions&lt;/li&gt;
  &lt;li&gt;Lambda&lt;/li&gt;
  &lt;li&gt;Arrays&lt;/li&gt;
  &lt;li&gt;Classes and Objects&lt;/li&gt;
  &lt;li&gt;Inheritance&lt;/li&gt;
  &lt;li&gt;Iterators&lt;/li&gt;
  &lt;li&gt;Scope&lt;/li&gt;
  &lt;li&gt;Modules&lt;/li&gt;
  &lt;li&gt;Dates&lt;/li&gt;
  &lt;li&gt;Math&lt;/li&gt;
  &lt;li&gt;JSON&lt;/li&gt;
  &lt;li&gt;RegEx&lt;/li&gt;
  &lt;li&gt;PIP&lt;/li&gt;
  &lt;li&gt;Try Except&lt;/li&gt;
  &lt;li&gt;User Input&lt;/li&gt;
  &lt;li&gt;String Formatting&lt;/li&gt;
  &lt;li&gt;Variables&lt;/li&gt;
  &lt;li&gt;Strings&lt;/li&gt;
  &lt;li&gt;Lists&lt;/li&gt;
  &lt;li&gt;Tuples&lt;/li&gt;
  &lt;li&gt;Sets&lt;/li&gt;
  &lt;li&gt;Dictionaries&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Who this course is for:&lt;/h2&gt;
&lt;ul class=&quot;styles--audience__list--3NCqY&quot;&gt;
  &lt;li&gt;Beginner to Advanced Students wanting to Learn Python 3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Download&lt;/h2&gt;
&lt;p&gt;Now you can download the course free or watch it online&lt;/p&gt;
&lt;p&gt;
  &lt;a
    href=&quot;https://drive.google.com/drive/folders/1R2rDciwOq0Fjxs6PYaDPVMXlqNZAJ52z?usp=sharing&quot;
    target=&quot;_blank&quot;
    rel=&quot;nofollow noopener noreferrer&quot;
  &gt;
    Download link 1
  &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</content><author><name>rin</name></author><category term="Python" /><summary type="html">Intro This course is uploaded on udemy here by :  Learn Tech Plus  rate : 4.8 Download link free is in the end of the post Description Do you want to Master Python?  Then this is the course for you where I will take you from complete beginner to Advanced Python Programmer.  Let me walk you through a detailed step by step process that will help you accomplish your goals and have fun learning on the way we will cover the following in detail: Introduction Documentation What is Python Getting Started with Python Documentation Cover Summary of Python Beginner's Documentation Cover a Summary of Python Moderate Guide Cover a Summary of Python Advanced Guide Cover a Summary of General Python Documentation Talk in Depth about Python 3.x Resources Talk about what is and How to Port from Python 2 to Python Setup Overview What is IDE IDEs for Python What is a Text Editor Text Editors for Python Download and Install Python 3 with IDLE Included Basic Commands with Terminal Write and Run your First Python Script with Terminal and IDLE Download &amp;amp; Install Visual Studio Code Download &amp;amp; Install Python Extension in Visual Studio Code Write &amp;amp; Run Python Script with Visual Studio Code and Terminal Download &amp;amp; Install Anaconda Write &amp;amp; Run Python Script with Anaconda Python Basics Syntax Comments Data Types Numbers Casting Booleans Operators If Else Statements While Loops For Loops Functions Lambda Arrays Classes and Objects Inheritance Iterators Scope Modules Dates Math JSON RegEx PIP Try Except User Input String Formatting Variables Overview Variables Variable Names Assign Multiple Values Output Variables Global Variables Strings Overview Strings Slicing Strings Modify Strings Concatenate Strings Format Strings Escape Characters String Methods Lists Overview Lists Access List Items Change List Items Add List Items Remove List Items Loop Lists List Comprehension Sort Lists Copy Lists Join Lists List Methods Tuples Overview Tuples Access Tuples Update Tuples Unpack Tuples Loop Tuples Join Tuples Tuple Methods Sets Overview Sets Access Set Items Add Set Items Remove Set Items Loop Sets Join Sets Set Methods Dictionaries Overview Access Items Change Items Add Items Remove Items Loop Dictionaries Copy Dictionaries Nested Dictionaries Dictionary Methods What you'll learn What is Python Python Documentation Resources Porting From Python 2 to Python 3 Python 3.x Resources Download and Install Python 3 Write Your First Python Script Run Your First Python Script Python Basics Syntax Comments Data Types Numbers Casting Booleans Operators If Else Statements While Loops For Loops Functions Lambda Arrays Classes and Objects Inheritance Iterators Scope Modules Dates Math JSON RegEx PIP Try Except User Input String Formatting Variables Strings Lists Tuples Sets Dictionaries Who this course is for: Beginner to Advanced Students wanting to Learn Python 3 Download Now you can download the course free or watch it online Download link 1  </summary></entry><entry><title type="html">100 Days of Code - The Complete Python Pro Bootcamp for 2021</title><link href="https://blog.icodes.tech/2021/08/17/100-days-of-code-the-complete-python-pro-bootcamp-for-2021.html" rel="alternate" type="text/html" title="100 Days of Code - The Complete Python Pro Bootcamp for 2021" /><published>2021-08-17T00:00:00+01:00</published><updated>2021-08-17T17:50:54+01:00</updated><id>https://blog.icodes.tech/2021/08/17/100-days-of-code-the-complete-python-pro-bootcamp-for-2021</id><content type="html" xml:base="https://blog.icodes.tech/2021/08/17/100-days-of-code-the-complete-python-pro-bootcamp-for-2021.html">&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;
  This course is uploaded on udemy
  &lt;a
    target=&quot;_blank&quot;
    href=&quot;https://www.udemy.com/share/103IHM2@PW1gV0tbSFwNe0VLAnJOVD5tY1RL/&quot;
  &gt;
    here
  &lt;/a&gt;
  by : Dr. Angela Yu  rate : 4.8
&lt;/p&gt;
&lt;p&gt;Download link is in the end of the post&lt;/p&gt;
&lt;h2 class=&quot;udlite-heading-xl what-you-will-learn--title--hropy&quot;&gt;
  What you'll learn
&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      &lt;span class=&quot;what-you-will-learn--objective-item--ECarc&quot;&gt;
        Be able to program in Python professionally
      &lt;/span&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      &lt;span class=&quot;what-you-will-learn--objective-item--ECarc&quot;&gt;
        Create a portfolio of 100 Python projects to apply for developer jobs
      &lt;/span&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      &lt;span class=&quot;what-you-will-learn--objective-item--ECarc&quot;&gt;
        Be able to use Python for data science and machine learning
      &lt;/span&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      &lt;span class=&quot;what-you-will-learn--objective-item--ECarc&quot;&gt;
        Build GUIs and Desktop applications with Python
      &lt;/span&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      &lt;span class=&quot;what-you-will-learn--objective-item--ECarc&quot;&gt;
        Master the Python programming language by building 100 projects over 100
        days
      &lt;/span&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      &lt;span class=&quot;what-you-will-learn--objective-item--ECarc&quot;&gt;
        Be able to build fully fledged websites and web apps with Python
      &lt;/span&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      &lt;span class=&quot;what-you-will-learn--objective-item--ECarc&quot;&gt;
        Build games like Blackjack, Pong and Snake using Python
      &lt;/span&gt;
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      &lt;span class=&quot;what-you-will-learn--objective-item--ECarc&quot;&gt;
        Learn to use modern frameworks like Selenium, Beautiful Soup, Request,
        Flask, Pandas, NumPy, Scikit Learn, Plotly, Matplotlib, Seaborn,
      &lt;/span&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;styles--audience--2pZ0S&quot; data-purpose=&quot;target-audience&quot;&gt;
  &lt;h2 class=&quot;udlite-heading-xl styles--audience__title--1Sob_&quot;&gt;
    Who this course is for:
  &lt;/h2&gt;
  &lt;ul class=&quot;styles--audience__list--3NCqY&quot;&gt;
    &lt;li&gt;
      If you want to learn to code from scratch through building fun and useful
      projects, then take this course.
    &lt;/li&gt;
    &lt;li&gt;
      If you want to start your own startup by building your own websites and
      web apps.
    &lt;/li&gt;
    &lt;li&gt;
      If you are a complete beginner then this course will be everything you
      need to become a Python professional
    &lt;/li&gt;
    &lt;li&gt;
      If you are a seasoned programmer wanting to switch to Python then this is
      the quickest way. Learn through coding projects.
    &lt;/li&gt;
    &lt;li&gt;
      If you are an intermediate Python programmer then you know 100 days of
      code challenges will help you level up.
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;h2 class=&quot;udlite-heading-xl requirements--title--2j7S2&quot;&gt;Requirements&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      No programming experience needed - I'll teach you everything you need to
      know
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      A Mac or PC computer with access to the internet
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      No paid software required - I'll teach you how to use PyCharm, Jupyter
      Notebooks and Google Colab
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;div class=&quot;udlite-block-list-item-content&quot;&gt;
      I'll walk you through, step-by-step how to get all the software installed
      and set up
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Download&lt;/h2&gt;
&lt;p&gt;
  Download here on mega :
  &lt;a
    href=&quot;https://mega.nz/folder/3dkS2bDK#gYMtinIWJaXsFfVJErcZYA/folder/fRlT2KpL&quot;
    target=&quot;_blank&quot;
  &gt;
    https://mega.nz/folder/3dkS2bDK#gYMtinIWJaXsFfVJErcZYA/folder/fRlT2KpL
  &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</content><author><name>rin</name></author><category term="Python" /><category term="course" /><summary type="html">Intro This course is uploaded on udemy here by : Dr. Angela Yu  rate : 4.8 Download link is in the end of the post What you'll learn Be able to program in Python professionally Create a portfolio of 100 Python projects to apply for developer jobs Be able to use Python for data science and machine learning Build GUIs and Desktop applications with Python Master the Python programming language by building 100 projects over 100 days Be able to build fully fledged websites and web apps with Python Build games like Blackjack, Pong and Snake using Python Learn to use modern frameworks like Selenium, Beautiful Soup, Request, Flask, Pandas, NumPy, Scikit Learn, Plotly, Matplotlib, Seaborn, Who this course is for: If you want to learn to code from scratch through building fun and useful projects, then take this course. If you want to start your own startup by building your own websites and web apps. If you are a complete beginner then this course will be everything you need to become a Python professional If you are a seasoned programmer wanting to switch to Python then this is the quickest way. Learn through coding projects. If you are an intermediate Python programmer then you know 100 days of code challenges will help you level up. Requirements No programming experience needed - I'll teach you everything you need to know A Mac or PC computer with access to the internet No paid software required - I'll teach you how to use PyCharm, Jupyter Notebooks and Google Colab I'll walk you through, step-by-step how to get all the software installed and set up Download Download here on mega : https://mega.nz/folder/3dkS2bDK#gYMtinIWJaXsFfVJErcZYA/folder/fRlT2KpL  </summary></entry><entry><title type="html">Network scanner : Discover all ip address on your network</title><link href="https://blog.icodes.tech/2021/08/15/network-scanner-discover-all-ip-address-on-your-network.html" rel="alternate" type="text/html" title="Network scanner : Discover all ip address on your network" /><published>2021-08-15T00:00:00+01:00</published><updated>2021-08-17T17:50:54+01:00</updated><id>https://blog.icodes.tech/2021/08/15/network-scanner-discover-all-ip-address-on-your-network</id><content type="html" xml:base="https://blog.icodes.tech/2021/08/15/network-scanner-discover-all-ip-address-on-your-network.html">&lt;h2 id=&quot;Codenetworkscannertogetalltheipaddressconnectedonyournetworkwithpython&quot;&gt;
  Intro :
&lt;/h2&gt;
&lt;div&gt;
   Hello, today we are going to code a network scanner to scan our network and
  find the ip address connected we are going to use the ping command ... follow
&lt;/div&gt;
&lt;div&gt;In my case i am using linux ..&lt;/div&gt;
&lt;div&gt;This script is going to show all connected devices on our network&lt;/div&gt;
&lt;h2&gt;Start coding :&lt;/h2&gt;
&lt;h3&gt;Setup the script file :&lt;/h3&gt;
&lt;h4&gt;Create file :&lt;/h4&gt;
&lt;p&gt;First you have to create a file with python extension (ends with .py)&lt;/p&gt;
&lt;p&gt;i will name it scan.py&lt;/p&gt;
&lt;h4&gt;Import required modules:&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;import sh    
from subprocess import Popen, PIPE
import re&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Function to get the Mac address of the ip :&lt;/h3&gt;
&lt;p&gt;
  First, we are going to create a function to get the Mac address of the ip we
  have:
&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;def getMac(ip):

    pid = Popen([&quot;arp&quot;, &quot;-n&quot;, ip], stdout=PIPE)
    s = pid.communicate()[0]
    a=re.search(r&quot;(([a-f\d]{1,2}\:){5}[a-f\d]{1,2})&quot;, str(s))
    if a ==None:
        b=('this')
        return b
    else:
        mac = a.groups()[0]
        return mac
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This function :&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Uses the command arp -n to get the information of the ip.&lt;/li&gt;
  &lt;li&gt;Then it uses the regex to get the mac .&lt;/li&gt;
  &lt;li&gt;The if statement is for checking if the ip is our ip&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;msg msg--highlight&quot;&gt;
  &lt;span class=&quot;ILfuVd NA6bn&quot;&gt;
    &lt;span class=&quot;hgKElc&quot;&gt;
       On
      &lt;strong&gt;Linux&lt;/strong&gt;
      operating systems, the
      &lt;strong&gt;arp command&lt;/strong&gt;
      manipulates or shows the kernel's
    &lt;/span&gt;
  &lt;/span&gt;
  &lt;span class=&quot;ILfuVd NA6bn&quot;&gt;
    &lt;span class=&quot;hgKElc&quot;&gt;
      IPv4 network neighbour cache. It can add entries to the table, delete one,
      or display the current content.
      &lt;strong&gt;ARP&lt;/strong&gt;
      stands for Address Resolution Protocol, which is used to find the address
      of a network neighbor for a given IPv4 address.
    &lt;/span&gt;
  &lt;/span&gt;
&lt;/p&gt;
&lt;h3&gt;Generate some ip address:&lt;/h3&gt;
&lt;p&gt;Now we are going to do a for loop to generate some ip address&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;for num in range(1,256):  
    ip = &quot;192.168.1.&quot;+str(num)    
    try:  
        sh.ping(ip, &quot;-c 1&quot;,_out=&quot;/dev/null&quot;)  
        mac=getMac(ip)
        print (&quot;PING &quot;,ip , &quot;OK &quot;,mac) 
        
    except sh.ErrorReturnCode_1:  
        #print (&quot;PING &quot;, ip, &quot;FAILED&quot;) 
        pass &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This loop:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Generates an ip&lt;/li&gt;
  &lt;li&gt;Then it runs the command ping to check if this ip is alive&lt;/li&gt;
  &lt;li&gt;Then it gets the mac address&lt;/li&gt;
  &lt;li&gt;After that it print the ip if everything is okay&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&quot;msg msg--highlight&quot;&gt;
  Ping is a computer network administration software utility used to test if an
  host is reachable on an Internet Protocol network.you can do it on all
  operating systems that have network access, including most embedded network
  administration software.
&lt;/p&gt;
&lt;p class=&quot;msg msg--info&quot;&gt;
  NOTE : the ip variable i used can be different of yours first you have to
  check what types of ip address your router uses.
&lt;/p&gt;
&lt;p&gt;
  To check what ip address your router uses you can simply run the command :
&lt;/p&gt;
&lt;pre&gt;ifconfig&lt;/pre&gt;
&lt;p&gt;and you will see an output like that :&lt;/p&gt;
&lt;pre&gt;wlo1: flags=4163&amp;lt;UP,BROADCAST,RUNNING,MULTICAST&amp;gt;  mtu 1500&lt;br&gt;        inet 192.168.1.6  netmask 255.255.255.0  broadcast 192.168.1.255&lt;br&gt;        inet6 fd7c:11cb:b823:5200:d4dc:1fd4:23e2:b95a  prefixlen 64  scopeid 0x0&amp;lt;global&amp;gt;&lt;br&gt;        inet6 fe80::fb2d:ea55:3964:dd3b  prefixlen 64  scopeid 0x20&amp;lt;link&amp;gt;&lt;br&gt;        inet6 fd7c:11cb:b823:5200:9d6:45ba:f7dc:4bf0  prefixlen 64  scopeid 0x0&amp;lt;&lt;/pre&gt;
&lt;p&gt;
  in my case you can see that my ip is 192.168.1.6 so all others ip will be
  start with 192.168.1. that's why i used 192.168.1.  to generate ip address.
&lt;/p&gt;
&lt;h2&gt;Full code :&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;import sh    
from subprocess import Popen, PIPE
import re

def getMac(ip):
    pid = Popen([&quot;arp&quot;, &quot;-n&quot;, ip], stdout=PIPE)
    s = pid.communicate()[0]
    a=re.search(r&quot;(([a-f\d]{1,2}\:){5}[a-f\d]{1,2})&quot;, str(s))
    if a ==None:
        b=('this')
        return b
    else:
        mac = a.groups()[0]
        return mac

for num in range(1,256):  
    ip = &quot;192.168.1.&quot;+str(num)  
    try:  
        sh.ping(ip, &quot;-c 1&quot;,_out=&quot;/dev/null&quot;)  
        mac=getMac(ip)
        print (&quot;PING &quot;,ip , &quot;OK &quot;,mac) 
        
    except sh.ErrorReturnCode_1:  
        #print (&quot;PING &quot;, ip, &quot;FAILED&quot;) 
        pass &lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Run the script :&lt;/h3&gt;
&lt;p&gt;open the folder contains the script on a terminal and run:&lt;/p&gt;
&lt;pre&gt;python3 scan.py&lt;/pre&gt;
&lt;h3&gt;OUTPUT :&lt;/h3&gt;
&lt;pre&gt;PING  192.168.1.1 OK  00:00:00:00:00&lt;br&gt;PING  192.168.1.2 OK  00:00:00:00:00&lt;br&gt;PING  192.168.1.5 OK  00:00:00:00:00&lt;br&gt;PING  192.168.1.10 OK  00:00:00:00:00&lt;br&gt;PING  192.168.1.14 OK  00:00:00:00:00&lt;/pre&gt;
&lt;p class=&quot;msg msg--info&quot;&gt;You will see mac address instead of 00:00:00:00:00&lt;/p&gt;
&lt;p&gt;Don't forget to share this post..&lt;/p&gt;
&lt;p&gt;Happy coding ...&lt;/p&gt;</content><author><name>rin</name></author><category term="Python" /><summary type="html">Intro :  Hello, today we are going to code a network scanner to scan our network and find the ip address connected we are going to use the ping command ... follow In my case i am using linux .. This script is going to show all connected devices on our network Start coding : Setup the script file : Create file : First you have to create a file with python extension (ends with .py) i will name it scan.py Import required modules: import sh from subprocess import Popen, PIPE import re Function to get the Mac address of the ip : First, we are going to create a function to get the Mac address of the ip we have: def getMac(ip):</summary></entry><entry><title type="html">Code a simple internet speed tester using python</title><link href="https://blog.icodes.tech/2021/07/31/code-a-simple-internet-speed-tester-using-python.html" rel="alternate" type="text/html" title="Code a simple internet speed tester using python" /><published>2021-07-31T00:00:00+01:00</published><updated>2021-09-08T11:59:38+01:00</updated><id>https://blog.icodes.tech/2021/07/31/code-a-simple-internet-speed-tester-using-python</id><content type="html" xml:base="https://blog.icodes.tech/2021/07/31/code-a-simple-internet-speed-tester-using-python.html">&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;
  Hello, today we are going to build an internet's speed tester with python
  using speedtest-cli library. let's code !
&lt;/p&gt;
&lt;h2&gt;Code&lt;/h2&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;h4&gt;
  &lt;a aria-hidden=&quot;true&quot; class=&quot;anchor&quot; id=&quot;user-content-pip--easy_install&quot;&gt;&lt;/a&gt;
  pip / easy_install
&lt;/h4&gt;
&lt;pre&gt;
pip install speedtest-cli
&lt;/pre&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;
easy_install speedtest-cli
&lt;/pre&gt;
&lt;p&gt;&lt;a name=&quot;user-content-github&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4&gt;Github&lt;/h4&gt;
&lt;pre&gt;
pip install git+https://github.com/sivel/speedtest-cli.git
&lt;/pre&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;
git clone https://github.com/sivel/speedtest-cli.git
cd speedtest-cli
python setup.py install
&lt;/pre&gt;
&lt;p&gt;&lt;a name=&quot;user-content-just-download-like-the-way-it-used-to-be&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Just download (Like the way it used to be)&lt;/h4&gt;
&lt;pre&gt;
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
&lt;/pre&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;
curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
&lt;/pre&gt;
&lt;h3&gt;Coding&lt;/h3&gt;
&lt;p&gt;First importing the module&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import speedtest&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then we define a tester&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tester=speedtest.Speedtest()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Choosing the best server for the test&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;print('Searching for the best server ..')&lt;br /&gt;bestServer=tester.get_best_server()&lt;br /&gt;print(f'Selecting {bestServer[&quot;host&quot;]} located in {bestServer[&quot;country&quot;]},{bestServer[&quot;name&quot;]}')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Perform a download speed test&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;print('Checking download speed ..')&lt;br /&gt;downloadSpeed=tester.download()&lt;br /&gt;print('Done !')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Perform a upload speed test&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;print('Checking upload speed ..')&lt;br /&gt;uploadSpeed=tester.upload()&lt;br /&gt;print('Done !')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The ping test is already done&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ping=tester.results.ping&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Showing the results&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;print('Results :')&lt;br /&gt;print(f'-Download speed : {downloadSpeed/1048576 :.2f} Mbits/s')&lt;br /&gt;print(f'-Upload speed : {uploadSpeed/1048576 :.2f} Mbits/s')&lt;br /&gt;print(f'-Ping : {ping :.2f} ms')&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Full code&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;import speedtest&lt;br /&gt;&lt;br /&gt;tester=speedtest.Speedtest()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;print('Searching for the best server ..')&lt;br /&gt;bestServer=tester.get_best_server()&lt;br /&gt;print(f'Selecting {bestServer[&quot;host&quot;]} located in {bestServer[&quot;country&quot;]},{bestServer[&quot;name&quot;]}')&lt;br /&gt;&lt;br /&gt;print('Checking download speed ..')&lt;br /&gt;downloadSpeed=tester.download()&lt;br /&gt;print('Done !')&lt;br /&gt;&lt;br /&gt;print('Checking upload speed ..')&lt;br /&gt;uploadSpeed=tester.upload()&lt;br /&gt;print('Done !')&lt;br /&gt;&lt;br /&gt;ping=tester.results.ping&lt;br /&gt;&lt;br /&gt;print('Results :')&lt;br /&gt;print(f'-Download speed : {downloadSpeed/1048576 :.2f} Mbits/s')&lt;br /&gt;print(f'-Upload speed : {uploadSpeed/1048576 :.2f} Mbits/s')&lt;br /&gt;print(f'-Ping : {ping :.2f} ms')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is a basic code you can do modifications&amp;nbsp;&lt;/p&gt;
&lt;p&gt;happy coding !&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;!--div class=&quot;separator&quot; style=&quot;clear: both&quot;&gt;
  &lt;a
    href=&quot;https://1.bp.blogspot.com/-u5buFrznJWY/YQV4rx-2M0I/AAAAAAAAARE/O5wo1f2L2O8E1xRfVEZbqVJEv8BWZLFAwCLcBGAsYHQ/s0/internet-speed-tester.webp&quot;
    style=&quot;display: block; padding: 1em 0px; text-align: center&quot;
  &gt;
    &lt;img
      alt=&quot;Code a simple internet speed tester using python&quot;
      border=&quot;0&quot;
      data-original-height=&quot;203&quot;
      data-original-width=&quot;450&quot;
      src=&quot;https://1.bp.blogspot.com/-u5buFrznJWY/YQV4rx-2M0I/AAAAAAAAARE/O5wo1f2L2O8E1xRfVEZbqVJEv8BWZLFAwCLcBGAsYHQ/s16000/internet-speed-tester.webp&quot;
      title=&quot;Code a simple internet speed tester using python&quot;
    /&gt;
  &lt;/a&gt;
&lt;/div--&gt;</content><author><name>rin</name></author><category term="Python" /><summary type="html">Intro Hello, today we are going to build an internet's speed tester with python using speedtest-cli library. let's code ! Code Installation pip / easy_install pip install speedtest-cli or easy_install speedtest-cli &amp;nbsp; Github pip install git+https://github.com/sivel/speedtest-cli.git or git clone https://github.com/sivel/speedtest-cli.git cd speedtest-cli python setup.py install</summary></entry></feed>