2014-01-08 5 views
-1

"if"부분에 도달 할 때까지 내 프로그램이 작동하고 작동을 멈 춥니 다. 어떤 아이디어?파이썬 코드를 어떻게 수정합니까?

import random 
skill = str() 
skill2 = str() 
strength1 = str() 
strength2 = str() 
final = str() 
strength_modifier = str() 
skill_modifier = str() 
dice = int() 

strength1 = input("Please enter your strength level for character 1: ") 
print(strength1) 
skill1 = input("Please enter your skill level for character 2: ") 
print(skill1) 

strength2 = input("Please enter your strength level for character 2: ") 
print(strength2) 
skill2 = input("Please enter your strength level for skill 2: ") 
print(skill2) 

if strength1 > strength2: 
    strength_modifier =(int(strength1)-int(strength2)) 
    print(strength_modifier) 

if strength2 > strength1: 
    strength_modifier = (int(strength2)-int(strength1)) 
    print(strength_modifier) 

if skill1 > skill2: 
    skill_modifier = (int(skill1)-int(skill2)) 
    print(skill_modifier) 

if skill2 > skill1: 
    skill_modifier = (int(skill2)-int(skill1)) 
    print(skill_modifier) 

누군가가 그냥 문제를 해결하시기 바랍니다 수 있으며, 제발 여기에 게시 : L

+3

이 프로그램이하는 일, 당신이 받아들이는 입력 내용, 이것이 python3와 2.7인지 등등 좀 더 구체적이어야합니다. –

+0

어떤 오류가 있습니까? – elbaulp

+0

나는 "if"비트를 얻을 때 두 숫자의 차이점을 알아 내야합니다. "if"비트에 도달 할 때 가장 큰 숫자에서 가장 작은 숫자를 빼고 그 다음에 아프면 차이. –

답변

8

I 변수가 실제로 문자열 및 ">"두 개의 문자열을 비교하려고 생각한다. 먼저 문자열을 int로 캐스트 해보십시오.

+0

'input()'[[문자열을 반환]] (http://docs.python.org/3/library/functions.html # 입력) –

+0

'strength1 = int (입력 ("입력 :"))'. 캐스트가 실패했을 수도 있습니다. 예외 코드 – stanleyxu2005

+0

나중에 코드에서 (모든 if 블록에서) int에 캐스팅되지 않는 추가 이점을 얻으 려면 좋습니다. – CoryKramer

0

str()에 변수를 정의 할 때 빈 문자열에 변수를 할당합니다 (명령 쉘이나 IDLE에서 str()을 실행하고 반환 값을 확인하려고 시도).

그런 다음 input() 함수를 사용하여 변수를 일부 문자열로 다시 정의하고 if 문에서 해당 비교 연산자와 문자열을 비교합니다! 문자열을 비교할 때 문자열의 첫 번째 문자를 확인합니다. 그래서 'b'로 시작하는 문자열은 'a'로 시작하는 문자열보다 크고 'c'> 'b'> 'a'등입니다. 문자열이 숫자 인 경우 '1234412'와 같이 첫 번째 숫자의 절대 값을 확인하므로 2가 1보다 크기 때문에 '1231432'> '2'는 False를 반환합니다.

원하는 항목 입력을 요구할 때 변수가 사용자가 쓴 숫자와 같아야한다고 말합니다. 이 같은 :

skill1 = int(input("Type your skill... :")) 

그러나 이것은 사용자가 숫자를 입력하지 않는 경우 오류를 잡을 할 수 있도록 오류에 던져, 여전히 유효한 입력을 요청할 수 있습니다! 다음과 같이하십시오.

while True: 
    try: 
     skill1 = int(input("bla bla : ")) 
     break 
    except ValueError: 
     print("Type in a NUMBER") 

쌍으로 작동하는 if 문에 참여할 수도 있습니다. Else 문 또는 Elif 문 ... 두 가지 방법으로이 작업을 수행 할 수 있습니다. Else 문은 다른 모든 If-Elif 문이 False로 평가되면 실행됩니다. 같은 블록에있는 모든 If-Elif 문이 False!로 평가되면 Elif 문이 실행됩니다.

if #some condition#: 
    #some code 
elif #some condition#: <== Only executes if the one above didn't execute 
    #some code 
elif #some condition#: <== Only executes if the ones above didn't execute 
    #some code 
else: # executes only if none of the above statements evaluated True. 

이 같은 IF-하기 Elif-그렇지 블록을 사용하여, 당신은 항상 하나 개의 조건이 True 평가할 때 때문에 하나와 하나의 실행할 코드 부분은, 그것은 그 진술의 들여 쓰기 코드를 입력 알고 , 그리고 그것이 끝나면 그것은 다른 모든 조건들을 건너 뜁니다! 이런 코드는 다음과 같은 방식으로 작동합니다 : 인터프리터가 들어갈 때 때문에 < (30)이 True, 그것은 단지 첫 번째 인쇄 호출하지만

a = 10 
if a < 20: 
    print("Var 'a' is smaller than 20") 
elif a < 30: 
    print("Var 'a' is smaller than 30") 

을 경우 첫 번째는 자동으로 다른 모든 ELIF 년대를 건너 뜁니다 및 else 문.

관련 문제