ubuntu & jenkins (2017ver)
ubuntu & jenkins
sudo add-apt-repository ppa:webupd8team/java
sudo apt update; sudo apt install oracle-java8-installer
javac -version(확인)
sudo apt install oracle-java8-set-default
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
apt-get update
apt-get install jenkins
cd /etc/apache2/sites-available
sudo nano jenkins.conf (NEW)
-----------------------------------------------
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName ci.company.com
ServerAlias ci
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/ nocanon
AllowEncodedSlashes NoDecode
</VirtualHost>
------------------------------------------------
a2enmod proxy
sudo apt update; sudo apt install oracle-java8-installer
sudo apt-get update
sudo apt-get install openjdk-7-jdk openjdk-7-jre-headless
'[개발노트] ' 카테고리의 다른 글
ubuntu & APM (2016ver) (0) | 2018.10.19 |
---|
ubuntu & APM (2016ver)
ubuntu & APM
0. 리눅스 설정
$ sudo apt-get update
$ sudo apt-get install update
$ sudo apt-get install unzip
($ sudo apt-get install ubuntu-desktop)
1. 아파치 설치하기
$ sudo apt-get install apache2
$ sudo service apache2 stop
2. php 설치
sudo apt-get install php5 libapache2-mod-php5
3. mysql 설치 - 설정
$ sudo apt-get install php5-mysql
$ sudo apt-get install mysql-server
- passwd 입력
$ cd /var/www/html
$ sudo nano info1.php (잘 설치됬는지 체크)
<?php
phpinfo();
?>
저장 - URL 확인
4. WP 설치
$ sudo wget http://ko.wordpress.org/wordpress-3.4.1-ko_KR.zip
$ sudo cp wp-config-sample.php wp-config.php
'[개발노트] ' 카테고리의 다른 글
ubuntu & jenkins (2017ver) (0) | 2018.10.19 |
---|
ubuntu & Wordporess (2015.ver)
1. 아파치 설치하기
$ sudo apt-get install apache2
4. php 설치 하기
$ sudo apt-get install php5-common php5 libapache2-mod-php5 php5-mysql php5-gd php5-curl php5-json
워드프레스 이미지 썸네일 생성 시 gd라이브러리가 필요하기 때문에 php5-gd 를 꼭 설치 하도록 하자.
3. MySQL 설치 하기
$ sudo apt-get install mysql-server mysql-client
2. mysql 인증 모듈 설치하기
$ sudo apt-get install libapache2-mod-auth-mysql
5. mod_rewrite 적용하기
$ sudo a2enmod rewrite
당장에 mod_rewrite 가 필요하지는 않지만 워드프레스주소를 변경하거나 등의 이유로 mod_rewrite가 필요로 하다.
8. 데이타베이스 설치
$ mysql -u root -p
mysql> create database 데이타베이스명; (보통은 wordpress라는 이름으로 많이 만듭니다.)
mysql> create user '유저명'@'localhost' identified by '암호';
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO '유저명'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit;
6. 테스트를 위한 도메인 설정 (도메인을 가지고 있다면 생략), 테스트를 위한 도메인 설명은 워드프레스 설치 준비 하기 – windows 편 를 참고한다. 우분투에서 테스트를 위한 도메인을 생성 한 후 연동하려면
$ sudo vi /etc/hosts
에서 편집 (http://ssamture.net/archives/2173) 참고
$ sudo vi /etc/hostname 에 있는 host명과 동일하게 해야함
7. Wordpress 설치
$ cd /var/www/html
$ sudo wget https://wordpress.org/latest.tar.gz
$ sudo tar -xvzf latest.tar.gz
$ sudo rm latest.tar.gz
$ cd wordpress
$ sudo cp wp-config-sample.php wp-config.php
10. 소유자 권한 설정
$ cd /var/www/html
$ sudo chown -R www-data:www-data wordpress
$ sudo chmod -R 755 wordpress
$ sudo service apache2 restart
9. wp-config.php 파일 설정
$ sudo nano wp-config.php (/var/www/html/wordpress)
파일을 편집 - 아래 명령어 찾아 수정
define('DB_NAME', '데이타베이스명');
define('DB_USER', '유저명');
define('DB_PASSWORD', '암호');
10. 재시작 및 확인
$ sudo service apache2 restart
접속이 되는지 확인해보자
11. [워드프레스] 설정
브라우져에서 http://컴퓨터ip/wordpress/로 접속하여 id/password 설정 후 로그인
ip대신 localhost를 쓰시면 다른 컴퓨터에서 접속이 안되는 형태로 설정되니 주의
'[개발노트] > # Python' 카테고리의 다른 글
(크롤링) 코드 예문 (0) | 2018.09.11 |
---|---|
(기초2) 구문 예시 (0) | 2018.09.11 |
(기초1) 구문 예시 (0) | 2018.09.11 |
(기초1) 기호, 함수 (0) | 2018.09.10 |
(설치&참고유틸) (0) | 2018.09.09 |
(크롤링) 코드 예문
# 빗썸 조회 크롤링
import requests
import json
import time
import csv
from datetime import datetime
count = int(input("몇 번 조회할까요? "))
stocks = []
for n in range(0, count):
response = requests.get("https://api.bithumb.com/public/ticker/BTC")
content = response.content
data = json.loads(content)
date = datetime.fromtimestamp(int(data['data']['date']) / 1000)
open1 = data['data']['opening_price']
close = data['data']['closing_price']
max = data['data']['max_price']
min = data['data']['min_price']
volume = data['data']['volume_1day']
stocks.append([date, open1, close, max, min, volume])
time.sleep(5)
"""
file = open('stocks.csv', 'w', newline = '')
csvfile = csv.writer(file)
for stock in stocks:
csvfile.writerow(stock)
file.close()
"""
with open('stocks.csv', 'w', newline = '') as file:
csvfile = csv.writer(file)
for stock in stocks:
csvfile.writerow(stock)
"""
with open('stocks.csv', 'w', newline = '') as file:
data = json.dumps(stocks, indent = ' ')
file.write(data)
"""
# index.html 문서 내용중 프로그래밍 언어, 운영체제 목록을 목록(list)화하기
import requests
from bs4 import BeautifulSoup
# 파일을 이용하여 크롤링을 진행하는 과정
file = open("index\\index.html", "r")
data = file.read()
file.close()
# 웹사이트를 통해 크롤링을 진행하는 과정
response = requests.get("http://192.168.101.200")
data = response.content
html = BeautifulSoup(data, "html.parser")
lists = []
for tag in ["ul", "ol"]:
li_list = html.find(tag).find_all("li")
temp_list = []
for li in li_list:
temp_list.append(li.text)
lists.append(temp_list)
print(lists)
print("프로그래밍 언어 목록 : {}".format(lists[0]))
print("운영체제 목록 : {}".format(lists[1]))
# table1.html 문서의 테이블(표)를 2차원 목록화하기
import requests
from bs4 import BeautifulSoup
response = requests.get("http://192.168.101.200/table3.html")
response.encoding = 'eucKR'
data = response.text
html = BeautifulSoup(data, 'html.parser')
tr_list = html.find("body").find_all("tr")
lists = []
for tr in tr_list:
temp_list = []
td_list = tr.find_all("td")
for td in td_list:
temp_list.append(td.text)
lists.append(temp_list)
for item in lists:
print(item)
# professors.html 문서의 테이블(표)를 2차원 목록화하기
response = requests.get("http://192.168.101.200/professors.html")
data = response.text
html = BeautifulSoup(data, 'html.parser')
tr_list = html.find("table").find("tbody").find_all("tr")
professors = []
for tr in tr_list:
no = tr.find("td", {"class":"number"}).text
name = tr.find("td", {"class":"professor"}).text
lecture = tr.find("td", {"class":"lecture"}).text
grade = tr.find("td", {"class":"grade"}).text
eval = tr.find("td", {"class":"evaluation"}).text
professors.append([no, name, lecture, grade, eval])
file = open("professors.csv", "w", newline = "")
csvfile = csv.writer(file)
for professor in professors:
csvfile.writerow(professor)
file.close()
# www.mnet.com 사이트에서 순위 50위까지 크롤링하기
import requests
from bs4 import BeautifulSoup
import csv
import os
def findinfo(tr):
rank = int(tr.find("td", {"class":"MMLItemRank"}).find("span").text.strip("위"))
title = tr.find("td", {"class":"MMLItemTitle"}).find("a", {"class":"MMLI_Song"}).text
try:
artist = tr.find("td", {"class":"MMLItemTitle"}).find("a", {"class":"MMLIInfo_Artist"}).text
except:
artist = "None"
try:
album = tr.find("td", {"class":"MMLItemTitle"}).find("a", {"class":"MMLIInfo_Album"}).text.replace("\xa0", " ").replace("\u2013", "-")
except:
album = "None"
info = {"rank":rank, "title":title, "artist":artist, "album":album}
return info
def saveimage(rank, date, tr):
img_url = tr.find("img")["src"]
filename = "{}\{:03}.jpeg".format(date, rank)
response = requests.get(img_url)
image = response.content
with open(filename, "wb") as file:
file.write(image)
date = input("언제[YYYYmmdd] 가요순위를 크롤링할까요? ")
pages = int(input("총 페이지[50/page]를 크롤링할까요? "))
os.system("md {}".format(date))
chart = []
for page in range(1, pages + 1):
url = "http://www.mnet.com/chart/TOP100/{}?pNum={}".format(date, page)
response = requests.get(url)
response.encoding = 'UTF-8'
data = response.text
html = BeautifulSoup(data, 'html.parser')
tr_list = html.find("table").find("tbody").find_all("tr")
for tr in tr_list:
info = findinfo(tr)
saveimage(info["rank"], date, tr)
chart.append([info["rank"], info["title"], info["artist"], info["album"]])
filename = "{}\chart-{}.csv".format(date, date)
file = open(filename, "w", newline = "")
csvfile = csv.writer(file)
for item in chart:
csvfile.writerow(item)
file.close()
# 네이버 속보페이지 크롤링하기
import requests
from bs4 import BeautifulSoup
date = input("언제[YYYYmmdd] 기사를 크롤링할까요? ")
pages = int(input("총 몇페이지[20/page]를 크롤링할까요? "))
for page in range(1, pages + 1):
url = "https://news.naver.com/main/list.nhn?mode=LSD&mid=sec&sid1=001&date={}&page={}".format(date, page)
response = requests.get(url)
text = response.text
html = BeautifulSoup(text, 'html.parser')
li_list = html.find("div", {"class":"list_body"}).find_all("li")
for li in li_list:
title = li.find("dt", "").text.strip("\n\r\t ")
try:
img_url = li.find("dt", {"class":"photo"}).find("img")['src'].split("?")[0]
except:
img_url = "None"
body = li.find("dd").find("span", {"class":"lede"}).text
writer = li.find("dd").find("span", {"class":"writing"}).text
print("기사제목 : {}".format(title))
print("기사사진 : {}".format(img_url))
print("기사본문 : {}".format(body))
print("기사제공 : {}".format(writer))
print("--------------------------------------------------------------------------------------")
'[개발노트] > # Python' 카테고리의 다른 글
ubuntu & Wordporess (2015.ver) (0) | 2018.10.18 |
---|---|
(기초2) 구문 예시 (0) | 2018.09.11 |
(기초1) 구문 예시 (0) | 2018.09.11 |
(기초1) 기호, 함수 (0) | 2018.09.10 |
(설치&참고유틸) (0) | 2018.09.09 |
(기초2) 구문 예시
# 운항 시간 계산하기
def flight(s, e):
s_hour = int(s) // 100
s_min = int(s) % 100
e_hour = int(e) // 100
e_min = int(e) % 100
if s_hour > e_hour or s_hour == e_hour and s_min >= e_min:
e_hour = e_hour + 24
if s_min > e_min:
e_hour = e_hour - 1
e_min = e_min + 60
hour = e_hour - s_hour
min = e_min - s_min
# time = "{:02}{:02}".format(hour, min)
# time = hour * 100 + min
return [hour, min]
start = input("출발 시각 : ")
end = input("도착 시각 : ")
time = flight(start, end) # time = [hour, min]
hour = time[0]
min = time[1]
if hour > 0 and min > 0:
print("운항 시간 : {}시간 {}분".format(hour, min))
elif min == 0:
print("운항 시간 : {}시간".format(hour))
elif hour == 0:
print("운항 시간 : {}분".format(min))
# 항공편 예약시스템
import csv
def start():
file = open("database.csv", "r")
csvfile = csv.reader(file)
database = []
for item in csvfile:
database.append(item)
file.close()
return database
def end(database):
file = open("database.csv", "w", newline = "")
csvfile = csv.writer(file)
for data in database:
csvfile.writerow(data)
file.close()
database = start()
def reserve(p, f):
if [p, f] not in database:
database.append([p, f])
else:
print("동일한 예약이 발견되었습니다.")
def cancel(p, f):
if [p, f] in database:
database.remove([p, f])
else:
print("동일한 예약이 발견되지 않았습니다.")
def flight(f):
print("-----------------")
print(" Flight : {}".format(f))
print("-----------------")
for data in database:
if f == data[1]:
print('', data[0])
def passenger(p):
print("-----------------")
print(" Passenger : {}".format(p))
print("-----------------")
for data in database:
if p == data[0]:
print('', data[1])
def all():
print("-----------------")
print(" Passenger Flight")
print("-----------------")
for data in database:
print(" {:<9} {:<6}".format(data[0], data[1]))
code = ''
while code != 'q':
cmd = input("command : ").split()
code = cmd[0] # 'r', 'f', 'p', 'q'
if code == 'r': # ['r', 'kim', '101']
p = cmd[1]
f = cmd[2]
reserve(p, f)
elif code == 'c': # ['c', 'kim', '101']
p = cmd[1]
f = cmd[2]
cancel(p, f)
elif code == 'f': # ['f', '101']
f = cmd[1]
flight(f)
elif code == 'p': # ['p', 'kim']
p = cmd[1]
passenger(p)
elif code == 'a': # ['a']
all()
end(database)
# 폭탄 돌리기
def finddrop(players, start, step):
drop = (start + step) % len(players)
return drop
# players = input("플레이어들을 빙둘선 순서로 입력하세요: ").split()
players = ["B", "K", "M", "A", "C", "D", "P"]
print("플레이어들의 목록: {}".format(players))
start = int(input("시작 위치를 0 이상의 숫자로 입력하세요: "))
step = int(input("간격을 몇 사람으로 할까요? "))
print("")
while len(players) > 1:
drop = finddrop(players, start, step)
start = drop - 1
print("{}가 게임에서 제외되었습니다.".format(players[drop]))
del players[drop]
print("\n최종 생존자 : {}".format(players[0]))
# MySQL Server 연동하기
import pymysql
def savefile(filename, result):
import csv
file = open(filename, "w", newline = "")
csvfile = csv.writer(file)
for item in result:
csvfile.writerow(item)
file.close()
connect = pymysql.connect(host = '192.168.101.200',
port = 3306,
user = 'user0',
password = '0abc',
db = 'shopping_db')
cursor = connect.cursor()
while True: # 반복문
sql = input("sql> ") # sql = 'quit'가 되기전까지 계속 질의하는 코드작성
# write
if sql == '':
pass # 2018.09.02_09:02
elif sql == 'write':
from datetime import datetime
now = datetime.now()
f_filename = "{:4}.{:02}.{:02}_{:02}{:02}".format(now.year, now.month, now.day, now.hour, now.minute)
filename = input("어떤 이름으로 저장할까요[{}]? ".format(f_filename)).strip(" ")
if filename == "":
f_filename = f_filename + ".csv"
savefile(f_filename, result)
else:
filename = filename + ".csv"
savefile(filename, result)
elif sql != 'quit':
try:
cursor.execute(sql)
result = cursor.fetchall()
for item in result:
print(item)
except:
print("잘못된 SQL문장입니다.")
else:
break
# 주민등록번호 (클래스) 생성 : ssn
# 1. 제약조건 : 문자열형이여야한다.
# 2. 자료길이 : 14
# 3. 인덱스 0 ~ 5 : 문자들('0 ~ 9')
# 인덱스 6 : 문자('-')
# 인덱스 7 ~ 13 : 문자들('0 ~ 9')
# 4. 인덱스 0 ~ 1 : '00 ~ 99'
# 인덱스 2 ~ 3 : '01 ~ 12'
# 인덱스 4 ~ 5 : '01 ~ 31'
# 인덱스 7 : '1 ~ 8'
class ssn:
def __init__(self, data):
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
if type(data) != type(str()):
print("문자열형 데이터가 아닙니다.")
return None
if len(data) != 14:
print("14자리 주민등록번호가 아닙니다.")
return None
for i in range(0, 14):
if i != 6:
if data[i] not in numbers:
print("숫자가 아닌 문자를 포함하고 있습니다.")
return None
else:
if data[6] != '-':
print("7번째가 문자가 '-'가 아닙니다.")
return None
if int(data[2:4]) not in range(1, 13):
print("1월 ~ 12월 사이가 아닙니다.")
return None
if int(data[4:6]) not in range(1, 32):
print("1일 ~ 31일 사이가 아닙니다.")
return None
if int(data[7]) not in range(1, 9):
print("주민등록번호 8번째 자리는 1 ~ 8 만 가능합니다.")
return None
self.data = data
def gender(self):
if int(self.data[7]) in [1, 3, 5, 7]:
return 'Male'
else:
return 'Female'
def birthday(self): # 801205-1155666
from datetime import date # 081205-4422777
if int(self.data[7]) in [1, 2, 5, 6]:
year = int("19" + self.data[0:2]) # 1980
# year = 1900 + int(self.data[0:2]) # 1980
else:
year = int("20" + self.data[0:2]) # 2008
month = int(self.data[2:4])
day = int(self.data[4:6])
return date(year, month, day)
def age(self):
from datetime import date
birthday = int(self.birthday().strftime("%Y%m%d"))
today = int(date.today().strftime("%Y%m%d"))
age = (today - birthday) // 10000
return age
'[개발노트] > # Python' 카테고리의 다른 글
ubuntu & Wordporess (2015.ver) (0) | 2018.10.18 |
---|---|
(크롤링) 코드 예문 (0) | 2018.09.11 |
(기초1) 구문 예시 (0) | 2018.09.11 |
(기초1) 기호, 함수 (0) | 2018.09.10 |
(설치&참고유틸) (0) | 2018.09.09 |
(기초1) 구문 예시
# 생년월일로부터 만 나이 계산하기
print("이름, 생년, 생일(네 자리 수)을 입력하세요:")
name = input("이름: ")
b_year = int(input("생년: "))
b_date = int(input("생일: "))
b_month = b_date // 100
b_day = b_date % 100
c_year = 2018
c_month = 8
c_day = 11
today = c_year * 10000 + c_month * 100 + c_day
birthday = b_year * 10000 + b_month * 100 + b_day
age = (today - birthday) // 10000
print("{} 님의 만나이는 {}세입니다.".format(name, age))
# 주민등록번호로부터 생년월일을 출력
def getbirthday(ssn): # 800512-115566
if ssn[7] in ["1", "2", "5", "6"]:
# year = 1900 + int(ssn[0:2])
year = int("19" + ssn[0:2])
elif ssn[7] in ["3", "4", "7", "8"]:
# year = 2000 + int(ssn[0:2])
year = int("20" + ssn[0:2])
month = int(ssn[2:4])
day = int(ssn[4:6])
return [year, month, day]
ssn = input("주민등록번호 : ")
birthday = getbirthday(ssn)
year = birthday[0]
month = birthday[1]
day = birthday[2]
print("생년월일 : {}년 {}월 {}일".format(year, month, day))
print("생년월일 : {}-{:02}-{:02}".format(year, month, day))
# 네 자리 수 암호 검증 프로그램
def verify(password):
p1 = int(password[0])
p2 = int(password[1])
p3 = int(password[2])
p4 = int(password[3])
# duplicate : 중복되는 숫자가 있는지를 검사
# increment : 4자리 수가 모두 1씩 증가하는지를 검사
# decrement : 4자리 수가 모두 1씩 감소하는지를 검사
duplicate = p1 == p2 or p1 == p3 or p1 == p4 or p2 == p3 or p2 == p4 or p3 == p4
increment = p1 + 1 == p2 and p2 + 1 == p3 and p3 + 1 == p4
decrement = p1 - 1 == p2 and p2 - 1 == p3 and p3 - 1 == p4
if duplicate or increment or decrement:
return False
else:
return True
def print_pass(result):
if result:
print("사용할 수 있는 암호입니다.")
else:
print("사용할 수 없는 암호입니다.")
for i in range(0, 100):
password = input("사용하고자 하는 암호를 입력하세요: ")
result = verify(password)
print_pass(result)
# 사용가능한 암호가 입력될 때까지, 반복적으로 암호 입력받기
# True : -1, 1, "0", "a", [0], [1, 2]
# False : 0, "", [], None
def verify(password):
p1 = int(password[0])
p2 = int(password[1])
p3 = int(password[2])
p4 = int(password[3])
# duplicate : 중복되는 숫자가 있는지를 검사
# increment : 4자리 수가 모두 1씩 증가하는지를 검사
# decrement : 4자리 수가 모두 1씩 감소하는지를 검사
duplicate = p1 == p2 or p1 == p3 or p1 == p4 or p2 == p3 or p2 == p4 or p3 == p4
increment = p1 + 1 == p2 and p2 + 1 == p3 and p3 + 1 == p4
decrement = p1 - 1 == p2 and p2 - 1 == p3 and p3 - 1 == p4
if duplicate or increment or decrement:
return False
else:
return True
# 해결방법 1
"""
password = input("사용할 암호는? ")
while not verify(password):
print("사용할 수 없는 암호입니다.")
password = input("사용할 암호는? ")
print("사용할 수 있는 암호입니다.")
"""
# 해결방법 2
"""
result = False
while not result:
password = input("사용할 암호는? ")
result = verify(password)
if result:
print("사용할 수 있는 암호입니다.")
else:
print("사용할 수 없는 암호입니다.")
"""
# 해결방법 3
"""
while True:
password = input("사용할 암호는? ")
result = verify(password)
if result:
print("사용할 수 있는 암호입니다.")
break
else:
print("사용할 수 없는 암호입니다.")
"""
# Pass/Fail 판정 프로그램
mid = int(input("중간고사 점수: "))
fin = int(input("기말고사 점수: "))
average = mid * 0.4 + fin * 0.6
if average >= 60:
message = "Pass"
else:
message = "Fail"
print("교양음악의 평균은 {:.1f}점이고, 최종학점은 {}입니다.".format(average, message))
# 거스름돈 계산하기
price = int(input("물건 값? "))
money = int(input("받은 돈? "))
change = money - price
if change > 0:
print("다음과 같이 거슬러주세요:")
m1 = change // 10000 # 10000원권 갯수
m2 = (change - 10000 * m1) // 5000
m3 = (change - 10000 * m1 - 5000 * m2) // 1000
if m1 > 0:
print("10000 x {}장".format(m1))
if m2 > 0:
print(" 5000 x {}장".format(m2))
if m3 > 0:
print(" 1000 x {}장".format(m3))
# 입장료 계산하기
# 성인(age >= 18) : 입장료 8000
# 미성년(age < 18) : 입장료 4000
# 나이를 입력받아 다음과 같은 메시지를 출력한다.
# 요금은 8000원입니다., 요금은 4000원입니다.
def computefee(age):
if age >= 18:
fee = 8000
else: # age < 18
fee = 4000
return fee
age = int(input("나이가 몇입니까? "))
fee = computefee(age)
print("요금은 {}원입니다.".format(fee))
# 세 개의 점수 가운데 최고점 찾기
def findmax(s1, s2, s3):
max = s1
if max < s2:
max = s2
if max < s3:
max = s3
return max
print("세 번의 TOFEL 점수를 입력하세요.")
score1 = int(input("시험1: "))
score2 = int(input("시험2: "))
score3 = int(input("시험3: "))
maximum = findmax(score1, score2, score3)
print("최고점: {}".format(maximum))
# 평균 점수로부터 합격/불합격 여부를 판정 프로그램
def findaverage(scores):
name = scores[0]
avg = (int(scores[1]) + int(scores[2]) + int(scores[3])) / 3
return [name, avg] # [이름, 평균]
scores = input("학생명과 세 개의 점수: ").split()
result = findaverage(scores)
name = result[0]
avg = result[1]
if avg >= 60:
message = "합격"
else:
message = "불합격"
print("'{}'님의 평균점수는 {:.1f}점이고, {}입니다.".format(name, avg, message))
# 세금계산
# 1구간 - 0 ~ 1000 : 세율 0%
# 2구간 - 1000 ~ 2400 : 세율 10%
# 3구간 - 2400 ~ 4000 : 세율 12%
# 4구간 - 4000 ~ 6000 : 세율 15%
# 5구간 - 6000 ~ : 세율 20%
# 소득(3500) = 1구간(1000) * 0% + 2구간(1400) * 10% + 3구간(1100) * 12%
def findtax(income):
if income <= 1000:
tax = income * 0
elif income <= 2400:
tax = 1000 * 0 + (income - 1000) * 0.1
elif income <= 4000:
tax = 1000 * 0 + 1400 * 0.1 + (income - 2400) * 0.12
elif income <= 6000:
tax = 1000 * 0 + 1400 * 0.1 + 1600 * 0.12 + (income - 4000) * 0.15
else: # elif 6000 < income:
tax = 1000 * 0 + 1400 * 0.1 + 1600 * 0.12 + 2000 * 0.15 + (income - 6000) * 0.2
return tax
income = int(input("연소득을 입력하세요: "))
tax = findtax(income)
print("소득세 = {}".format(tax))
중첩 For문
# 학생들의 TOFEL 점수들을 입력받아 최고 높은 평균점수를 반환하는 함수
# 1. 학생들마다의 평균점수를 찾아야하고,
# 2. 평균 점수들 중에 가장 높은 점수를 반환한다.
# max = 0 , sum = 0 , avg, if max < avg
def str2int(slist):
nlist = []
for s in slist:
nlist.append(int(s))
return nlist
def findavg(students):
avgs = []
for student in students:
sum = 0
for score in student:
sum = sum + score
avg = round(sum / len(student), 1)
avgs.append(avg)
return avgs
kim = input("학생1 점수: ").split()
park = input("학생2 점수: ").split()
lee = input("학생3 점수: ").split()
kim = str2int(kim)
park = str2int(park)
lee = str2int(lee)
students = [kim, park, lee]
avgs = findavg(students)
print("학생별 평균 점수들 : {}".format(avgs))
# best = findbest(students)
# print("가장 높은 평균 점수는 {:.1f}점입니다.".format(best))
# 반장 선거
def str2int(slist):
nlist = []
for s in slist:
nlist.append(int(s))
return nlist
def countvotes(num, votes):
earns = [0] * num
for vote in votes:
# earns[vote - 1] += 1
earns[vote - 1] = earns[vote - 1] + 1
return earns
def printearns(earns):
for i in range(0, len(earns)):
print("기호 : {:2}, 득표 수 : {}".format(i + 1, earns[i]))
def printwinner(earns):
max = 0
for i in range(0, len(earns)):
if max < earns[i]:
max = earns[i]
maxidx = i
print("최다득표자 : 기호 {}".format(maxidx + 1))
num = int(input("총 후보자수 : ")) # 숫자 y
votes = input("투표 내용 : ").split() # (x x x x x x x) x:투표자의 기호 (각 x는 y의 범위를 넘지 못함)
votes = str2int(votes)
earns = countvotes(num, votes)
printearns(earns)
printwinner(earns)
# 목록의 원소 판단하기 (홀짝)
def str2int(slist):
nlist = []
for s in slist:
nlist.append(int(s))
return nlist
# findeven()함수는 인자로 목록이 들어오면,
# 목록안에 원소가 모두 짝수이면, True 반환하고,
# 1개이상의 홀수가 있으면, False 반환한다.
def findeven(numbers):
"""
for number in numbers:
if number % 2 == 1:
return False
return True
"""
i = 0
while numbers[i] % 2 == 0:
i = i + 1
if i == len(numbers):
break
if i == len(numbers):
return True
else:
return False
numbers = input("수의 목록 : ").split()
numbers = str2int(numbers)
result = findeven(numbers)
if result:
print("짝수들의 목록입니다.")
else:
print("홀수가 포함되어있습니다.")
# 원소의 목록에 대한 멤머쉽 검사
def member(list, item):
i = 0
mem = False
while i < len(list) and not mem :
if list[i] == item:
mem = True
i = i + 1
return mem
tom = ['car', 'dog', 'house', 'car', 'bike', 'yaght']
item = input("어떤 값이 목록에 있는지 궁금하세요? ")
result = member(tom, item)
if result:
print("예, 있습니다.")
else:
print("아니오, 없습니다.")
# 입력된 인자로부터 최고점과 최저점을 반환하는 함수
def findmaxmin(s1, s2, s3):
max = min = s1
if max < s2:
max = s2
if max < s3:
max = s3
if min > s2:
min = s2
if min > s3:
min = s3
return [max, min]
print("세번의 TOFEL점수를 입력하세요:")
s1 = int(input("점수1 : "))
s2 = int(input("점수2 : "))
s3 = int(input("점수3 : "))
result = findmaxmin(s1, s2, s3)
print("최고점 = {} , 최저점 = {}".format(result[0], result[1]))
'[개발노트] > # Python' 카테고리의 다른 글
ubuntu & Wordporess (2015.ver) (0) | 2018.10.18 |
---|---|
(크롤링) 코드 예문 (0) | 2018.09.11 |
(기초2) 구문 예시 (0) | 2018.09.11 |
(기초1) 기호, 함수 (0) | 2018.09.10 |
(설치&참고유틸) (0) | 2018.09.09 |
(기초1) 기호, 함수
대입
%d #십진수(정수형)
print("잠수시간은 %d\' %d\" 입니다."%(minute, second))
%f #실수형
print("잠수시간은 {}' {}\" 입니다.".format(minute, second))
%s #문자열형
print("제 이름은 '%s' 입니다."%(name))
소숫점 표현
%.1f # . 점아래 자릿수
print("평균 점수는 %.1f점입니다."%(average))
=> 평균 점수는 30.0점입니다.
{:.1f} # . 점아래 자릿수 format
print("평균 점수는 {:.1f}점입니다.".format(average))
=> 평균 점수는 30.0점입니다.
분기문
A든 a 든 같은 결과라면, or
if grade == "A" or grade == "a":
message = "우수"
같은 절에서 다른 결과라면, elif
elif grade == "B" or grade == "b":
message = "양호"
아니면 나머지 결과는 모두, else
else:
message = "보통미만"
# 19살부터 성년, 40살부터 장년, 60살부터 중년, 나머지 미성년자 메시지
if 19 <= age < 40:
print("성년 축하")
elif 40 <= age < 60:
print("장년 축하")
elif 60 <= age:
print("중년 축하")
else:
print("미성년입니다.")
str2int
def str2int(slist):
nlist = []
for s in slist:
nlist.append(int(s))
return nlist
scores = input("점수들 : ").split()
# 목록 = [문자, 문자 문자] => 함수(str2int) => 목록 = [정수, 정수, 정수]
# scores = ['80', '90', '80'] => scores = [80, 90, 80]
print(scores)
scores = str2int(scores)
print(scores)
findsum (자연수들의 합 계산)
def findsum(num):
sum = 0
for n in range(1, num + 1):
sum = sum + n
return sum
num = int(input("자연수를 입력하세요 : "))
sum = findsum(num)
print("1 ~ {} 사이 자연수의 합 = {}".format(num, sum))
while code not in 문
print("환영 합니다.")
code = 0
while code not in [1, 2, 3]:
print("1. 조회")
print("2. 입금")
print("3. 출금")
code = int(input("업무내용 : "))
print("선택하신 업무는 {}번입니다.".format(code))
print("처리되었습니다.")
1. 일반 텍스트 파일 -> 문자열(str)
Text File -> open('r') -> read() -> Str
readline() -> Str
readlines() -> list = [Str, Str]
2. CSV 파일 -> 목록형(2차원 list)
CSV File -> open('r') -> csv.reader() -> list = [list, list]
3. JSON 파일
3-1. 읽기(JSON파일 -> 사전형자료)
JSON File -> open('r').read() -> json.loads() -> dict = {key1:Value1, Key2:Value2, ..}
3-2. 쓰기(사전형자료 -> JSON파일)
dict1 -> json.dumps() -> open('w').write() -> JSON File
# open()함수를 이용하여 파일의 내용 보기
file = open("C:\\Users\\ajd74\\Python\\Work\\test\\새파일.txt", "a")
for i in range(11, 21):
file.write("{}번째 행입니다.\n".format(i))
file.close()
목록형(list) => [값1, 값2, 값3, ...]
index = 0 1 2
목록형자료는 값에 미리 (자동으로) 인덱스가 부여되며, 그 인덱스를 통해 접근한다.
사전형(dict) => {키1:값1, 키2:값2, 키3:값, ...}
사전형자료는 값에 (수동으로) 키(인덱스)를 부여하며, 그 키(인덱스)를 통해 접근한다.
[목록, 목록] => [list1, list2, list3, ...]
lists = [ 0 1 2 3
0 ['hong' , '홍길동', 23, '경기'],
1 ['hwang', '황진이', 28, '서울'],
2 ['john' , '존밴이', 30, '제주'] 제주 <- [2][3]
]
[사전, 사전] => [dict1, dict2, dict3, ...] 사전형 구조 dict1 => {'id':
lists = [ id name age address 'name':
0 {'hong' , '홍길동', 23, '경기'}, 'age':
1 {'hwang', '황진이', 28, '서울'}, 'address':}
2 {'john' , '존밴이', 30, '제주'}
] 제주 <- [2]['address']
{사전, 사전} => {key1:dict1, key2:dict2, key3:dict}
lists = { name age address':
'hong' {'홍길동', 23, '경기'},
'hwang' {'황진이', 28, '서울'},
'john {'존밴이', 30, '제주'} 제주 <- ['john']['address']
}
* 함수(변수) : 변수(인자)를 에러(무결점)없는 데이터를 기대하고 작성하지만, 그렇지 않을 때에는 에러가 발생한다.
def birthday(주민등록번호):
def age(주민등록번호):
def gender(주민등록번호):
* 변수.메서드() : 변수(인자)를 에러(무결점)없는 데이터로 만들고 메서드를 호출하기 때문에 에러 발생이 없어진다.
주민등록번호.birthday()
주민등록번호.age()
주민등록번호.gender()
* class 클래스명:
변수명 = xxx
def __init__(self, 변수, ...): # __init__ : 초기화 함수
코드 # 클래스 호출시 자동으로 동작하는 함수
def 함수명(self, 변수, ...):
코드
class abc():
def __init__(self, num):
self.data = num
a1 = abc(5) -> instance a1:
def __init__(self, num):
self.data = num
a2 = abc(10) -> instance a2:
def __init__(self, num):
self.data = num
'[개발노트] > # Python' 카테고리의 다른 글
ubuntu & Wordporess (2015.ver) (0) | 2018.10.18 |
---|---|
(크롤링) 코드 예문 (0) | 2018.09.11 |
(기초2) 구문 예시 (0) | 2018.09.11 |
(기초1) 구문 예시 (0) | 2018.09.11 |
(설치&참고유틸) (0) | 2018.09.09 |
(설치&참고유틸)
설치
3.7 ver
https://www.python.org/downloads/
다음 -> 설치 경로를 쉽게 찾아갈 수 있는 짧은 경로로 변경 후 설치 - 완료
실행 - sysdm.cpl
고급-환경 변수-시스템 변수-Path 편집(새로 만들기)
재부팅-cmd에서 python 실행 확인
1. Python - http://www.python.org
2. Editor(Notepad++) - http://notepad-plus-plus.org
3. Chrome - http://www.google.co.kr
'[개발노트] > # Python' 카테고리의 다른 글
ubuntu & Wordporess (2015.ver) (0) | 2018.10.18 |
---|---|
(크롤링) 코드 예문 (0) | 2018.09.11 |
(기초2) 구문 예시 (0) | 2018.09.11 |
(기초1) 구문 예시 (0) | 2018.09.11 |
(기초1) 기호, 함수 (0) | 2018.09.10 |