파이썬 코딩 질문입니다 매개변수 쪽
#1015-42.py
# two integer def function
import random
def add() :
#1 add
z = x + y
print("%d + %d = %d" % (x,y,z))
def compare() :
#2 compare
if x > y :
print("%d > %d" % (x,y))
elif x < y :
print("%d < %d" % (x,y))
else :
print("%d = %d" % (x,y))
def loopsum() :
#3 sum
#x = random.randrange(0,100)
#y = random.randrange(0,100)
if x > y :
z = x
x = y
y = z
hap = 0
for i in range() :
hap += i
print("%d ~ %d sum = %d" % (x,y,hap))
#main
while True :
x = random.randrange(0,100)
y = random.randrange(0,100)
print("--------------")
print(" 1.add")
print(" 2.compare")
print(" 3.sum")
print(" 4.exit")
print("--------------")
n = input("n : ")
n = int(n)
if n ==1 : add()
elif n == 2 : compare()
elif n == 3 : loopsum()
elif n == 4 :
print("end ----")
break
else :
continue
이대로 돌렸을경우 1 과 2를 눌렀을때엔 잘나오는데 3번 loopsum을 돌리면 안됩니다. 매개변수를 직접 넣어주면 되긴하는데, 1번이랑 2번은 잘되는데 왜 3번만 안되는지 궁금합니다.
이렇게 수정해 보세요
def loopsum() : #3 sum x = random.randrange(0,100) y = random.randrange(0,100) if x > y : z = x x = y y = z hap = 0 for i in range(x,y+1) : hap += i print("%d ~ %d sum = %d" % (x,y,hap))그리고 python은 indentation이 중요한 언어로, 질문주실때도 source형태로으 포멧으로(편집기 제일 마지막 아이콘)질문 주시면 감사하겠습니다.
제가 수정한 곳은 range부분만 수정을 했어요 그리고 마지막에 +1을 한 이유는 range의 경우 마지막 숫자는 제외가 되기 때문에
range(1,5)면 1,2,3,4까지만 합이 구해집니다. 따라서 1,2,3,4,5까지를 포함하기 위해서 마지막에 +1을 하였습니다.
감사합니다.
안녕하세요,
loopsum 함수 중 range 함수에 인자값이 없으므로 에러가 발생합니다.
for i in range() :x와 y의 숫자만큼 1씩 더하는 목적이시라면...
for _ in range(x): hap += 1 for _ in range(y): hap += 1이런식의 코드가 되어야 하지 않을까 싶습니다..
더불어 코드 질문 올리실 때는 에디터 중 </> 버튼으로 코드 입력 영역을 만들고, 그 안에 붙여넣기 하시면 문제 파악이 쉽습니다.
감사합니다.
- def loopsum() : #3 sum x = random.randrange(0,100) y = random.randrange(0,100) if x > y : z = x x = y y = z hap = 0 for i in range(x,y) : hap += 1 print("%d ~ %d sum = %d" % (x,y,hap))
이렇게 해서 실행해보세요 ,아마도 잘 될거라 예상합니다
혹 잘 안된다면 저의 컴퓨터에 파이썬 설치를 안해서
그냥 소스보고 수정을 해본거라
수정의 큰 맥락만 알려드리자면 x , y 변수에 랜덤 넣는 명령문에 # 있던거 빼서 정상동작하게 한것이고
for 문에 range 괄호안에 변수가 빠져있어서 넣었습니다