2014-10-18 4 views
1

이것은 처음으로 파이썬을 사용하고 있으며 원하는 방식으로 인쇄하는 데 문제가 있습니다. 출력물을 나란히 놓고 싶습니다. 내가 피곤해서일지도 모르지만,이 사실을 알 수없는 것 같습니다.두 기능을 나란히 인쇄하십시오.

내 코드 :

def cToF(): 
    c = 0 
    while c <= 100: 
     print(c * 9/5 + 32) 
     c += 1 
def fToC(): 
    f = 32 
    while f <= 212: 
     print((f - 32)/1.8) 
     f += 1 






print (cToF(),fToC()) 

출력 : 다음, 현재

all of the numbers from cToF() all of the numbers from fToC() 
+1

출력을 더 유용하게 만들려면 각 기능이 변환되는 온도와 변환되는 온도를 _two_ 숫자로 인쇄해야합니다. 그러나'cToF()'가 100 줄을 출력하지만'fToC()'가 180 줄을 출력하기 때문에 당신이 출력을 나란히 놓기를 원한다면 특별한주의를 기울여야한다. –

답변

2

의 cToF 기능 실행 및 인쇄 모든 그것의 값 : I 출력을 원하는 방법

all of the numbers from cToF() 
all of the numbers from fToC() 

fToC 함수가 실행되고 모든 값이 출력됩니다. 값을 생성하는 방법을 변경하여 나란히 인쇄 할 수 있어야합니다.

# or keep iterating until the longer fToC generator is exhausted 
from itertools import zip_longest 

for f, c in zip_longest(cToF(), fToC()): 
    print('{}\t\t{}'.format(f, c)) # will print None, c once cToF is exhausted 

파이썬이 사용하는 경우

# generate f values 
def cToF(low=0, high=100): 
    for c in range(low, high + 1): 
     yield c * 9/5 + 32 

# generate c values 
def fToC(low=32, high=212): 
    for f in range(low, high + 1): 
     yield (f - 32) * 5/9 

# iterate over pairs of f and c values 
# will stop once cToF is exhausted since it generates fewer values than fToC 
for f, c in zip(cToF(), fToC()): 
    print('{}\t\t{}'.format(f, c)) 

, zip_longest에 대한 범위 xrangeizip_longest을 대체합니다.

+0

이것은 올바르게 인쇄하는 것처럼 보이지만'fToC()'는'55.55555555555556' –

+0

에 도달하면 인쇄가 멈 춥니 다. 왜냐하면'zip'이 가장 짧은 iterable로 자르기 때문입니다. 'cToF'는 100 개의 값을 생성하는 반면'fToC'는 180 개의 값을 생성합니다. 가장 긴 결과를 얻으려면'zip' 대신 ['itertools.zip_longest'] (https://docs.python.org/3/library/itertools.html#itertools.zip_longest)를 사용할 수 있습니다. – davidism

+0

오, 멋지다, 파이썬은 정말 쓸만한 기능이 너무 많아서 멋지다 : D –

0

인쇄하려는 경우;

cToF first Element fToC first element 
cToF second Element fToC second element 
... 

2 개 목록을 결합하여 인쇄 할 수 있습니다.

사용할 수있는 예제 코드.

import pprint 
def cToF(): 
    c = 0 
    ret_list = [] 
    while c <= 100: 
     ret_list.append(c * 9/5 + 32) 
     c += 1 
    return ret_list 

def fToC(): 
    f = 32 
    ret_list = [] 
    while f <= 212: 
     ret_list.append((f - 32)/1.8) 
     f += 1 
    return ret_list 

def join_list(first_list, second_list): 
    length_of_first_list = len(first_list) 
    for i, val in enumerate(second_list): 
     second_list[i] = (" - "if (length_of_first_list-1) < i else first_list[i], val) 
    return second_list 

pp = pprint.PrettyPrinter(indent=4) 
pp.pprint(join_list(cToF(), fToC()))