제로베이스 데이터 취업 스쿨 - 2일차(6/2~3)(input)

수야·2023년 6월 3일
0

데이터 입력

input 함수
인풋함수로 메모리에 넣고, 프린트함수로 출력가능
어케?

print('키보드를 통해서 데이터를 입력하세요.')
userInputdata=input()

print(userInputdata)
키보드를 통해서 데이터를 입력하세요.
안녕하세요.
안녕하세요.

인풋함수로 안내문구도 설정 가능... 어 졸리다
다시시작
저렇게 안하고

userInoutdata=input('키보드를 통해서 데이터를 입력하세요.')
print(userInputdata)

하면 바로 키보드를 통해서 데이터를 입력하세요 나온다.
음 그런데 위에꺼랑 뭐가 다르지?
코드 한줄 더 안쓴다는 차이인가?

그리고 인풋에 넣은 내용은 모두다 문자(열)자료형으로 인식함(str)
뭘넣던간에..! 논리형 넣어도!

userInputdata=input()

print(userInputdata)
print(type(userInputdata))
이렇게 했을때 10을 넣어도 str가 나온다는 말.
10
10
<class 'str'>

그런데 가끔은 숫자로 나와야하는 경우도 있고, 논리형이 나와야하는 경우도 있을때... 그때는 어떻게하나?
그때는 형 변환 함수!

userInputdata=bool(input('입력:'))

print(userInputdata)
print(type(userInputdata))

weather=input('오늘의 날씨를 입력하세요 :')
print(weather)
오늘의 날씨를 입력하세요 :cool
cool

userName=input('사용자의 이름을 입력하세요 :')
print(userName)
print(type(userName))
사용자의 이름을 입력하세요 :ys
ys
<class 'str'>

wide=int(input('가로 길이 :'))
hight=int(input('세로 길이 :'))
print(wide hight/2)
print(wide
hight)
가로 길이 :10
세로 길이 :5
25.0
50


문제풀이까지
이거 처음이 len 함수 하길래 음 안배운것인디 해가지고 넘겼다가
찬찬히 살펴보니
추가 기능 알려주는거였어서 다시 시작한다.. 하하

userMSG=input('메시지입력 :')
print('메시지 문자열 길이 :{}'.format(len(userMSG)))
메시지입력 :Hello python!
메시지 문자열 길이 :13

userMSG=input('메시지입력 :')
print('메시지 문자열 길이 :{}'.format(len(userMSG)))
메시지입력 :안녕하세요, 오늘은 날씨가 좋습니다.
메시지 문자열 길이 :20

문자열 카운팅은 0부터 시작.
= 파=0, 이=1,썬=2

atricle = '파이썬은 1991년 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬이 발표한' \
          ' 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적,' \
          ' 동적 타이핑 대화형 언어이다'

find=atricle.find('객체지향')
print('객체지향 문자열 위치 :{}'.format(find))

객체지향 문자열 위치 :75


처음에 할 줄 알긴하는데 소숫점 저 자리까지 어떻게 내놓은거지?
소숫점 컨트롤하는것은 %f로.
소숫점 몇자리 까지 컨트롤하고 싶다 하면 %.(소숫점 자리)f

wide=float(input('가로 길이 입력 :'))
hight=float(input('세로 길이 입력 :'))
tri=wide*hight/2
rac=wide*hight
print('-'*20,'Result','-'*20,'\n삼각형 넓이\t:%.6f'% tri,'\n사각형 넓이\t:%.6f' %rac,
      '\n삼각형 넓이\t:%.2f'%tri,'\n사각형 넓이\t:%.2f'%rac,'\n','-'*20)
      
가로 길이 입력 :7
세로 길이 입력 :5
-------------------- Result -------------------- 
삼각형 넓이	:17.500000 
사각형 넓이	:35.000000 
삼각형 넓이	:17.50 
사각형 넓이	:35.00 
 --------------------

또 다음!

데이터 출력

😎갑자기 또 파이썬 꿀팁

줄 나눌땐 \n을 쓰는데,
줄나눔안되고 함수로 풀어서 쓰고싶다?

print('3*5=', end='')
print(3*5)

저 end='' 함수가

\n
의 역할을 막아서
print함수의 자동 개행을 막는다. 자동개행이라 함은 함수 끝나고 줄나눔..?

내가 이해하기로는... 포맷 안쓰면 계속 아래로 프린트 함수를 쓰거나, 콤마를 해야하는데 포맷으로 묶고 {}괄호를 쓰면 쭉쭉 쓸 수 있어서 쓰는건가?
흠냐링..

키키 이거 나 예전에 공부해놔서 알고있지롱~

width=float(input('가로 길이 입력:'))
height=float(input('세로 길이 입력:'))
print(f'width : {width}\nheight : {height}\ntriangle : {width*height/2}\nSquare : {height*width}')

print(f'width : {width}, height : {height}\nTriangle : {width*height/2}, Squrare : {width*height}')

print(f'width : {width},\theight\t:\t{height}\nTriangle : {height*width/2},\tSquare\t:\t{width*height}')

엥 근데 마지막 코드는 보이는 거 처럼 줄이 안맞아 ㅠ

포맷함수


포맷 뒤에다 만들어 두고 순차적으로 쓰면 순차적으로 들어감!
그런데 사실 {0}{1}이렇게 암묵적인 순서를 정해둔거라서 뒤에 써놓은 포맷의 순서를 바꾸고 싶다? 하면은
엪어 {}여기를 {1},{0}으로 바꾸면 된다

userName=input('사용자 이름을 입력하세요 :')
userAge=input('사용자 나이를 입력하세요. :')
print('User Name : {}\nUser Age : {}'.format(userName, userAge))
print(f'User Name : {userName}\nUser Age : {userAge}')

print('나의 이름은 {} 이고, 나이는 {}살 입니다. {} 이름은 아버님꼐서 지어주셨습니다.'
      .format(userName, userAge, userName))
print('나의 이름은 {0} 이고, 나이는 {1}살 입니다. {0} 이름은 아버님꼐서 지어주셨습니다.'
      .format(userName, userAge))

userName=input('사용자 이름을 입력하세요 :')
userAge=int(input('사용자 나이를 입력하세요. :'))
userName='홍길동'
userAge=20

print('User name : %s' % userName)
print('User Age : %d' % userAge)
print('User name : %s, User age : %d' % (userName,userAge))

print('pi:%f'%3.14)
print('pi:%d'%3.14)

저기서 보면 알 수 있듯이, 인풋으로 값을 넣어버리면 다 str 로 인식을 해버리기 때문에, 숫자같은경우는 인풋으로 넣을거면 int나 float 처리를 해줘야하고, 그런게 아니라면 직접 지정을 해서 넣어야 한다.

smeiwidth=int(input('반지름 입력 :'))
pi=float(input('원주율 입력 : '))
print('radius : %.1f'%smeiwidth,'\npi : %f'%pi,
      '\nradius : %.1f, pi : %f'%(smeiwidth, pi),
      '\nradius : %6f, pi : %f'%(smeiwidth,pi),
      '\nradius : %.2f, pi : %.2f'%(smeiwidth,pi))

산술 연산자(덧셈, 뺄셈)

num1=9
num2=3
print(f'result : {num2+num1}')

fNum1=3.14
fNum2=0.12
print(f'result : {fNum1+fNum2}')
result=fNum1+fNum2
print('result : %.2f'%result)

저기서 000002 보고 실수라 찌끄레기 숫자라그러는데?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그래서 소숫점을 지정해서 깔끔하게 하라고 하네잉

num1=9
num2=0.12
print(f'result : {num1+num2}')
result : 9.12

str1='Good'
str2='Morning'
str3=' '
print(f'result : {str1+str3+str2}')
result : Good Morning

print(f'result : {num1+str2}')
TypeError: unsupported operand type(s) for +: 'int' and 'str'

kor=int(input('국어 점수 : '))
eng=int(input('영어 점수 : '))
math=int(input('수학 점수 : '))
print(f'국어 점수 {kor}')
print(f'영어 점수 {eng}')
print(f'수학 점수 {math}')
print(f'합계 {kor+eng+math}')

num1=10
num2=20
print(f'num1 : {num1}')
print(f'num2 : {num2}')
print(f'result : {num1-num2}')

fNum1=3.14
fNum2=0.14
print(f'fNum1 : {fNum1}')
print(f'fNum2 : {fNum2}')
print(f'result : {fNum1-fNum2}')
print('type of result :',type(fNum1-fNum2))

num1=10
fNum1=3.14
print(f'num1 : {num1}')
print(f'fNum1 : {fNum1}')
print(f'result : {num1+fNum1}')
print('type of result :',type(num1+fNum1))
num1 : 10
fNum1 : 3.14
result : 13.14
type of result : <class 'float'>

str1='good'
str2=' '
str3='afternoon'
result=str3-str2-str1
print('result : {}'.format(result))
TypeError: unsupported operand type(s) for -: 'str' and 'str'

parttimeMoney=int(input('알바비 입력 :'))
cardMoney=int(input('카드값 입력 :'))
print(f'partTimeMoney : {parttimeMoney}원'
      f'\ncardMoney : {cardMoney}원'
      f'\n 남는돈 : {parttimeMoney-cardMoney}원')

연습 문제들

radi=float(input('반지름(cm) 입력 : '))
pi=3.14
circleArea=radi*radi*pi
circleRound=2*pi*radi
print('원의 넓이\t: %.0fcm'%circleArea,'\n원 둘레길이\t: %.0fcm'%circleRound,
      '\n원의 넓이\t: %.1fcm'%circleArea,'\n원 둘레길이\t: %.1fcm'%circleRound,
      '\n원의 넓이\t: %.3fcm'%circleArea,'\n원 둘레길이\t: %.3fcm'%circleRound)


반지름(cm) 입력 : 3
원의 넓이	: 28cm 
원 둘레길이	: 19cm 
원의 넓이	: 28.3cm 
원 둘레길이	: 18.8cm 
원의 넓이	: 28.260cm 
원 둘레길이	: 18.840cm

userName=input('이름 입력 :')
userMail=input('메일 입력 :')
userID=input('아이디 입력 :')
userPW=input('비밀번호 입력 :')
userForntCode=input('주민번호 앞자리 입력 :')
userLastCode=input('주민번호 뒷자리 입력 :')
userAdress=input('주소 입력 :')
PWstar='*'*len(userPW)
userCode=userForntCode+'-'+userLastCode[0]+('*'*6)
print('-'*20,
      f'\n이름 : {userName}'
      f'\n메일 : {userMail}'
      f'\n아이디 : {userID}'
      f'\n비밀번호 : {PWstar}'
      f'\n주민번호 : {userCode}'
      f'\n주소 : {userAdress}',
      '\n','-' * 20)

아우 시부레 저 주민번호조합하는거랑 뒤에 별 붙이는거 때문에 정말 오래걸렸다 ㅠㅠ
tip에 있는 str[0]이게 꼭 앞에 str이라는게 아니라 원하는 변수를 말하는거임!

kg=int(input('체중 입력(g):'))
cm=int(input('신장 입력(cm):'))
weight=kg*0.1
height=cm*0.01
bmi=weight/height*height
print(f'체중:{weight}kg'
      f'\n신장:{height}m'
      f'\nBMI : {bmi}')

num1=10
num2=20
print('num1 : {}, num2 : {}'.format(num1, num2))
print('num1 : {1}, num2 : {0}'.format(num1, num2))

mid=(input('중간 고사 점수 :'))
fin=(input('기말 고사 점수 :'))
if mid.isdigit() and fin.isdigit():
    mid=int(mid)
    fin=int(fin)

    total=mid+fin
    aver=total/2
    print(f'총점 : {total}, 평균 :{aver}')

else:
    print('잘못 입력 하셨습니다.')

그론데, mid랑 fin에 인풋할 때 형태를 float로 지정해서 넣어보리면 isdigit가 안됨.

엥 근데 str(문자)로 해도 된다?
그럼 int로 하면,,int는 또 안된다 이게 뭐여??????????

lang=input('언어선택(Choose your language):1. 한국어     2. English')
if lang.isdigit():
    lang=1
    print('1.샌드위치   2.햄버거   3.주스   4.커피   5.아이스크림')
else:
    print('1.sandwich   2.Ham   3.juice   4.coffe   5. ice cream')

import datetime
today=datetime.datetime.today()
age=input('나이 입력 :')
if age.isdigit():
    lastyear=today.year+100-int(age)
    last=100-int(age)
    print(f'{lastyear}년({last}년후)에 100살!!')
else:print('잘 못 입력했습니다.')
    

아오 저 100살 구하는거에서 if 문에서 겁나게 막혔네잉... 힝구 힘드러

profile
수야는 코린이에서 더 나아갈거야

4개의 댓글

comment-user-thumbnail
2023년 6월 4일

2023-06-04 복습 완료
아직 얼레벌레 하는 너낌... ㅠ

답글 달기
comment-user-thumbnail
2023년 6월 6일

2023-06-06복습 완료
얼레벌레는 아니지만... 나이구하는거에서 아직 뜨문뜨문한다

답글 달기
comment-user-thumbnail
2023년 6월 8일

2023-06-08
복습완료
주민번호 이어붙이는거랑
나이입력에서 datetime 써먹는걸 잘 못하네

답글 달기
comment-user-thumbnail
2023년 6월 10일

2023-06-10
나이 구하는거에서 age 처음에 넣을 때 int 설정을 하면 나중에 isdigit 할때 오류가 나므로 빼야함.
그리고 100-age 뺄때는 또 숫자로 인식을 못하니 이때는 또 int 를 해서 빼줘야함...참눼

답글 달기