파이썬 응용하기프로젝트: 로또 시뮬레이션로또 시뮬레이션: 코드 하나로 합치기

Q

로또 프로그램

조회 1446

좋아요 1

2021년 9월 19일




A
16개의 답변이 있어요
커뮤니티 파트너 채택



2021년 9월 20일

댓글 6

2021년 9월 20일
그러니까 제 말은 로또 번호가 1이라면 money가 2를 더하고 또 1이 나오면 money + 2를 하고싶은 겁니다.
2021년 9월 21일
일단 money + 2 만 쓰신다고 해서 기존에 money 가 가리키고 있는 메모리 주소 값에 2를 더한 값을 money 변수가 참조하진 않습니다. money = money + 2 또는 money += 2 로 쓰셔야 하지 않을까용? 그리고 money = 0 위치도 지금처럼 if 문 안에 있으면 안됩니다. 그럼 if 문 내부가 실행될 때 마다 0으로 초기화 될테니까용
2021년 9월 23일
import random
for q in range(1):
a = random.randint(1, 30)
print("당신의 숫자는...{}입니다!".format(a))
money = 0
if a == 30:
print("축하합니다.복권 1등에 당첨되셨습니다!")
money += 10000
print(money)
elif a == 29:
print("축하합니다.복권 2등에 당첨되셨습니다!")
money += 8000
print(money)
elif a == 28:
print("축하합니다.복권 3등에 당첨되셨습니다!")
money += 6000
print(money)
elif a == 27:
print("축하합니다.복권 4등에 당첨되셨습니다!")
money += 4000
print(money)
elif a == 26:
print("축하합니다.복권 5등에 당첨되셨습니다!")
money += 2000
print(money)
else:
print("아쉽습니다.복권에 당첨되지 못하였습니다.")
print(money)
2021년 9월 23일
왜 이 코드는 money가 다시 0이 되죠?
2021년 9월 23일
위에서도 말씀드렸지만 반복문 안에 money = 0 이 있으면 반복될 때 마다 0 으로 초기화됩니당. 코드가 어떻게 진행되는지를 생각해보시면 좋겠어용
2021년 9월 25일
모르겠어요ㅠㅠ



2021년 9월 25일

댓글 3

2021년 9월 26일
저..........그래서 money는 어디에 써야 한는지 알려 주시면 안되나요.......?
2021년 9월 26일
움.. 위 코드를 이해하셨다면 어디에 써야 할지 아실텐데.. for 문 전에 쓰시면 됩니다. 이해가 안되시면 다시 말씀해주세용.
2021년 9월 28일
저 죄송한데 for문 전에 썼는데 money가 저장된 money + 당첨된money 가 안되는 되요?



2021년 9월 29일

댓글 14

2021년 9월 29일
네...
2021년 9월 29일
그러니까 제가 원하는 출력결과는
2021년 9월 29일
당신의 숫자는...28입니다!
축하합니다.복권 3등에 당첨되셨습니다!
6000
2021년 9월 29일
이렇게 한 다음에 그다음에 또 복권에 당첨되면 6000(money) + 복권의 액수 를 계속 money에 간직하고 있는 거에요.
2021년 9월 29일
그러니까 프로그램 한번 실행한 후에 어떤 결과가 나오고 프로그램 종료 후에 다시 실행했을 때도 그 결과가 남아있어야 되는건가요?
2021년 9월 29일
그렇다면 이건 sql 등과 같은 db 를 배우셔야 할일 같습니당. 아주 간단하게는 파일로 해당값을 쓰고, 다시 실행할 때 불러오고 하는 행위 등을 할 수는 있겠지만용
2021년 9월 30일
그럼 spl 혹은 db를 써서 완성하는 법을 제발 알려주세요ㅠㅠ
2021년 10월 1일
움.. 그건 그냥 글로 알려드리기엔 너무 복잡해서용 ㅠㅠ SQL 도 따로 배우셔야 하고 파이썬으로 DB 연동하는 법도 배우셔야 합니당. ㅠㅠ 한번 구현해보고 싶어서 하시는거라면 가볍게 파일 읽기 쓰기를 배우셨으니 그걸 활용해보시는게 어떨까용? 결과를 txt 파일로 저장하고 다시 프로그램을 실행할 때 해당 파일에서 이전 결과값을 가져와서 초기값으로 둔 뒤에 누적시키는 방법을 쓰면 될겁니당
2021년 10월 4일
while True:
while today <= 2:
random.randint(1, 2)
print("{}번째날".format(today))
guess = int(input("시민이 {}명 남았습니다.1과 2중 누가 시민일까요?: ".format(NUM_TRIES)))
if ANSWER != guess:
NUM_TRIES -= 1
print("아쉽습니다.좀비입니다.")
print("시민중 1명이 감염당하고 {}명 살아있습니다.".format(NUM_TRIES))
if ANSWER == guess:
NUM_TRIES += 1
print("시민입니다.")
print("시민중 1명이 더 늘어서 시민이 {}명 살아있습니다.".format(NUM_TRIES))
today += 1
if NUM_TRIES == 0:
break
2021년 10월 4일
이렇게 했는데 계속 시민이 1이라서 랜덤하게 시민이되면 좋겠는데 무슨 방법이 없나요?
2021년 10월 4일
random.randint(1, 2) 코드는 어디 쓰이는 건가요? 반환값이 변수에 할당되지 않으면 이 코드는 의미가 없을거에요
2021년 10월 6일
그러니까 코드로 좀 자세하게 설명 부탁드려요...... 죄송합니다ㅠㅠ
2021년 10월 6일
코딩 초보라서....... 다시 한번 죄송합니다.
2021년 10월 8일
저기....



2021년 10월 8일

댓글 12

2021년 10월 9일
import random


ANSWER = random.randint(1, 2)
NUM_TRIES = 2

today = 1
guess = -1
tries = 0

while True:
random.randint(1, 2)
print("{}번째날".format(today))
guess = int(input("시민이 {}명 남았습니다.1과 2중 누가 시민일까요?: ".format(NUM_TRIES)))
if ANSWER != guess:
NUM_TRIES -= 1
print("아쉽습니다.좀비입니다.")
print("시민중 1명이 감염당하고 {}명 살아있습니다.".format(NUM_TRIES))
if ANSWER == guess:
NUM_TRIES += 1
print("시민입니다.")
print("시민중 1명이 더 늘어서 시민이 {}명 살아있습니다.".format(NUM_TRIES))
today += 1
if NUM_TRIES == 0:
break
2021년 10월 9일
를 했는데 안데여.
2021년 10월 9일
저.....................................................................................
2021년 10월 10일
처음 올려주신 코드에는 나머지 코드가 생략되어 있었는데, ANSWER 가 시민을 의미한다면 while 문 바로 밑에 있는 의미없는 random.randint(1, 2) 반환값을 ANSWER 가 받아야 할겁니당. 왜 이렇게 하면 계속 ANSWER 가 바뀔 수 있는지를 생각해보시면 좋겠어요. 또한 지금 코드에서는 왜 안되는 지도요
2021년 10월 10일
마피아 게임을 잘 모르다보니 정확히 어떻게 구성되어야 하는지를 잘 모르겠네요ㅠ
2021년 10월 16일
앗! 바빠서 답변을 못했내요.
2021년 10월 16일
코린이라 코드로...........
2021년 10월 17일
이전에 짜셨던 코드를 바탕으로 Develop 하는건 좋다고 생각합니당! 바로 답은 못드릴 수도 있지만 언제든 관련 질문 남겨주세용~!
2021년 10월 17일
그러니까 이전에 짰던 코드의 어느 부분을...
2021년 10월 17일
그리고
2021년 10월 17일
import random


ANSWER = random.randint(1, 2)
NUM_TRIES = 2

today = 1
guess = -1
tries = 0

while True:
ANSWER += random.randint(1, 2)
print("{}번째날".format(today))
guess = int(input("시민이 {}명 남았습니다.1과 2중 누가 시민일까요?: ".format(NUM_TRIES)))
if ANSWER != guess:
NUM_TRIES -= 1
print("아쉽습니다.좀비입니다.")
print("시민중 1명이 감염당하고 {}명 살아있습니다.".format(NUM_TRIES))
if ANSWER == guess:
NUM_TRIES += 1
print("시민입니다.")
print("시민중 1명이 더 늘어서 시민이 {}명 살아있습니다.".format(NUM_TRIES))
today += 1
if NUM_TRIES == 0:
break
2021년 10월 17일
이렇게 했는데 계속 좀비에요.



2021년 10월 18일

댓글 4

2021년 10월 22일
아니에요, 렌덤하게 나오고 좋네요. 감사합니다.
2021년 10월 22일
다행이네용!
2021년 10월 23일
아참! 근데 로또 프로그램 질문에서 파일 읽기,쓰기 하라고 하셨잖아요 근데 어떠게 하는 거에요?
2021년 10월 23일
죄송합니다ㅠㅠ



2021년 10월 25일

댓글 2

2021년 10월 26일
import random

money = 0
w = money
with open('lotto money.txt', 'w') as f:
f.write(str(w))


for q in range(1):
a = random.randint(26, 30)
print("당신의 숫자는...{}입니다!".format(a))

if a == 30:
print("축하합니다.복권 1등에 당첨되셨습니다!")
money += 10000
print(money)
elif a == 29:
print("축하합니다.복권 2등에 당첨되셨습니다!")
money += 8000
print(money)
elif a == 28:
print("축하합니다.복권 3등에 당첨되셨습니다!")
money += 6000
print(money)
elif a == 27:
print("축하합니다.복권 4등에 당첨되셨습니다!")
money += 4000
print(money)
elif a == 26:
print("축하합니다.복권 5등에 당첨되셨습니다!")
money += 2000
print(money)
else:
print("아쉽습니다.복권에 당첨되지 못하였습니다.")
print(money)
2021년 10월 26일
이렇게 했는데 lotto money.txt에 0만 나와요.



2021년 10월 26일

댓글 6

2021년 10월 26일
저는 그전 money 까지 다합처서 lotto money.txt에 남기고싶은데..... 어떡하죠?ㅠㅠ
2021년 10월 27일
그러려면 'w' 대신에 'a' 옵션을 주시면 됩니당. 그리고 f.write(str(w) + "\n") 과 같이 주시면 줄바꿈을 해서 순서대로 저장이 될거에용
2021년 10월 27일
제말은 그렇게하고 lotto money.txt에 있는 모든 출력 결과를 합해서 lotto money.txt에 결과를 저장하고싶은 거에요.
2021년 10월 28일
음.. 꼭 같은 파일에 다 저장해야 하나요? 파일을 두개로 구분해서 하시는건 어떤가요? 출력 결과를 저장하는 파일 따로, 합해서 저장하는 파일 따로는 안될까용?
2021년 10월 28일
어떻게 그거를 해야되나요ㅠㅠ
2021년 11월 2일
저.......



2021년 11월 2일

댓글 6

2021년 11월 3일
import random
with open("all lotto money.txt", "w") as f:
f.write("")

money = 0
for q in range(1):
a = random.randint(1, 30)
print("당신의 숫자는...{}입니다!".format(a))
if a == 30:
print("축하합니다.복권 1등에 당첨되셨습니다!")
money += 10000
print("{}원".format(money))
elif a == 29:
print("축하합니다.복권 2등에 당첨되셨습니다!")
money += 8000
print("{}원".format(money))
elif a == 28:
print("축하합니다.복권 3등에 당첨되셨습니다!")
money += 6000
print("{}원".format(money))
elif a == 27:
print("축하합니다.복권 4등에 당첨되셨습니다!")
money += 4000
print("{}원".format(money))
elif a == 26:
print("축하합니다.복권 5등에 당첨되셨습니다!")
money += 2000
print("{}원".format(money))
else:
print("아쉽습니다.복권에 당첨되지 못하였습니다.")
print("{}원".format(money))

w = money
with open('lotto_money.txt', 'a') as f:
f.write(str(w) + "\n")

with open('lotto_money.txt', 'r') as f:
prize = 0
for line in f:
prize += int(line)

with open('all lotto money.txt', 'w', encoding="utf-8") as f:
f.write(str(prize) + "원")
2021년 11월 3일
이렇게 했는데 all lotto money.txt가 10000원이고 프로그램이 시작되어서 all lotto money.txt가 복권 당첨으로 늘어나기도 하면서 프로그램을 실행할때 마다1000원씩 all lotto money.txt에서 사라지게 하려면 무슨 방법이 없나요?
2021년 11월 3일
참고로 아예 닫은 다음에10000원으로 시작이 되고 파이참에서 초록색 실행키를 누르면 계속 all lotto money.txt가 늘어나는 겁니다.
2021년 11월 3일
움.. 점점 프로그램이 커지는군용. 코드로 바로 작성하시기는 어렵더라도 어떤 단계를 거쳐야 해당 결과가 나올지를 단계별로 생각해보시면 좋겠습니다.
2021년 11월 3일
먼저 지금 코드도 10000원이 유지가 되지 않나용? 그리고 실행할 때 마다 1000원씩 사라지게 하려면 간단히 lotto_money.txt 파일을 읽는 with 문에 가장 마지막에 prize -= 1000 을 써주시면 될겁니당.
2021년 11월 4일
그러면 프로그램 시작할때 all lotto money.txt를 10000원으로 되돌릴건지 물어보고 y를 누르면 되돌리고 n을 누르면 되돌리지 않게 하려면 어떻게 해야 되나요?



2021년 11월 4일

댓글 1

2021년 11월 4일
1000원식 안줄어들고 yes하면 10000원이아닌 0원으로 바뀌고 돈도 안올라가고 no나 yes 할때 이상한 창도뜨고..... 좀 이상 한데요....



2021년 11월 5일

댓글 17

2021년 11월 5일
yes하면 10000이 되긴 하는데 그다음에 당첨되고 10000원에서 연장 하고싶으니까 no했는데 갑자기 처음에 all lotto money.txt에 저장되는 프로그램 완성했을 때 좀 프로그램 실했는 데 그 값이 되버리네요.... 1000원 씩도 안줄고......
2021년 11월 6일
아 이제 대충 어떤걸 구현하시려고 하는지 알겠네용. 근데 만약 10000원으로 초기화가 되면, lotto_money 도 초기화가 되야 하는건가용?
2021년 11월 6일
네?
2021년 11월 7일
프로그램 시작할때 all lotto money.txt를 10000원으로 되돌릴건지 물어보고 y를 누르면 되돌리고 n을 누르면 되돌리지 않는다고 하셨는데, lotto money.txt 에는 실행한 모든 결과가 누적됩니다. 이렇게 되면 all lotto money.txt 금액을 초기화를 하더라도 다음 실행시에 그동안 lotto money.txt 에 누적된 상금이 all lotto money 에 반영될거에용. 그래도 상관없는지 궁금합니다.
2021년 11월 7일
죄송하지만, 안됍니다
2021년 11월 8일
위 프로그램은 안되는게 맞고, 수정을 해야 하는데 어떻게 구현되야 하는건지 여쭤보는거에용
2021년 11월 8일
제가 생각한대로 작성하는게 아니니 최대한 요구사항을 자세히 말씀해주셔야 오류 발생도 막을 수가 있습니당
2021년 11월 8일
전체 동작을 말하자면 당첨금이 당첨되었을 때, y를 누르면 all lotto money.txt가 10000원이되고 그다음에 뭐가 나오든(n을 하는 경우는 빼고) 10000원이 유지되어야 됩니다.참고로 거기서 돈은 늘어나든 말든 그 동작은 똑같습니다.n을 눌렀을 때는 all lotto money.txt가 유지되고 그다음에 뭐가 나오든(y을 하는 경우는 빼고) 돈이 유지되어 야됩니다.참고로 거기서 돈은 늘어나든 말든 그 동작은 똑같습니다.당첨이 안되었을 때도 똑같습니다.
2021년 11월 10일
감사합니다~! all_lotto_money 는 이해가 됐는데, lotto_money 는 초기화되는 경우가 없는거겠죵? 코드가 너무 지저분해서 함수로 살짝 바꾸고 올리겠습니당
2021년 11월 14일
전체 동작을 말하자면 당첨금이 당첨되었을 때, y를 누르면 all lotto money.txt가 10000원이되고 그다음에 뭐가 나오든(n을 하는 경우는 빼고) 10000원이 유지되어야 됩니다.참고로 거기서 돈은 늘어나든 말든 그 동작은 실행됩니다.n을 눌렀을 때는 all lotto money.txt가 유지되고 그다음에 뭐가 나오든(y을 하는 경우는 빼고) 돈이 유지되어 야됩니다.참고로 거기서 돈은 늘어나든 말든 그 동작은실행됩니다.당첨이 안되었을 때도 똑같습니다.
2021년 11월 14일
제가 댓글을 잘못 올렸네요ㅠㅠ이게 진짜 전체 동작입니다.
2021년 11월 16일
저......
2021년 11월 17일
으아 또 댓글 놓쳤네용 ㅠㅠ 위에 올려주신 것만 확인해보고 코드 올려드릴게용
2021년 11월 17일
유지된다는게 조금 이해가 안되는데, 뭐가 유지가 된다는건가용? 한번 실행할 때 마다 1000원씩 all_lotto_money 에서 빠져야 되는걸로 이해했거든용
2021년 11월 17일
전체 동작을 말하자면 당첨금이 당첨되었을 때, y를 누르면 all lotto money.txt가 10000원이 됩니다.거기서 돈은 늘어나거나 안늘어나는 그 동작은 실행됩니다.n을 눌렀을 때는 all lotto money.txt가 유지됩니다.거기서 돈은 늘어나거나 안늘어나는 그 동작은 실행됩니다.
당첨이 안되었을 때도 위에서 말씀 드린데로 동작이 실행됩니다.
2021년 11월 17일
댓글을 또 잘못 올렸네요ㅠㅠ 글쓰기에 약해서..... 죄송합니다.....
2021년 11월 17일
아닙니당!! 제가 잘 이해를 못해서 그런거에용 ㅠ



2021년 11월 17일

댓글 6

2021년 11월 18일
돈이 당첨되도 않늘고 yes해도 10000원으로 초기화가 되지 않아요.
2021년 11월 18일
움.. 전 잘되는데 어느 경우에 안되는지 다시 확인해주시면 좋겠습니당. all_lotto_money.txt 말씀하시는게 맞으시죵? all lotto money.txt 가 아니라 all_lotto_money.txt 로 생성됩니다. lotto money 가 아니라 lotto_money.txt 이고용
2021년 11월 19일
아직도 안되요....
2021년 11월 21일
해당 코드를 실행해주신게 맞나용? 전 아무리 봐도 잘되는데.......ㅠㅠ 새로운 디렉토리에서 test.py 와 같이 파일 하나 만드신 후에 최신 코드 복사 후 붙여넣기 하시고 실행해보시면 좋겠어용
2021년 11월 21일
그리고 실행하실 때는 항상 Ctrl+Shift+F10 으로 실행해주세용
2021년 11월 22일
복권4000원에 당첨되서 10000원에서 +4000하고 싶어서 소문자로no를 눌렀는데 10000원이에요.......



2021년 11월 22일

댓글 7

2021년 11월 22일
제가 생각하는 데로 잘 이해 하셨지만 코드가 실행되지 않아요 왜냐하면 10000원으로는 시작하는데 당첨되도 all_lotto_money.txt에 더해지지 않고
1000원씩 all_lotto_money.txt 에서 감하는 것도 실행되지 않고요.
2021년 11월 23일
저는 잘 더해지는데 안더해진다는게 잘 이해가 안되네요ㅠㅠ
2021년 11월 23일
뭔가 잘못 실행하고 계시거나, 잘못된 txt 파일을 보고 계신게 아닌가 생각됩니당
2021년 11월 23일
https://share.getcloudapp.com/NQu7Az0w 를 클릭해보시면 제가 실행한 화면을 보실 수 있습니당. 이렇게 동작되는게 맞지 않나용?
2021년 11월 27일
네, 맞아요 근데 왜 저만ㅠㅠ
2021년 11월 27일
움... Ctrl + Shift + F10 으로 실행하고 계신건가용?ㅠㅠㅠㅠㅠ
2021년 11월 29일
아, 맞다!제 키보드가 캐나다 키보드라서 Ctrl + Shift + F10을해도 실행이 안되요ㅠㅠ



2021년 12월 1일



2021년 12월 1일



2021년 12월 4일

댓글 11

2021년 12월 6일
헉...... 알람을 하나도 확인못했네용ㅠㅠ 알람 없길래 잘 되시는 줄 알았더니ㅠ
2021년 12월 6일
keymap 을 어디서 찾으셨나 모르겠는데 메뉴 File-Preferences 에 가서 찾으셔야 합니당
2021년 12월 7일
File-Preferences를 어디서 찾아요?
2021년 12월 10일
음.. 계속 댓글 알림이 안오네요 ㅠㅠ 혹시나 해서 왔는데 역시 댓글이 있군요; windows 쓰신다면 preferences 가 아니라 pycharm 위 메뉴에서 File - Settings 가 있을겁니당
2021년 12월 11일
그렇게 해도 안되요.......
2021년 12월 11일
무엇이 안된다는 건가요?https://share.getcloudapp.com/ApuEZzP7 참고하셔서 Run Context Configuration 찾으신 다음에 Ctrl +Shift +F10 이라든지 원하는 키로 변경을 해보세용.
2021년 12월 12일
제말은 pycharm 위 메뉴에서 File - Settings에 갔는데 거기에 있는 키로 했는데도 안된다는뜻이에요.
2021년 12월 15일
실행은 되는데 제가 영상으로 찍은 것 처럼 실행이 안된다는 말씀이죵? 코드가 동일하다면 안될리가 없는데... 무엇을 잘못 실행하고 계신지 제가 알기가 어렵네용 ㅠㅠ
2021년 12월 15일
그럼 어떻게 해야될까요?ㅠㅠ
2021년 12월 16일
움... 실행과정 전체가 화면 녹화가 되면 좋을텐데.. 그래야 제가 정확하게 답변을 해드릴 수 있을 것 같아용
베스트 댓글
2023년 7월 27일
답변자분 진짜 천사시네요,,

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇