[118~123] 함수

Grace Ryu ㅣ 2023. 9. 24. 10:49

#118. 사용자에게 숫자를 입력하라고 요청
그 값을 num이라는 변수에 저장하는 함수 정의
num을 사용하여 1부터 num이 저장된 숫자까지 세는 함수 정의 
 

def ask_value():
    num = int(input("숫자 입력: "))
    return num

def count(num):
    n = 1
    while n <= num:
        print(n)
        n = n + 1 


def main():
    num = ask_value()
    count(num)

main()

 
 
 
#119. 낮은 숫자와 높은 숫자를 입력하도록 요청
두 값 사이의 임의의 숫자 생성하여 comp_num 이라는 이름의 변수에 저장
i am thinking of a number 이라는 메세지 출력한 다음 사용자가 생각하고 있는 숫자를 입력하라고 요청하는 함수를 하나 더 정의 세번째 함수는 사용자가 입력한 숫자와 comp_num가 같은지 확인하도록 정의, 같다면 correct, 그렇지 않으면 사용자가 입력한 값이 너무 낮은지 높은지 알려주고 다시 입력하도록 하며 숫자 반복
 

import random

def select_num():
    num1 = int(input("높은 값 입력: "))
    num2 = int(input("낮은 값 입력: "))
    comp_num = random.randint(num2, num1)   #숫자 인자를 잘 넣어줘야한다.
    return comp_num


def first_guess():
    print("i am thinking of a number")
    guess = int(input("숫자 입력: "))
    return guess


def answer(comp_num, guess):
    try_again = True
    while try_again: 
        if comp_num == guess: 
            print("correct, you win")
            try_again = False
        elif comp_num > guess:
            guess = int(input("입력값이 낮다. 새로 입력: "))
        else:
            guess = int(input("입력값이 높다. 새로 입력: "))


def main():
    comp_num = select_num()
    guess = first_guess()
    answer(comp_num, guess)

main()

 
 
 
#120
사용자에게 다음의 메뉴를 표시한다.
1) Addition
2) Subtraction
Enter 1 or 2:

1을 입력하면 5와 20 사이 임의의 숫자 두 개를 생성하고 두 수의 합을 사용자에게 묻는 함수가 실행된다.
사용자가 입력한 답과 실제 정답을 반환한다.
사용자가 메뉴에서 2를 입력하면 25에서 50 사이의 숫자 하나와 1에서 25 사이의 숫자 하나를 생성하고, 
첫 번째 숫자에서 두 번째 숫자를 빼면 몇인지를 묻는 함수가 실행된다.
이렇게 하면 음수의 답이 나올 염려는 없어진다. 사용자가 입력한 답과 실제 정답을 반환한다.

사용자가 입력한 답과 실제 정답을 확인하는 또 다른 함수를 생성한다.
두 값이 같다면 'Correct'라고 표시하고, 그렇지 않다면 'Incorrect, the answer is'와 함께 실제 정답을 출력한다.
만일 메뉴에 표시된 번호를 선택하지 않는다면 적절한 메시지를 표시한다.
 

import random

def answer1():
    num1 = int(random.randint(5,20))
    num2 = int(random.randint(5,20))
    act_num = num1 + num2
    ask_num = int(input("두 값의 합?: "))
    print(f"사용자가 입력한 값:{ask_num}, 실제 정답{act_num}")
    answer = (ask_num, act_num)
    return(answer)    

def answer2():
    num3 = int(random.randint(25,50))
    num4 = int(random.randint(1,25))
    act_num = num3 - num4
    ask_num = int(input("첫번째 숫자 - 두번째 숫자"))
    print(f"사용자가 입력한 값:{ask_num}, 실제 정답{act_num}")
    answer = (ask_num, act_num)
    return(answer)


def answer3(ask_num, act_num):
    if act_num == ask_num:
        print("correct")
    else:
        print(f"Incorrect, the answer is {act_num}")



def main():
    print(" 1) Addition",'\n',"2) Subtraction")
    ans = int(input("Enter 1 or 2: "))
    if ans == 1: 
        ask_num, act_num = answer1()
        answer3(ask_num, act_num)
    elif ans == 2:
        ask_num, act_num = answer2()
        answer3(ask_num, act_num)
    else:
        print("잘못 입력했음")
    

main()

 
 
 
#121
사용자가 이름 목록을 쉽게 관리할 수 있는 프로그램을 생성한다.
사용자가 목록에 이름을 추가할 수 있는 메뉴
목록의 이름을 수정하는 메뉴
목록에서 이름을 삭제하는 메뉴
목록의 모든 이름을 표시하는 메뉴
+) 프로그램을 종료하는 메뉴
사용자가 메뉴 외에 다른 것을 선택하면 적절한 메시지를 표시한다.
사용자가 선택한 메뉴의 작업이 끝나면 다시 메뉴가 표시되도록 한다.
되도록 사용하기 쉽게 프로그램을 만들자.
 

names = []

def menu():
    print("\n프로그램")
    print("1. 이름 추가")
    print("2. 이름 수정")
    print("3. 이름 삭제")
    print("4. 모든 이름 표시")
    print("5. 종료")


def add_name():      #추가
    name = input("이름추가: ")
    names.append(name)
    print(f"{name} 추가")
    return names


def change_name():       #수정 
    num = 0
    for i in names:
        print(num, i)
        num += 1 
    name = input("이름 변경할 사람: ")
    change_name = input("수정하시오: ")
    names[name] = change_name
    return names 


def del_name():       #삭제
    num = 0
    for i in names:
        print(num, i)
        num += 1 
    name = input("삭제할 이름: ")
    del_name = names.pop(name)
    names[name] = del_name
    return names


def display_names():   #표시
    for i in names:
        print(i)
    print()


def main(): 
    while True:
        menu()
        choice = input("메뉴 번호를 입력하세요: ")

        if choice == "1":
            add_name()
        elif choice == "2":
            edit_name()
        elif choice == "3":
            delete_name()
        elif choice == "4":
            display_names()
        elif choice == "5":
            print("프로그램을 종료합니다.")
            break
        else:
            print("올바른 메뉴 번호를 입력하세요.")

main()

 
 
 
#122
다음 메뉴를 생성한다.
1) 파일 추가
2) 레코드 보기
3) 프로그램 종료

Enter the number of your selection:

1을 선택하면 Salaries.csv라는 이름의 파일에 이름과 급여를 저장한다.
2를 선택하면 Salaries.csv 파일의 모든 레코드를 표시한다.
3을 선택하면 프로그램을 종료한다.
만약 올바르지 않은 번호를 입력하면 에러 메시지를 출력한다.
3번을 선택할 때까지 계속해서 메뉴로 돌아간다.
 
 

import pandas as pd

def menu():
    print("메뉴 선택:")
    print("1) Add to file")
    print("2) View all records")
    print("3) Quit program")


def add_to_file():
    name = input("이름 입력: ")
    salary = input("급여 입력: ")
    
    try:
        df = pd.read_csv('Salaries.csv')
    except FileNotFoundError:
        df = pd.DataFrame(columns=['이름', '급여'])

    new_data = pd.DataFrame({'이름': [name], '급여': [salary]})   #파일 읽기
    df = pd.concat([df, new_data], ignore_index=True)
    df.to_csv('Salaries.csv', index=False)
    print("레코드 파일에 추가")


def display_records():
    try:
        df = pd.read_csv('Salaries.csv')
        if not df.empty:
            print("이름 / 급여 / 레코드:")
            print(df)
        else:
            print("레코드 없음. 레코드 추가")
    except FileNotFoundError:   #예외처리
        print("레코드 없음. 레코드 추가")



def main():
    while True:
        menu()
        choice = input("Enter the number of your selection: ")

        if choice == "1":
            add_to_file()
        elif choice == "2":
            display_records()
        elif choice == "3":
            print("프로그램 종료")
            break
        else:
            print("번호 입력")

main()