ss = '파이썬 공부는 즐겁습니다. 물론 모든 공부가 다 재미있지는 않죠.^^'
ss.count('공부')
print(ss.find('공부'), ss.rfind('공부'), ss.find('공부', 5), ss.find('없다'))
print(ss.index('공부'), ss.rindex('공부'), ss.index('공부',5))
print(ss.startswith('파이썬'), ss.startswith('파이썬', 10), ss.endswith('^^'))
문자열 공백 삭제
ss = ' 파 이 썬 '
print(ss.strip())
print(ss.rstrip())
print(ss.lstrip())
ss = '----파---이---썬----'
print(ss.strip('-'))
ss = '<<<파 << 이 >> 썬>>>'
print(ss.strip('<>'))
# 문자열의 앞뒤 공백이나 특정 문자를 삭제할땐
# strip(), rstrip(), lstrip() 함수 사용
# 단, 문자열 중간의 공백은 삭제되지 않음
## 함수 선언 부분 ##
def calc(v1, v2, op) :
result = 0 # 결과를 저장할 변수 초기화
if op == '+' : # 덧셈 연산일 때
result = v1 + v2
elif op == '-': # 뺄셈 연산일 때
result = v1 - v2
elif op == '*': # 곱셈 연산일 때
result = v1 * v2
elif op == '/': # 나눗셈 연산일 때
result = v1 / v2 # 이렇게만 입력해달라는 뜻
return result # 결과 반환
## 변수 선언 부분 ##
res = 0 # 결과를 저장할 변수 초기화
var1, var2, oper = 0, 0, "" # 입력 받을 변수 초기화
# oper는 문자열 큰따옴표로 알 수 있음
## 메인 코드 부분 ##
oper = input("계산을 입력하세요(+, -, *, /) : ") # 사용자로부터 연산자 입력 받음
var1 = int(input("첫 번째 수를 입력하세요 : ")) # 사용자로부터 첫 번째 숫자 입력 받음
var2 = int(input("두 번째 수를 입력하세요 : ")) # 사용자로부터 두 번째 숫자 입력 받음
res = calc(var1, var2, oper) # calc() 함수를 사용하여 계산 결과 저장
# 결과 출력
print("## 계산기 : %d %s %d = %d" % (var1, oper, var2, res)) # 계산 결과 출력
0으로 나누면 안됩니다 추가 버
## 함수 선언 부분 ##
def calc(v1, op, v2):
result = 0
if op == '+' :
result = v1 + v2
elif op == '-':
result = v1 - v2
elif op == '*':
result = v1 * v2
elif op == '/': # 연산 기호
result = v1 / v2 # 이렇게만 입력해달라는 뜻
elif op == '**':
result = v1 ** v2
return result
## 변수 선언 부분 ##
res = 0
var1, var2, oper = 0, 0, ""
# oper는 문자열 큰따옴표로 알 수 있음
## 메인 코드 부분 ##
var1 = int(input("첫 번째 수를 입력하세요 : "))
oper = input("계산을 입력하세요(+, -, *, /, **) : ")
var2 = int(input("두 번째 수를 입력하세요 : "))
if(oper == '/' and var2 == 0):
print("0으로는 나누면 안됩니다. ㅠㅠ")
else:
res = calc(var1, oper, var2 )
print("## 계산기 : %d %s %d = %d" % (var1, oper, var2, res))
# 함수와 함수 파라미터 갯수 확인할 것
지역 변수와 전역 변수
함수 반환값
def func1():
result = 100 # 결과값을 저장할 변수를 100으로 초기화
return result # 결과값 반환
def func2():
print("반환값이 없는 함수 실행") # 반환값이 없는 함수가 실행될 때 출력되는 메시지
## 변수 선언 부분 ##
hap = 0 # 결과값을 저장할 변수 초기화
## 메인 코드 부분 ##
hap = func1() # func1() 함수 호출하여 결과값을 변수에 저장
print("func1()에서 돌려준 값 ==> %d" % hap) # func1() 함수의 결과값을 출력
func2() # func2() 함수 호출하여 실행, 반환값 없음
- 함수는 문법상 반환값이 2개 이상일 수 없음에도 코드를 작성하다보면 종종 값을 2개 이상 반환해야 할 때가 있음
- 리스트에 반환할 값을 넣은 후 리스트를 반환하면 됨
- 리스트에 아무리 많은 데이터를 넣더라도 결국 리스트 1개를 반환하는 것이므로 문법상 문제가 없음
너무 힘들어서 챗지피티한테 응원의 한마디를 부탁했다...
고마우이
## 함수 선언 부분 ##
def para2_func(v1, v2):
result = 0 # 결과를 저장할 변수 초기화
result = v1 + v2 # 두 매개변수를 더하여 결과를 계산
return result # 계산 결과 반환
def para3_func(v1, v2, v3):
result = 0 # 결과를 저장할 변수 초기화
result = v1 + v2 + v3 # 세 매개변수를 모두 더하여 결과를 계산
return result # 계산 결과 반환
## 변수 선언 부분 ##
hap = 0 # 덧셈 결과를 저장할 변수 초기화
## 메인 코드 부분 ##
hap = para2_func(10, 20) # para2_func() 함수 호출하여 반환된 결과를 변수에 저장
print("매개변수가 2개인 함수를 호출한 결과 ==> %d" % hap) # 함수 호출 결과 출력
hap = para3_func(10, 20, 30) # para3_func() 함수 호출하여 반환된 결과를 변수에 저장
print("매개변수가 3개인 함수를 호출한 결과 ==> %d" % hap) # 함수 호출 결과 출력
근데 보면 알겠는데 ..
내가 쓰라고하면 좀 힘든거같다
연습을 많이해야되는거겠지
import random # 무작위 숫자 생성을 위해 random 모듈을 임포트합니다.
## 함수 선언 부분 ##
def getNumber():
return random.randrange(1, 46) # 1부터 45까지의 범위에서 무작위로 숫자를 선택하여 반환합니다.
## 변수 선언 부분 ##
lotto = [] # 로또 번호를 저장할 리스트를 생성합니다.
num = 0 # 임시로 선택된 숫자를 저장할 변수를 초기화합니다.
## 메인 코드 부분 ##
print("** 로또 추첨을 시작합니다. ** \n")
while True:
num = getNumber() # getNumber() 함수를 호출하여 무작위 숫자를 가져옵니다.
if lotto.count(num) == 0: # 이미 선택된 숫자가 아닌 경우에만 실행합니다.
lotto.append(num) # 선택된 숫자를 리스트에 추가합니다.
if len(lotto) >= 6: # 6개의 숫자가 모두 선택되면 반복문을 종료합니다.
break
print("추첨된 로또 번호 ==> ", end=" ")
lotto.sort() # 추첨된 로또 번호를 정렬합니다.
for i in range(0, 6):
print("%d" % lotto[i], end=" ") # 추첨된 로또 번호를 출력합니다.
while 함수
`while` 루프는 조건이 참(`True`)인 동안 반복하여 코드 블록을 실행하는 파이썬의 제어 구조입니다. `while` 루프는 조건을 만족하는 동안 계속해서 코드를 실행하며, 조건이 거짓이 되면 루프를 종료합니다.
일반적인 `while` 루프의 구문은 다음과 같습니다:
```python
while 조건:
# 조건이 참일 때 실행될 코드 블록
```
여기서 `조건`은 참 또는 거짓을 판단할 수 있는 표현식이며, 조건이 참인 동안에는 해당 코드 블록이 계속해서 실행됩니다.
예를 들어, 1부터 5까지의 숫자를 출력하는 코드를 `while` 루프를 사용하여 작성할 수 있습니다:
```python
num = 1
while num <= 5:
print(num)
num += 1
```
이 코드는 변수 `num`이 5 이하인 동안에는 `num`의 값을 출력하고, `num`에 1을 더합니다. 따라서 출력 결과는 다음과 같습니다:
```
1
2
3
4
5
```
`while` 루프는 반복 횟수가 정해져 있지 않은 상황에서 유용하게 사용됩니다. 다만, 주의해야 할 점은 조건이 항상 참으로 평가되지 않도록 조심해야 합니다. 그렇지 않으면 무한 루프에 빠질 수 있습니다.
윈도우 만들기!
from tkinter import *
# Tkinter 모듈에서 모든 것을 불러옵니다.
window = Tk() # 기본 윈도우를 생성합니다.
window.title("윈도창 연습") # 윈도우의 제목을 설정합니다.
window.geometry("400x100") # 윈도우의 크기를 설정합니다. "너비x높이"의 형식으로 크기를 지정할 수 있습니다.
window.resizable(width=False, height=False) # 윈도우의 크기 조정을 비활성화합니다.
window.mainloop() # 이벤트 루프를 시작하여 윈도우를 표시하고 사용자 입력을 처리합니다.
from tkinter import *
window = Tk()
window.title("윈도창 연습")
window.geometry("400x100")
window.resizable(width = False, height = False) # 창 사이즈 조절 가능 여부 정하는 곳
window.mainloop()
from tkinter import *
window = Tk() # 기본 윈도우를 생성합니다.
label1 = Label(window, text="COOKBOOK, 데이터분석을") # 첫 번째 레이블을 생성합니다.
label2 = Label(window, text="열심히", font=("궁서체", 30), fg="blue") # 두 번째 레이블을 생성합니다.
label3 = Label(window, text="공부 중입니다.", bg="magenta", width=20, height=5, anchor=SE) # 세 번째 레이블을 생성합니다.
label1.pack() # 첫 번째 레이블을 윈도우에 추가합니다.
label2.pack() # 두 번째 레이블을 윈도우에 추가합니다.
label3.pack() # 세 번째 레이블을 윈도우에 추가합니다.
# 우리가 창에 무언가를 입력할 땐 그냥 입력하는 것처럼 보이지만
# 사실은 레이블에 붙여서 화면에 붙인다고 생각하면 좋음
window.mainloop() # 이벤트 루프를 시작하여 윈도우를 표시하고 사용자 입력을 처리합니다.
외울 필요는 없고 참고할 것
from tkinter import *
window = Tk()
photo = PhotoImage(file="C:\\Users\\Public\\Documents\\pythontest\\code5\\GIF\\cat12.gif") # gif 파일만 지원함
# 상대 경로? 내 파일이 있는 위치가 기준점임
# 내 파일이 있는 곳에 gif라는 폴더가 있을 것이고 그 안에 사진이 있다.
# 절대 경로는 가장 상위의 디렉토리로부터 내려오는 것
# 개발을 하는 입장에서는 상대경로가 안전함
label1 = Label(window, image=photo)
label1.pack()
window.mainloop()
사진이 도출될 것임!
버튼 만들기!!
from tkinter import *
window = Tk()
button1 = Button(window, text = "파이썬 종료", fg = "red", command = quit)
button1.pack()
window.mainloop()
버튼 - 이미지를 사용해서 만드는 방법
from tkinter import *
from tkinter import messagebox
## 함수 선언 부분 ##
def myFunc():
messagebox.showinfo("강아지 버튼", "강아지가 귀엽죠?^^")
## 메인 코드 부분 ##
window = Tk()
photo = PhotoImage(file="gif/dog2.gif")
button1 = Button(window, image = photo, command = myFunc)
button1.pack()
window.mainloop()
messagebox에 대해
네, 맞습니다. `messagebox`는 Tkinter 모듈 안에 있는 함수입니다. 이 함수는 메시지 박스를 표시하기 위해 사용됩니다. 이 메시지 박스는 사용자에게 정보를 제공하거나 사용자로부터 정보를 입력받기 위해 사용됩니다. 종종 프로그램이 사용자에게 어떤 정보를 전달해야 할 때 사용됩니다. 이 메시지 박스는 다양한 유형의 창을 생성할 수 있습니다. 대표적으로는 정보를 알리는 `showinfo`, 경고를 주는 `showwarning`, 에러를 알리는 `showerror`, 사용자에게 질문을 하고 그에 따른 결과를 반환하는 `askquestion`, `askyesno`, `askokcancel` 등이 있습니다.
체크버튼
from tkinter import *
from tkinter import messagebox
window = Tk() # 기본 윈도우를 생성합니다.
## 함수 선언 부분 ##
def myFunc():
if chk.get() == 0: # 체크버튼의 상태를 확인합니다.
messagebox.showinfo("", "체크버튼이 꺼졌어요.") # 체크버튼이 꺼져 있을 때 메시지를 표시합니다.
else:
messagebox.showinfo("", "체크버튼이 켜졌어요.") # 체크버튼이 켜져 있을 때 메시지를 표시합니다.
## 메인 코드 부분 ##
chk = IntVar() # 정수형 변수를 선언합니다. 체크버튼의 상태를 저장하기 위한 변수입니다.
cb1 = Checkbutton(window, text="클릭하세요", variable=chk, command=myFunc) # 체크버튼을 생성하고 클릭 이벤트에 함수를 연결합니다.
cb1.pack() # 체크버튼을 윈도우에 추가합니다.
window.mainloop() # 이벤트 루프를 시작하여 윈도우를 표시하고 사용자 입력을 처리합니다.
라디오 버튼
from tkinter import *
window = Tk() # 기본 윈도우를 생성합니다.
## 함수 선언 부분 ##
def myFunc():
if var.get() == 1 :
label1.configure(text="파이썬") # 라디오 버튼에서 "파이썬"을 선택하면 라벨의 텍스트를 "파이썬"으로 변경합니다.
elif var.get() == 2:
label1.configure(text="C++") # 라디오 버튼에서 "C++"를 선택하면 라벨의 텍스트를 "C++"으로 변경합니다.
else:
label1.configure(text="Java") # 라디오 버튼에서 "Java"를 선택하면 라벨의 텍스트를 "Java"로 변경합니다.
## 메인 코드 부분 ##
var = IntVar() # 정수형 변수를 선언합니다. 라디오 버튼의 선택 값을 저장하기 위한 변수입니다.
rb1 = Radiobutton(window, text="파이썬", variable=var, value=1, command=myFunc) # 라디오 버튼을 생성합니다.
rb2 = Radiobutton(window, text="C++", variable=var, value=2, command=myFunc) # 라디오 버튼을 생성합니다.
rb3 = Radiobutton(window, text="Java", variable=var, value=3, command=myFunc) # 라디오 버튼을 생성합니다.
label1 = Label(window, text="선택한 언어 : ", fg="red") # 라벨을 생성합니다.
rb1.pack() # 라디오 버튼을 윈도우에 추가합니다.
rb2.pack() # 라디오 버튼을 윈도우에 추가합니다.
rb3.pack() # 라디오 버튼을 윈도우에 추가합니다.
label1.pack() # 라벨을 윈도우에 추가합니다.
window.mainloop() # 이벤트 루프를 시작하여 윈도우를 표시하고 사용자 입력을 처리합니다.
위젯 설정
메뉴 생성
from tkinter import *
window = Tk() # 기본 윈도우를 생성합니다.
mainMenu = Menu(window) # 메인 메뉴를 생성합니다.
window.config(menu=mainMenu) # 윈도우에 메인 메뉴를 설정합니다.
fileMenu = Menu(mainMenu) # 파일 메뉴를 생성합니다.
mainMenu.add_cascade(label="파일", menu=fileMenu) # 메인 메뉴에 파일 메뉴를 추가합니다.
fileMenu.add_command(label="열기") # 파일 메뉴에 "열기" 명령을 추가합니다.
fileMenu.add_separator() # 파일 메뉴에 구분선을 추가합니다.
fileMenu.add_command(label="종료") # 파일 메뉴에 "종료" 명령을 추가합니다.
window.mainloop() # 이벤트 루프를 시작하여 윈도우를 표시하고 사용자 입력을 처리합니다.
위 코드에서는 메뉴를 생성하고 윈도우에 추가하는 과정을 보여줍니다. Menu 클래스를 사용하여 메뉴를 생성하고, add_cascade() 메서드를 사용하여 메인 메뉴에 서브 메뉴를 추가합니다. 서브 메뉴에는 add_command() 메서드를 사용하여 명령을 추가하고, add_separator() 메서드를 사용하여 구분선을 추가할 수 있습니다.
실행하면 윈도우의 상단에 "파일" 메뉴가 나타나고, 해당 메뉴를 클릭하면 "열기"와 "종료" 항목이 나타납니다.
from tkinter import *
from tkinter import messagebox
## 함수 선언 부분 ##
def func_open():
messagebox.showinfo("메뉴선택", "열기 메뉴를 선택함")
# "열기" 메뉴를 선택했을 때 나타날 메시지 박스를 띄우는 함수를 정의합니다.
def func_exit():
window.quit() # 윈도우를 종료합니다.
window.destroy() # 윈도우를 파괴합니다.
# "종료" 메뉴를 선택했을 때 윈도우를 종료하는 함수를 정의합니다.
## 메인 코드 부분 ##
window = Tk() # 기본 윈도우를 생성합니다.
mainMenu = Menu(window) # 메인 메뉴를 생성합니다.
window.config(menu=mainMenu) # 윈도우에 메인 메뉴를 설정합니다.
fileMenu = Menu(mainMenu) # 파일 메뉴를 생성합니다.
mainMenu.add_cascade(label="파일", menu=fileMenu) # 메인 메뉴에 파일 메뉴를 추가합니다.
fileMenu.add_command(label="열기", command=func_open) # 파일 메뉴에 "열기" 명령을 추가합니다. 클릭 이벤트에 func_open 함수를 연결합니다.
fileMenu.add_separator() # 파일 메뉴에 구분선을 추가합니다.
fileMenu.add_command(label="종료", command=func_exit) # 파일 메뉴에 "종료" 명령을 추가합니다. 클릭 이벤트에 func_exit 함수를 연결합니다.
window.mainloop() # 이벤트 루프를 시작하여 윈도우를 표시하고 사용자 입력을 처리합니다.
'공부 기록' 카테고리의 다른 글
2024.04.11. 알고리즘 (0) | 2024.04.11 |
---|---|
2024.04.08. ITQ (0) | 2024.04.09 |
2024.04.02. ITQ (0) | 2024.04.02 |
2024.03.28. 파이썬 절망의시작 (0) | 2024.03.28 |
2024.03.18 C언어 (0) | 2024.03.18 |