2013-09-01 2 views
-6
dummy = 10 
os.system("cls") 
x = input("""You use your attack by chossing a attack,for now you have 3 attacks. 
Choose one: 
1)punch 3dmg 
2)use knife 4dmg 
3)use pistol 6dmg 
""") 
if x == 1: 
    dummy = dummy-3 
    print"Dummies life:"+str(dummy) 
elif x == 2: 
    dummy = dummy-4 
    print"Dummies life:"+str(dummy) 
elif x == 3: 
    dummy = dummy-6 
    print"Dummies life:"+str(dummy) 

x=raw_input("""Attack: 
1)punch 3dmg 
2)use knife 4dmg 
3)use pistol 6dmg 
""") 

if x == 1: 
    dummy = dummy-3 
    print"Dummies life:"+str(dummy) 
elif x == 2: 
    dummy = dummy-4 
    print"Dummies life:"+str(dummy) 
elif x == 3: 
    dummy = dummy-6 
    print"Dummies life:"+str(dummy) 
if dummy <= 0: 
    os.system("cls") 
elif dummy >= 0: 
    os.system("cls") 

    x=raw_input("Finish him write 1,2,3:") 
#this is always printing help me# 
    if x==1: 
     dummy=dymmy-3 
    elif x==2: 
     dummy=dummy-4 
    elif x==3: 
     dummy=dummy-6 
print"Good job!!!" 

마지막으로 elif 코드를 인쇄하는 이유는 무엇입니까?
코드의 다른 부분에서 실수 일지 모르겠다는 거대한 코드에 대해 죄송합니다.Python if elif code

답변

1

input() 함수에 문자열 입력이 필요하기 때문입니다.

어느 int() 기능을 사용하여 INT에 입력을 변환

또는

if x == '1': 
    # your stuffs 

elif x == '2': 
    # your stuffs 

문제 마지막 조건은 다음과 같습니다 elif >=0에 상관없이 어떤 정수 때문에 나는이 0보다 큰이 항상 그렇죠 입력? 따라서, 그것은 마지막 상태를 호출합니다. 논리를 올바르게 검토하고 적용하십시오.

+0

그는 아마 2.7을 사용 :(다음 starrted 더 알고 입력에 raw_input을 을 변경하는 데 필요한 바보 같은 실수를했다, 그래서 입력() 당신이 입력 한 값을 평가합니까. 그래서 그는 2.7에서 int.raw_input()로 변환 할 필요가 없습니다. 그 문제를 일으킬. – vaggelas

+0

나를 위해 일하지 않는 방법을 인쇄 할 수 있습니다 – AlexaCOl

+0

오 그는 생각 'Python3'을 사용합니다. @ gamesyay12를 사용하고있는 Python 버전은 무엇입니까? – sachitad

1

이 질문을 downvote 할 수는 없지만 끔찍합니다. 나는 네가 무엇을 쓰고 있는지 정말로 모르겠다. 두 번 펀치를했다면 첫 번째 조건을 얻었습니다. 손상된 부분에서 10 점을 깬다면 다른 하나를 얻습니다. 일하는 것 같습니다.

마지막 상태에서 dummy = dymmy-3를 dummy = dummy-3으로 변경하려고 할 수 있습니다.

또한 위의 코드를 실행하거나 실행하려고하는 코드로 주석을 달아주십시오.

0

정수를 원할 때 raw_input을 사용하여 두 번째 if/elif 세트의 값을 가져 오기 때문에 문자열을 반환하기 때문입니다. 대신 입력을 사용하면 (처음/ifif 세트에서했던 것처럼) 정수와 비교할 수 있습니다. 정수와 비교할 수 있습니다.

2

raw_input() 함수는 입력 (즉 사용자)에서 한 줄을 읽고 후행 줄 바꿈을 제거하여 문자열을 반환합니다.

따라서 int == str은 항상 거짓입니다.

0

우선 게임이 효과가 있더라도 너무 의미가 없습니다. 누군가가 3 회 첫 번째 옵션을 입력하면 어떤 예를 들어

은? 더미는 여전히 살고 당신은 그에게 "좋은 일"

가 정확히 3 번 게임을해야합니까을 부여 할 것인가? 그는 2를 이길 수 -4 개의 희곡이 선택 사항에 따라 다릅니다. 더미가 죽을 때까지는 잠시 동안 루프를 사용하지 않으시겠습니까?

위에서 언급 한 다른 문제는 모든 것을 문자열에 할당하는 raw_input이므로 정수로 입력되고 문자열로 할당되며 if 조건을 확인할 수 없습니다.

하지만 while 루프를 사용하면 1/3의 코드로 파이썬에서 지식 수준을 가정 할 수 있습니다. 도움말 사람 :)에 대한

+0

Vaggelas im not be used ... 사용법이있을 것입니다 ... 그것은 마치 초보자 스크립트 인 경우 너무 쉬울 것입니다. – AlexaCOl

+0

좋아, 당신이 무엇을하려고하는지 정말 모르겠다. 게임은 그다지 의미가 없습니다. 저는 20 라인에서 while 루프와 비슷한 방식으로 작업 할 수 있습니다. 그러나 나중에 프로젝트에 적합한 경우에는 길을 고수 할 수 있습니다. raw_input()을 input()으로 바꾸고 코드는 정상적으로 돌아가고, 더미의 생명과 함께 6 장의 프린트를 가질 필요가 없습니다. 그들을 제거하고 각 플레이가 끝날 때 간단한 인쇄물을 넣으십시오. 필요한 것보다 4 줄 이상 많습니다. – vaggelas

+0

Thx 나는 그것이 어리석은 misstake이었다 : P – AlexaCOl

0

들으. 난 그냥 가 미안 지금은