2013-07-07 2 views
3

저는 파이썬을 처음 사용하고 있으며 파이썬 3.3.2와 함께 작업하고 있습니다. 인쇄하려고하는 문자열에 데이터 항목을 포함하는 데 문제가 있습니다. % 운영자는 같이 그대로 출력합니다 다음 중 하나를 오류와 함께파이썬 인쇄 기능 문제

%d miles --> %3.2f kilometers 

:

for miles in range (10, 70, 10): 
    km=miles*1.609 
    print ("%d miles --> %3.2f kilometers") % (miles, km) 

가 생산

:

Unsupported operand type for %: 'NoneType' and 'tuple' 

하지만 세 번째 줄을 변경하는 경우

print (%d "miles -->" %3.2f "kilometers") % (miles, km) 

% d에서 구문 오류가 발생합니다. 'print()'기능을 제거하여 프로그램이 대화식 모드에서 올바르게 작동하도록 할 수 있었지만 'print()'이 없으면 유휴 상태로 출력되지 않습니다. 내가 뭘 놓치고 있니? 이것을 알아 내려고 노력한 연구는 파이썬에 대해 더 많이 배우는 데 도움이되었지만 지금까지는 프로그램을 작동시키지 못했습니다. 그런데 출력해야합니다 :

10 miles --> 16.09 kilometers 
20 miles --> 32.18 kilometers 
30 miles --> 48.27 kilometers 
40 miles --> 64.36 kilometers 
50 miles --> 80.45 kilometers 
60 miles --> 96.54 kilometers 

이 문제를 해결할 수있는 도움이나 도움을 주셔서 감사합니다. print 함수 내에서

답변

4

이동 % (miles, km) : 당신이 실제로 수행하려는 코드에 있도록

print 기능, None를 반환

당신이 오류가 발생하는 이유입니다
None % (miles, km) 

.

근무 코드 :

>>> for miles in range (10, 70, 10): 
...  km=miles*1.609 
...  print ("%d miles --> %3.2f kilometers" % (miles, km)) 
...  
10 miles --> 16.09 kilometers 
20 miles --> 32.18 kilometers 
30 miles --> 48.27 kilometers 
40 miles --> 64.36 kilometers 
50 miles --> 80.45 kilometers 
60 miles --> 96.54 kilometers 

새로운 스타일 string formatting 사용 :

>>> for miles in range (10, 70, 10): 
     km=miles*1.609 
     print ("{:d} miles --> {:3.2f} kilometers".format(miles, km)) 
...  
10 miles --> 16.09 kilometers 
20 miles --> 32.18 kilometers 
30 miles --> 48.27 kilometers 
40 miles --> 64.36 kilometers 
50 miles --> 80.45 kilometers 
60 miles --> 96.54 kilometers 
+0

당신에게 너무 감사드립니다. 그것이 단순해야만한다는 것을 알았습니다. 지금 일하고있어. 다시 한번 감사드립니다. –

3

것은 당신의 고통에 .format() 메소드를 사용하여 시도를

>>> for miles in range(10, 70, 10): 
...  km = miles*1.609 
...  print ("{0} miles ---> {1} kilometers".format(miles, km)) 
2

당신은했습니다 벌써 y는 인쇄가 작동하지 않는 이유에 대한 답을 가지고 - 그러나,이 글을 쓰는 약간 다른 방법은 다음과 같습니다

miles = range(10, 70, 10) 
kms = (m * 1.609 for m in miles) 
fmt = '{:d} miles --> {:3.2f} kilometers'.format 
print(*map(fmt, miles, kms), sep='\n') 

을 제공합니다 :

10 miles --> 16.09 kilometers 
20 miles --> 32.18 kilometers 
30 miles --> 48.27 kilometers 
40 miles --> 64.36 kilometers 
50 miles --> 80.45 kilometers 
60 miles --> 96.54 kilometers 
+0

+1 굉장하고 루프가 없습니다. –