티스토리 뷰
import random
import sys
# 함수 정의: 10진수를 2진수로 변환하는 함수
def decimal_to_binary(decimal_number):
binary_number = bin(decimal_number)[2:] # '0b'를 제거한 2진수 변환
return binary_number
def explain_decimal_composition(decimal_number):
explanation = ""
digits = str(decimal_number) #196
for i, digit in enumerate(digits):
if i == len(digits) - 1: # 3-1 == 2
explanation += f"{int(digit)}*1"
else:
explanation += f"{int(digit)}*10^{len(digits) - i - 1}"
if i < len(digits) - 1:
explanation += " + "
return explanation
def explain_binary_composition(decimal_number):
binary_number = bin(decimal_number)[2:] # '0b' 제거
explanation = ""
length = len(binary_number)
for i, bit in enumerate(binary_number):
if i == length - 1:
explanation += f"{bit}*1"
else:
explanation += f"{bit}*2^{length - i - 1}"
if i < length - 1:
explanation += " + "
return explanation
user="키즈초이"
print(f"안녕~~ {user}~~~ 오늘은 두번째 만남이군!")
print("너의 요청으로 컴퓨터 퀴즈를 내주는 김에 지난 번 문제를 변형해서 내주지.")
print("너도 잘 알겠지만... 나의 퀴즈는 절대 쉽지 않을 거라고..")
none = input("어디 한번 도전해보겠어? ")
print("\n좋아 지난번 퀴즈에 이어지는 문제야")
random_decimal = random.randint(1, 100)
print(f"숫자 {random_decimal} 은 말이야 2의 숫자로 바꿀 수가 있어.")
bin_answer = bin(random_decimal)[2:]
composition_explanation = explain_binary_composition(random_decimal)
print(composition_explanation)
print(f"그래서 (10의 숫자) {random_decimal} = (2의 숫자) {bin_answer} 로 표시할 수 있지")
print("ok. 여기까지 기억나? ")
none = input()
print("\n좋아 이번엔 진짜 문제가 나가신다.\n")
random_decimal = random.randint(1, 64)
print(f"이번엔 1부터 63까지 중에서 랜덤 숫자 {random_decimal} 를 네가 직접 2의자리 숫자로 바꾸는거야.")
print(f"예를 들어서 10의 자리 숫자 {random_decimal} 을 2의 자리 숫자로 바꾸면 ")
print(bin(random_decimal)[2:], " 로 바꿀 수 있지. 훗.")
none = input("Can you do it? ")
print("\n자. 이제 진짜 문제야. 너에게 3번의 기회를 줄게.")
random_decimal = random.randint(1, 64)
bin_answer = bin(random_decimal)[2:]
for i in range(1, 4):
print(f"\n10의 자리 숫자 {random_decimal} 를 2의 자리숫자로 바꿔봐라!!")
answer = input("정답 : ")
if str(answer) == str(bin_answer):
print("\n저저저.. 정답이라니... 놀랍다...")
print("너의 승리다...")
none = input()
sys.exit(1)
else:
print("\n후후후.. 당연히 어렵지..")
print(f"{i}번 실패하고 {3 - i}번 기회가 남았다.")
if i == 3:
print(f"\n후후 결국 내가 이겼군. 정답은 {bin_answer} 이었다구!")
composition_explanation = explain_binary_composition(random_decimal)
print(f"{composition_explanation} 을 계산해 보라구")
print("나의 승리다 하하하하하")
none = input()
sys.exit(1)
안녕~~ 키즈초이~~~ 오늘은 두번째 만남이군!
너의 요청으로 컴퓨터 퀴즈를 내주는 김에 지난 번 문제를 변형해서 내주지.
너도 잘 알겠지만... 나의 퀴즈는 절대 쉽지 않을 거라고..
어디 한번 도전해보겠어? ㅇㅇ
좋아 지난번 퀴즈에 이어지는 문제야
숫자 65 은 말이야 2의 숫자로 바꿀 수가 있어.
1*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 1*1
그래서 (10의 숫자) 65 = (2의 숫자) 1000001 로 표시할 수 있지
ok. 여기까지 기억나?
응 근데 좀 어려운듯...
좋아 이번엔 진짜 문제가 나가신다.
이번엔 1부터 63까지 중에서 랜덤 숫자 13 를 네가 직접 2의자리 숫자로 바꾸는거야.
예를 들어서 10의 자리 숫자 13 을 2의 자리 숫자로 바꾸면
1101 로 바꿀 수 있지. 훗.
Can you do it? yes
자. 이제 진짜 문제야. 너에게 3번의 기회를 줄게.
10의 자리 숫자 46 를 2의 자리숫자로 바꿔봐라!!
정답 : 10110
후후후.. 당연히 어렵지..
1번 실패하고 2번 기회가 남았다.
10의 자리 숫자 46 를 2의 자리숫자로 바꿔봐라!!
정답 : 101101
후후후.. 당연히 어렵지..
2번 실패하고 1번 기회가 남았다.
10의 자리 숫자 46 를 2의 자리숫자로 바꿔봐라!!
정답 : 101110
저저저.. 정답이라니... 놀랍다...
너의 승리다...
728x90
반응형
'키즈 노트' 카테고리의 다른 글
키즈노트 #6 사자성어 퀴즈 + 네이버 사전 힌트 (0) | 2023.11.28 |
---|---|
키즈노트 #5 사자성어 퀴즈 (0) | 2023.11.27 |
키즈노트 #3 날짜 사이 계산하기 (2) | 2023.11.26 |
키즈노트 #2 2진법 to 10진법 계산 (1) | 2023.11.22 |
키즈 노트 #1 제곱 계산 3번의 기회 (1) | 2023.11.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- natas7
- BASE64
- SSL
- tr
- grep
- Natas
- 웹보안공부
- 리눅스
- Strings
- 압축파일
- 리터럴
- gz
- Bandit
- 웹보안
- Linux
- X32
- HTTPS
- bz2
- Encode
- nc
- over the wire
- tar
- 풀이
- java
- find
- 32bit
- OpenSSL
- ssh
- OverTheWire
- solution
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함