일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ROTTEN TOMATOES
- 변수 선언
- 데이터 타입의 우선순위
- vector 비교
- scraping
- c()
- Data Structure
- REP
- 네이버 영화 댓글
- seq
- stringr
- Crawling
- working directory
- data frame
- 함수
- TXT
- 데이터 입출력
- CSV
- R 기초
- 스크래핑
- 데이터 타입
- :
- R 개요
- vector 연산
- 연습문제
- Names
- 문자열처리
- length
- factor
- 정규표현식
- Today
- Total
study blog
논리연산자(and, or, not), 비교연산자, 제어문(if, for, while) 본문
1. 논리연산자 : and, or, not
result = True and False # False
result = True or False # True
result = not True # False
result = True|False # True
2. 비교연산자 : & (bitwise연산)
- python에서 숫자 0은 False로 간주, 0이 아닌 모든 숫자 True로 간주
- python에서 False는 숫자 0으로 변환 가능. True는 1로 변환 가능
10진수 5 → 2진수 0101
10진수 1 → 2진수 0001
&는 bit 연산! (논리연산 X)
True & False → 1 & 0 → 0001 & 0000 → 0000 → 0 (False)
print(bool(0)) # False
print(int(False)) # 0
print(int(True)) # 1
# Python은 다음의 경우를 False로 간주
① 숫자 0
② 빈 문자열("")
③ 빈 리스트 ([])
④ 빈 튜플( () )
⑤ 빈 dict
⑥ None
print(bool("")) # False
print(bool("소리없는 아우성!")) # True
print(bool([])) # False
print(bool([0])) # True
print(bool(())) # False
print(bool({})) # False
print(bool(None)) # False
3. 제어문 : if, for, while
3-1. if문
area = ["seoul","pusan","jeju"]
if "suwon" in area :
pass # 하는일이 아무것도 없을 때
elif "seoul" in area:
print("서울이 있어요!")
else:
print("기타등등!")
3-2. for 문
for k in range(10): #range가 0부터 9까지
print("k값은 : {}".format(k))
(+) 주의!!
a = [‘a’,’b’,’c’]
for x in a : x에 'a','b','c' 들어감
for x in range( len(a) ) : x에 (a의 길이-1) 들어감
3-3. while문
test=1
while test<10:
print("test값은 : {}".format(test))
test += 1 # test = test+1 과 동일 표현
- a.replace() : 값 대체
a = “hello world”
b = a.replace(" ","") # 공백 제거
- set(a) : 중복 값 없애줌
a = [“a”,”a”,”b”,”b”,”c”]
set(a) : [“a”,”b”,”c”] # 그러나 결과값 list 형태로 안나와서 list 한 번 해줘야 함
[연습문제 1] 1000보다 작은 자연수 중 3 또는 5의 배수들을 구해 모두 합하면?
result = 0
for k in range(1,1000):
if k % 3 == 0: # elif 대신 or써도 가능
result +=k
elif k % 5 ==0:
result +=k
else: # else 안써도 상관없음
pass
print("1000보다 작은 자연수 중 3 또는 5의 배수들을 구해 모두 합한 값은 {}입니다.".format(result) )
답: 233168
[연습문제 2] 피보나치 수열의 각 항은 바로 앞의 항 2개를 더한 값
(1과 2로 시작하는 피보나치 수열은 1,2,3,5,8,13,21,34,...)
짝수이면서 4백만 이하인 모든 항을 더하면 얼마일까요?
# 방법1 : append 사용 X + 피보나치수열 따로 구하지 X
var1=1
var2=2
var3=0
mySum=0
while var1+var2 <= 4000000 :
var3 = var1+var2
if var3%2==0:
mySum +=var3
var1 = var2
var2 = var3
print(mySum+2)
답: 4613732
# 방법2 : append 사용 + 피보나치수열 따로 구하지 X
myList = [1,2]
x =0
n= 2
result= 0
while x <= 4000000 :
if myList[n-1]%2==0:
result += myList[n-1]
x = myList[n-2]+myList[n-1]
myList.append(x)
n +=1
print(result)
# 방법3 : n-2 대신 -1, -2 인덱스 사용
myL=[1,2]
mySum = 0
while myL[-2] <= 4000000:
if myL[-2]%2==0:
mySum = mySum+myL[-2]
myL.append(myL[-2]+myL[-1])
print(mySum)
# 방법 4: while(피보나치 정의) + for (리스트합 구하기)
myL=[1,2];myS = 0
while myL[-1] <= 4000000:
myL.append(myL[-2]+myL[-1])
print(myL)
for i in myL: # myL 값의 값들이 i가 됨
if i%2==0:
myS += i
print(myS)
[연습문제 3] 알파벳 대소문자로 되어 있는 문자열에서 가장 많이 사용된 알파벳이 무엇인지 출력하는 프로그램을 작성하시오. (단, 대소문자는 구별 X, 공백은 제외)
동률이 존재하면 알파벳 순서가 제일 앞에 있는 알파벳을 출력하시오.
sample1 = "This is a sample Program mississippi river"
sample2 = "abcdabcdababccddcd"
방법 1 : set 함수 사용
def myFunc(sample) :
sample = sample.lower() # 소문자로
sample = sample.replace(" ","") # 공백제거
s = sorted(sample)
ss = sorted(set(s))
li = []
for i in ss :
li.append(s.count(i))
print ("알파벳:{} 횟수:{}".format(ss[li.index(max(li))], max(li)))
myFunc("This is a sample Program mississippi river")
myFunc("abcdabcdababccddcd")
[출력결과]
알파벳:i 횟수:7
알파벳:c 횟수:5
방법 2: ASCII 코드 이용해서
sample1 = "This is a sample Program mississippi river"
sample2 = "abcdabcdababccddcd"
sample1 = sample1.upper()
sample = sample1.replace(" ","")
result1=[]; result2=[];
for i in range(65,91):
result1.append(chr(i))
result2.append(sample.count(chr(i)))
res1 = result1[ result2.index(max(result2)) ]
res2 = max(result2)
print("알파벳:{} 횟수:{}".format(res1,res2) )
# 방법 3 : ASCII 코드 이용 + append 사용 안하고 값 비교
a = "This is a sample Program mississippi river"
a = a.upper()
a = a.replace(" ","")
val = "A"
for i in range(65,91):
if a.count(chr(i))>a.count(val):
val = chr(i)
print("알파벳:{} 횟수:{}".format(val,a.count(val)))
[출력결과]
알파벳:I 횟수:7