반응형

[PYTHON] 흐름대로 프로그래밍하는 Flowgorithm

 

https://wikidocs.net/book/8077

플로고리듬(Flowgorithm)은 프로그램의 구조를 시각적으로 나타내는 흐름도(flowchart)를 작성하는 도구이자, 그 자체로 프로그래밍 언어입니다. 플로고리듬으로 흐름도만 작성하면 다른 프로그래밍 언어로 코딩하는 과정 없이 곧바로 실행 결과를 볼 수 있으며, 의사코드(pseudocode) 및 각종 프로그래밍 언어 코드를 자동으로 생성할 수도 있습니다.

플로고리듬으로 아주 간단한 hello world 예제부터 시작해 점차 복잡한 알고리듬을 구현(!)해봄으로써, 순수한 재미도 느껴보고 교육이나 실무에 쓸모가 있을지도 알아보려고 합니다.

이 책을 따라 하다보면 다음을 자연스레 익힐 수 있을 것입니다.

  • 흐름도 작성법
  • 플로고리듬 사용법
  • 프로그래밍의 기본 원리
  • 의사코드
  • 기초 알고리듬

흐름도를 직접 작성하지 않더라도, 여기에 실린 흐름도와 실행 영상을 참고해서 각자 사용하는 언어로 구현하는 것도 좋습니다.

이 책에서 사용한 버전은 Flowgorithm 2.30.3입니다.

반응형
반응형

[PYTHON] 4 Ways to Solve FizzBuzz in Python

 

https://builtin.com/software-engineering-perspectives/fizzbuzz-python

 

4 Ways to Solve FizzBuzz in Python

FizzBuzz is a challenge that involves writing code that labels numbers divisible by three as “Fizz,” four as “Buzz” and numbers divisible by both as “FizzBuzz.” Here’s how to solve it in Python.  

builtin.com

he technical interview is hard to master and can be a nerve-racking experience. Not only do you need to know what you are talking about, but you also have to prove it to the person interviewing you. Fortunately, most fears of failure in this regard are exaggerated, and often, the interview will boil down to only a few potentially difficult questions.

4 METHODS FOR SOLVING FIZZBUZZ IN PYTHON

  1. Conditional statements.
  2. String concatenation.
  3. Itertools.
  4. Lambda.

One very common problem that programmers are asked to solve in technical interviews and take-home assignments is the FizzBuzz problem. FizzBuzz is a word game designed for children to teach them about division. In the game, each number divisible by three will be returned with a Fizz and any number divisible by four will return a Buzz. I was never a big fan of the test, but it can help weed out weaker applicants.

While the test is pretty easy to pass so long as you know the right operators, there are a variety of different ways to solve it. However, some solutions might prove to be more impressive than others, and I think this is something to keep in mind when working on this problem for a real interview. In addition to demonstrating these alternative methods of solving FizzBuzz, we are going to time each solution and compare the respective results.

 

How to Solve FizzBuzz in Python

1. CONDITIONAL STATEMENTS

The most popular and well-known solution to this problem involves using conditional statements. For every number in n, we are going to need to check if that number is divisible by four or three. If the number is divisible by three, it will print Fizz; if the number is divisible by four, it will print Buzz. The key here is simply knowing what operators to use to check for divisibility. In Python, we can use the modulus operator, %.

In computing, the modulo operation is meant to return the signed remainder of division. If a number is divisible by another, the remainder will always be zero, so we can use that to our advantage whenever we make our FizzBuzz function. We will structure condition blocks like this, where num is the iteration in a list of numbers.

    if num % 3 == 0:
        print('Fizz')

We can now build an iterative loop following the same principle, except we’ll be adding Fizz and Buzz:

for num in range(1,101):
    string = ""
    if num % 3 == 0:
        string = string + "Fizz"
    if num % 4 == 0:
        string = string + "Buzz"
    if num % 4 != 0 and num % 3 != 0:
        string = string + str(num)
    print(string)

ACE YOUR INTERVIEWExpect These Questions in Your Second-Stage Software Developer Interview

 

2. STRING CONCATENATION

Though incredibly similar to its regular conditional loop counterpart, the string concatenation method is another really great way to solve this problem. Of course, this method is also all but too similar to the conditional method. The significant difference here is that the conditionals are simply going to be affecting a small sequence of characters put into the string data-type.

for num in range(1,21):
 string = “”
 if num % 3 == 0:
 string = string + “Fizz”
 if num % 5 == 0:
 string = string + “Buzz”
 if num % 5 != 0 and num % 3 != 0:
 string = string + str(num)
 print(string)

 

3. ITERTOOLS

Another way we could approach this problem — as well as other iteration problems — is to use the standard library tool, itertools. This will create a loop with better performance than most other iteration methods. Itertools can be thought of as an iteration library that is built to mirror several other extremely performant libraries from other languages, except using pythonic methods for solving problems.

Itertools will need to be imported, however, it is in the standard library. This means pip won’t be necessary, but itertools is still considered a project dependency. We are going to utilize three different methods from this module:

  • cycle(): Cycle is a function takes a basic data-type and creates an iterator out of it. This function is useful and makes building custom iterators incredibly easy in Python.
  • count(): Count is another generator that iterates a range. This iterator is often called an “infinite iterator,” which basically means that the count() function could essentially loop on and on forever.
  • islice(): The islice function is short for “iteration slice.” We can use this iterator to cut out particular elements in a data structure and iterate them.

Combining these methods will allow us to create a new function where we can solve the FizzBuzz problem without using the typical iteration methods in Python that we might be used to.

import itertools as its
def fizz_buzz(n):
    fizzes = its.cycle([""] * 2 + ["Fizz"])
    buzzes = its.cycle([""] * 4 + ["Buzz"])
    fizzes_buzzes = (fizz + buzz for fizz, buzz in zip(fizzes, buzzes))
    result = (word or n for word, n in zip(fizzes_buzzes, its.count(1)))
    for i in its.islice(result, 100):
        print(i)

The benefits of using this methodology is that the itertools library’s methods of iteration are typically going to be a lot faster than the pythonic methods of iteration. While itertools is still pythonic, it is likely that the speed of iterative looping is going to improve when using this library over the typical for loop in Python. Needless to say, creating a faster algorithm than any other applicant could certainly put you on the map for getting the job. This is a valuable module and application of the module for programmers who are still searching for employment.

A tutorial on how to solve FizzBuzz in Python. | Video: Programming with Mosh

 

4. LAMBDA

Another method we could use to solve this problem is even more Pythonic of a solution, and it makes use of Python’s bridge to scientific computing, lambda. There are a lot of standard functions that can be used with these lambda expressions, and they certainly come in handy. One of the most frequently used methods in this regard is the map() method. This method is going to take an expression that we can create using lambda as well as an iterative data structure.

print(*map(lambda i: 'Fizz'*(not i%3)+'Buzz'*(not i%5) or i, range(1,101)),sep='\n')

For this example, I used the range generator, and the “not” keywords in order to reverse the polarity of the modulus operators usage.

ACE YOUR INTERVIEW15 Good Questions to Ask in an Interview

 

What’s the Best Way to Solve FizzBuzz in Python?

With all of these new ways to solve the problem, you might be wondering which one you should use. Of course, there are going to be trade-offs between the solutions, but in order to really make a great impression, we could narrow our decision down to using either the lambda method or the itertools method.

The lambda method has the advantage of being incredibly concise. However, depending on what code the map() method uses for iteration, it might trail behind the itertools method in terms of speed due to its less efficient iteration. The only way to figure out whether or not this is the case is to run some tests and compare our interpreter return times. So, that is going to be the mission between comparing these two heaps of code. In order to facilitate this comparison, I am going to be using the IPython magic in-line command, %timeit. Let’s start by trying it out on the itertools method. Since I wrote this as a function earlier, I can simply time the function call:

%timeit fizz_buzz(101)

Timed results for FizzBuzz using itertools. | Image: Emmett Boudreau

We will do the same with the lambda method:

%timeit print(*map(lambda i: 'Fizz'*(not i%3)+'Buzz'*(not i%5) or i, range(1,101)),sep='\n')

Timed results for FizzBuzz using the lambda method. | Image: Emmett Boudreau

Just as I predicted, the itertools method came in just a little faster, while the lambda method lagged slightly behind losing less than a millisecond off of the overall interpretation time. The answer here is somewhat of a mixed bag because the concise nature of the lambda expression and map() function in tandem make the lambda method appear to be a lot more impressive. But the compile time of the itertools method is most certainly impressive because of its speed.

As is often the case in programming, there are multiple ways to do one thing, and as is also often the case, some ways are significantly better than others. There are certainly some trade-offs depending on what methodology you select, but this is what defines your own style as a programmer. I believe regardless  of the decision that is made, using these faster methods will almost certainly make any aspiring programmer look a lot more proficient in their take home assignment. Furthermore, any aspiring programmer could certainly learn a lot more about programming and the language they are programming in by trying out different methods of doing the same thing. 

반응형
반응형

[python] Print Calendar 

from calendar import*
year = int(input('EnterYear: '))

print(calendar(year, 2, 1, 8, 3))

#2 = 2 characters for days (Mo, Tu, etc)
#1 = 1 line (row) for each week
#8 = 8 rows for each month
#3 = 3 columns for all months of the year.

반응형
반응형

PyWhatKit은 다양한 유용한 기능을 갖춘 Python 라이브러리입니다. 사용하기 쉽고 추가 설정이 필요하지 않습니다. 현재 WhatsApp 및 YouTube 자동화를 위한 가장 인기 있는 라이브러리 중 하나입니다. 새로운 기능과 버그 수정이 포함된 새로운 업데이트가 자주 출시됩니다.

 

PyWhatKit is a Python library with various helpful features. It's easy-to-use and does not require you to do any additional setup. Currently, it is one of the most popular library for WhatsApp and YouTube automation. New updates are released frequently with new features and bug fixes.

 

https://pypi.org/project/pywhatkit/

 

pywhatkit

PyWhatKit is a Simple and Powerful WhatsApp Automation Library with many useful Features

pypi.org

pip3 install pywhatkit

import pywhatkit as kit
import datetime
import time

# Replace these values with your own
phone_number = "+1234567890"  # Include the country code without '+' or '0'
message = "Hello, this is a test message!"

# Set the time to send the message (24-hour format)
hour = 12
minute = 0

# Get the current time
now = datetime.datetime.now()
current_hour = now.hour
current_minute = now.minute

# Calculate the delay in seconds until the specified time
delay_seconds = ((hour - current_hour) * 60 + (minute - current_minute)) * 60

# Wait until the specified time
if delay_seconds > 0:
    print(f"Waiting for {delay_seconds} seconds until {hour}:{minute}")
    time.sleep(delay_seconds)
    

# Send the WhatsApp message
kit.sendwhatmsg(phone_number, message, now.hour, now.minute + 1)  # Adding 1 minute to the current time

print("Message sent successfully!")
반응형
반응형

 

ValueError: Unable to find resource t64.exe in package pip._vendor.distlib

Python 3.x에서도 pip을 업그레이드할 때 오류가 발생하는 경우가 있다. 이런 경우에는 다음과 같이 upgrade하라는 말만 앵무새처럼 반복하게 된다.

그럴 때에는 get-pip.py 파일을 받아서 실행하면 된다. get-pip.py는 다음 URL에서 받을 수 있는데, 그냥 누르면 파일 내용이 열리므로 마우스 우클릭 후 "다른 이름으로 링크 저장..." 메뉴를 선택하여 get-pip.py란 이름으로 저장한다.


https://bootstrap.pypa.io/get-pip.py

 

get-pip.py를 받은 후에는 저장된 폴더를 열고 그 폴더에서 Shift-우클릭을 통해 명령 프롬프트를 연 다음 일반 Python 프로그램처럼 이를 실행해 준다.


출처: https://woogyun.tistory.com/698 [살아가는 이야기:티스토리]

 

반응형
반응형

[python] Hand gesture recognition in Python using OpenCV

 

 

https://github.com/ishfulthinking/Python-Hand-Gesture-Recognition

 

GitHub - ishfulthinking/Python-Hand-Gesture-Recognition: A guide to using Python and OpenCV2 to create an application that can r

A guide to using Python and OpenCV2 to create an application that can recognize hand gestures/movements. - GitHub - ishfulthinking/Python-Hand-Gesture-Recognition: A guide to using Python and OpenC...

github.com

 

반응형
반응형

https://docs.python.org/ko/3/library/turtle.html

 

turtle — Turtle graphics

Source code: Lib/turtle.py Introduction: Turtle graphics is an implementation of the popular geometric drawing tools introduced in Logo, developed by Wally Feurzeig, Seymour Papert and Cynthia Solo...

docs.python.org

turtle — 터틀 그래픽

소스 코드: Lib/turtle.py


소개

Turtle graphics is an implementation of the popular geometric drawing tools introduced in Logo, developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon in 1967.

Turtle star

turtle은 간단한 움직임을 반복하는 프로그램을 사용하여 복잡한 모양을 그릴 수 있습니다.

In Python, turtle graphics provides a representation of a physical “turtle” (a little robot with a pen) that draws on a sheet of paper on the floor.

It’s an effective and well-proven way for learners to encounter programming concepts and interaction with software, as it provides instant, visible feedback. It also provides convenient access to graphical output in general.

Turtle drawing was originally created as an educational tool, to be used by teachers in the classroom. For the programmer who needs to produce some graphical output it can be a way to do that without the overhead of introducing more complex or external libraries into their work.

Tutorial

New users should start here. In this tutorial we’ll explore some of the basics of turtle drawing.

Starting a turtle environment

In a Python shell, import all the objects of the turtle module:

from turtle import *

If you run into a No module named '_tkinter' error, you’ll have to install the Tk interface package on your system.

Basic drawing

Send the turtle forward 100 steps:

forward(100)

You should see (most likely, in a new window on your display) a line drawn by the turtle, heading East. Change the direction of the turtle, so that it turns 120 degrees left (anti-clockwise):

left(120)

Let’s continue by drawing a triangle:

forward(100)
left(120)
forward(100)

Notice how the turtle, represented by an arrow, points in different directions as you steer it.

Experiment with those commands, and also with backward() and right().

펜 제어

Try changing the color - for example, color('blue') - and width of the line - for example, width(3) - and then drawing again.

You can also move the turtle around without drawing, by lifting up the pen: up() before moving. To start drawing again, use down().

The turtle’s position

Send your turtle back to its starting-point (useful if it has disappeared off-screen):

home()

The home position is at the center of the turtle’s screen. If you ever need to know them, get the turtle’s x-y co-ordinates with:

pos()

Home is at (0, 0).

And after a while, it will probably help to clear the window so we can start anew:

clearscreen()

Making algorithmic patterns

Using loops, it’s possible to build up geometric patterns:

for steps in range(100):
    for c in ('blue', 'red', 'green'):
        color(c)
        forward(steps)
        right(30)

- which of course, are limited only by the imagination!

Let’s draw the star shape at the top of this page. We want red lines, filled in with yellow:

color('red')
fillcolor('yellow')

Just as up() and down() determine whether lines will be drawn, filling can be turned on and off:

begin_fill()

Next we’ll create a loop:

while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break

abs(pos()) < 1 is a good way to know when the turtle is back at its home position.

Finally, complete the filling:

end_fill()

(Note that filling only actually takes place when you give the end_fill() command.)

How to…

This section covers some typical turtle use-cases and approaches.

Get started as quickly as possible

One of the joys of turtle graphics is the immediate, visual feedback that’s available from simple commands - it’s an excellent way to introduce children to programming ideas, with a minimum of overhead (not just children, of course).

The turtle module makes this possible by exposing all its basic functionality as functions, available with from turtle import *. The turtle graphics tutorial covers this approach.

It’s worth noting that many of the turtle commands also have even more terse equivalents, such as fd() for forward(). These are especially useful when working with learners for whom typing is not a skill.

You’ll need to have the Tk interface package installed on your system for turtle graphics to work. Be warned that this is not always straightforward, so check this in advance if you’re planning to use turtle graphics with a learner.

Use the turtle module nam

반응형
반응형
1. Pandas

Pandas is a software library written for the python programming language for data manipulation and analysis.

Pandas is well suited for many different kinds of data:
  • Tabular data with heterogeneously-types columns.
  • Ordered and unordered time series data.
  • Arbitrary matrix data with row and column labels.
  • Any other form of observational / statistical data sets.
 The data actually need not be labeled at all to be placed into a pandas data structure.

2. NumPy

Numpy is the core library for scientific computing in Python. It provides a high-performance multidimensional array object, and tools for working with these arrays.



3. Matplotlib

Matplotlib is a Python package used for 2D graphics.
  • Bar graph
  • Histograms
  • Scatter Plot
  • Pie Plot
  • Hexagonal Bin Plot
  • Area Plot

 


4. Selenium

The selenium package is used to automate web browser interaction from Python.


5. OpenCV

OpenCV- Python is a library of Python designed to solve computer vision problems.


6. SciPy

Scipy is a free and open-source Python library used for scientific computing and technical computing.


7. Scikit-Learn

Scikit-learn (formerly scikits.learn) is a free software machine learning library for the Python programming language. It features various classification, regression and clustering algorithms.


8.  PySpark

The Spark Python API (PySpark) exposes the Spark programming model to Python.



9. Django

Diango is a Python web framework. A framework provides a structure and common methods to make the life of a web application developer much easier for building flexible, scalable and maintainable web applications

  • Django is a high-level and has a MVC-MVT styled architecture.
  • Django web framework is written on quick and powerful Python language.
  • Django has a open-source collection of libraries for building a fully functioning web application.


10. Tensor Flow

TensorFlow is a Python library used to implement deep networks. In TensorFlow, computation is approached as a dataflow graph.


반응형

+ Recent posts