for문과 range() 내장 함수
range()
- 연속되는 숫자 요소들을 만들 때 활용하면 좋다.
- 슬라이싱과 구조가 비슷한데, 함수의 형태로 쓰기 때문에 소괄호 안에 구분자는 , 이다.
- range(시작, 끝, 증감크기)
- 시작과 증감크기는 생략 가능하다
range() 함수로 list 생성하기
- range()로 반환받은 결과 자료형은 range임 이 값을 list() 내장 함수로 변환 가능함
- unpacking 또한 적용 가능하다. ex) one , two = range(2,4)
- range()가 돌려준 객체는 마치 리스트인 것처럼 동작하지만, 사실 리스트와 다르다. range 객체는 iterate 할 때 원하는 시퀀스 항목들을
- 순서대로 요소를 돌려주는 객체이지만, 메모리에 공간을 할당하여 미리 모든 요소들을 만들어 두는 것이 아니라
- 필요할 때 그때그때 다음 요소를 만들어 반환하기에 공간 효율적입니다.
- 메모리상의 효율이 좋다
for문 추가설명
- iterable 객체 = 반복 가능한 성질을 가진다.
- 객체 = 메모리에 할당되어 존재하고 있는 데이터
- for 문에 range() 대신 시퀀스 객체(list, str, tuple, range, dictionary)를 넣어 반복사용 가능
- reverse() 함수를 통해서 역순으로 변경 가능하다.
# 출력이 어려웠던 문제
N = int(input("1부터 입력한 자연수까지의 모든 홀수의 합을 구합니다. "))
sum =0
for i in range(1,N+1,2):
sum +=i
if i == N-1 or i == N:
print(i,end =" = ")
else:
print(i,end=" + ")
print(sum)
Dynamic typing = type에 대한 처리를 Python이 해주는 것
정적 타이핑 언어보다 파이썬이 처리할 일이 많기 때문에 같은 일에 대한 결과를 보는데 시간이 더 걸린다.
#TOBE = 향후 구현하겠다는 주석으로 사용하기도 함
while 문
조건식을 가지고 반복문을 사용할 때 유용함.
- 조건식을 판별함.
- 조건식이 True인 동안 내내 while 문의 바디를 실행함.
- 조건식이 Flase가 되면 while문을 빠져나감.
count= int(input("반복할 횟수를 입력하세요: "))
while count >0: # 조건식
print("Hello world",count) # 실행문
count -=1 # 증감식
del sum
break문
for, while문에서 break는 해당 반복문을 완전히 빠져나간다.
즉, 특정 조건에 부할할 때 해당 반복문을 빠져나가기 위해 사용한다.
continue문
for, while문에서 continue를 만나는 순간 body를 진행하지 않고 반복문의 조건검사 부분으로 이동한다.
특정 조건에 부합할 때 아래 부분을 수행하지 않도록 하기 위해 사용한다.
i=0
total =0
while True:
total += i
i+=1
if i > 100 :
break
print(total)
import randomran_num = random.randrange(1,101)
first = int(input("시작하는 정수 입력 : "))
end = int(input("끝나는 정수 입력 : "))
sum=0
for i in range(first,end+1):
sum += i
i+=1
print("{}부터 {}까지의 합은 {}입니다.".format(first,end,sum))
sum=0
i=first
while i<=end:
sum+=i
i+=1
print("{}부터 {}까지의 합은 {}입니다.".format(first,end,sum))
ㅋ
kor = [70,60,55,75,95,90,80,80,85,100]
total=0
total = sum(kor)
print(total/len(kor))
total = 0
i=0
while i<len(kor):
total+=kor[i]
i+=1
print(total/len(kor))
#1000미만의 3의배수와 5의 배수의 총합을 구하라
total=0
for i in range(1,1000):
if i %3 ==0 or i%5 == 0:
total +=i
print(total)
# 최대, 최소 값 제외한 나머지 점수의 평균 구하기1
scores = list(map(int,input("실기점수를 입력하세요.").split()))
maximum = 0
minimum = 100
total=0
for i in scores:
if i > maximum :
maximum = i
elif i < minimum:
minimum =i
total += i
print("이 학생의 평균 점수는",(total-maximum-minimum)/(len(scores)-2),"입니다.")
# 최대, 최소 값 제외한 나머지 점수의 평균 구하기2
scores = list(map(int,input("실기점수를 입력하세요.").split()))
print("입력" , scores)
maximum = 0
minimum = 100
for i in scores:
if i > maximum :
maximum = i
elif i < minimum:
minimum =i
scores.remove(maximum)
scores.remove(minimum)
print("이 학생의 평균 점수는",sum(scores)/len(scores),"입니다.")
# 학점 구분 문제
grade_counter = [0,0,0,0,0]
scores = [86,72,98,60,45]
for i in scores:
if i >=85 : grade_counter[0]+=1
elif i>=70: grade_counter[1]+=1
elif i >=55 : grade_counter[2]+=1
elif i>=40 :grade_counter[3]+=1
elif i >=0 : grade_counter[4]+=1
else : print("잘못된 입력임")
print(grade_counter)
### FizzBuzz문제
for i in range(1,101):
if i%3 ==0:print("Fizz",end="")
if i%5 ==0:print("Buzz",end="")
if i%3 !=0 and i%5 !=0 :print(i,end="")
print("",end="\\t")
# 다른 풀이방법
# 빈 문자열은 Flase취급되며, True or True 이면 앞에값만 출력함
# Flas or True 이면 뒤에값만 출력함
for i in range(1,101):
print("Fizz"*(i%3==0) + "Buzz"*(i%5==0) or i,end="\\t")
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz
# m,h 포함이름 풀이2
name_list = ["matthew","mark","luke","john","paul","peter"]
mh_count =0
for i in name_list:
if 'm' in i or "h" in i:
mh_count+=1
print("m 또는 h가 이름에 포함된 사람은",mh_count,"명 입니다.")
marks = [90,25,67,45,80]
for i in range(len(marks)):
if marks[i] <=60 :
continue
print("{}번 학생 축하합니다. 합격입니다.".format(i+1))
i =0
while i<5:
if marks[i] >60 :
print("{}번 학생 축하합니다. 합격입니다.".format(i+1))
i+=1
arr = [1,4,2,3,10]
left,right = 0,len(arr)-1
while right > left:
arr[left],arr[right] = arr[right],arr[left]
left+=1
right-=1
print("변환된 arr은",arr,"입니다")
#구구단 문제1
for i in range(1,10):
for j in range(2,10):
print("{}X{}={}".format(j,i,i*j),end="\\t")
print("")
#구구단 문제2
i,j=1,2
while i<10:
while j < 10:
print("{}X{}={}".format(j,i,i*j),end="\\t")
j+=1
j=2
i+=1
print("")
'파이썬 > 파이썬 이론' 카테고리의 다른 글
6. Python_Basic - 5 (0) | 2023.04.13 |
---|---|
5. Python_Basic - 4 (0) | 2023.04.13 |
4.Python_Basic - 3 (0) | 2023.04.13 |
2.Python_Basic - 1 (1) | 2023.04.13 |
1.Python_Start (0) | 2023.04.13 |