2013-02-17 1 views
0
float(time) 
if time == '90.00': 
    added = added.getText() 
    if not added == '': 
     added = added.replace(':', '.') 
     added = added.replace('+', '') 
     added = ' '.join(added.split()) 
     float(added) 
     time1 = time+added 
     print time1 

축구 경기에서 90 분간 '부상 시간'을 추가하려고합니다. 왜 이것이 작동하지 않는지 알 수 있습니다. 나는 그저 양쪽에 나란히 인쇄 해 놓는다.숫자를 추가하면 이상한 결과가 발생합니다. 예 : "90.005.25"

90.005.25 

나는 이것이 너무 오래 꼼짝 못하게하고 있다고 생각한다.

감사

에반

+4

코드는 * strings *를 추가합니다. 이것은 일반적인 * 문자열 연결 * 동작입니다. 일반적인 해결책은 문자열을 숫자로 변환하고 * 다음에 추가하는 것입니다. –

+0

대답은 @pst – HericDenis

+0

입니다. 죄송합니다. 편집 해 주셔서 감사합니다. – user2073606

답변

1
if time == '90.00': 
    time = float(time) 
    added = added.getText() 
    if not added == '': 
     added = added.replace(':', '.') 
     added = added.replace('+', '') 
     added = ' '.join(added.split()) 
     added = float(added) 
     time1 = time+added 
     print time1 

float는이 장소 작동, float(added) 반환 added은 float로 변환이 아니라 added를 변경하지 않습니다. 반환 된 값을 저장하지 않으므로 에테르에 전달되고 added은 여전히 ​​문자열입니다.

+0

고마워요, 너무 바보 같아요. – user2073606

0

문제는 숫자를 추가하지 않고 문자열을 추가하는 것입니다. 파이썬에서 문자열을 + 연산자를 적용하는 것은 그것들을 연결해 :

>>> 12 + 34 
46 
>>> '12' + '34' 
'1234' 
>>> 'Hello ' + 'world!' 
'Hello world!' 

이미 문자열 또한 대신 플로트를 사용하여 수정 프로그램을 제공 @tcaswell.

다른 옵션은 시간 모듈을 사용하는 것입니다. 이것의 장점은 몇 초에서 몇 시간으로 변환하는 것과 같은 일을하기위한 내장 함수가 있다는 것입니다.