2017-11-10 10 views
-1

kilo python 루프에 간단한 마일을 설정하는 데 도움이 필요합니다. 마일 목록을 만들어서 그 목록을 킬로미터로 변환하는 반복문을 통해 실행 한 다음 킬로미터 목록을 인쇄해야합니다.마일을 kilo 루프로 변환하는 간단한 파이썬

저는 어제부터이 문제에 빠져 있었고 파이썬은 저를 계속 괴롭 히고 있습니다. 나는 "Zelles Python programming third edition"에서 배운 책으로 되돌아 갔고 루핑리스트를 넘겨 봤지만 너무 많이 변환하지는 않았거나, 아마 그것을 보지 못했을 뿐이다.

어쨌든 내가 지금까지 가지고있는 코드는 여기에 있습니다. 그것은 아마 정말로 위로 치우쳐졌다. 그러나 내가 이것을 이해하려고 노력하고, 올바르게하려고 노력하는 것 외에 나는 무엇을 할 수 있냐?

어쨌든 찾아 주셔서 감사합니다!

def main(): 
     mileINk = 1.609344 
     miles = [0,1,2,3,4] 
     kilo = [] 
     for mileINk in miles: 
      conV = eval(mileINk * miles) 
      kilo.append(chr(conV)) 
     print(round(kilo, 3)) 

    main() 
+0

이렇게 형식을 지정해야합니까? 나는 파이썬에서 이것을하는 더 쉬운 방법이 있다고 생각한다. –

+1

왜'eval'을 사용하고 있는가? –

+0

코드에서 "crapping out"이라는 오류 메시지를 추가 할 수 있습니까? –

답변

0

구문에 약간의 오류가 있습니다. 루핑은 파이썬에서 조금 다릅니다. 다른 언어처럼 산술 시퀀스를 만들지 않고 각 요소를 반복합니다. 그 말이 맞는다면.

그래서 for 루프는 이것이다 :

for new_temp_variable in iterable_object: 
    do stuff 

은 그래서 당신은 곱셈에 대한 평가 후면을 수행 할 필요가 없습니다

for mile in miles: 
    do computation 

를 원한다. chr을 사용하여 문자로 변환해서는 안됩니다. 목록을 반올림 할 수도 없습니다. 당신이 구문의 확고한 이해

당신이 목록 이해를 사용할 수있는 몇 가지 새로운 구문을 사용하여 확인하면이 없어 보인다

는 궁극적으로 나는 파이썬 자습서 또는 다른 자습서를 읽어 보시기 바랍니다. 이런 일을 더 쉽게 만들어주는 구문. I.E.

def main(): 
    mileINk = 1.609344 
    miles = [0, 1, 2, 3, 4] 
    kilo = [mileINk * each for each in miles] 
    print(kilo) 
+0

당신 모두를 위해 모두 감사합니다! 나는이 책에서 앞뒤로 나아가고 있었고, 그 결과 내 코드가 조금씩 잘랐다. 그러나 내가 잘못하고있는 것을 배웠고 기본적으로 내가해야만했던 것을 더 잘 이해하게되었습니다. 나는 몇 차례 꽤 가까워졌지만 여전히 원하는 출력을 얻지 못했습니다. 어쨌든 다시 감사하고 많은 환호! – Woop

0
kilo = [ m * mileINk for m in miles ] 
Print(kilo) 

이 한줄로 목록 루프를 압축 지능형리스트를 사용한다. 코드의 변경 후

:

def main(): 
    mileINk = 1.609344 
    miles = [0,1,2,3,4] 
    kilo = [ m * mileINk for m in miles ] 
    print(kilo) 
main() 

참고 : 파이썬과 최고의 연습과 같이 마법 방법을 사용합니다 :

if __name__ == '__main__': 
    mileINk = 1.609344 
    miles = [0,1,2,3,4] 
    kilo = [ m * mileINk for m in miles ] 
    print(kilo) 
+0

리스트의 이해력을 제안하는 것은 아마도 초보자를 돕지 않을 것입니다. –

0

귀하의 코드는 많은 오류가 있습니다. 여기가 해결되었습니다

def main(): 
    mileINk = 1.609344 
    miles = [0,1,2,3,4] 
    kilo = [] 
    for mile in miles: 
     conV = mile * mileINk 
     conV = round(conV, 3) 
     kilo.append(conV) 
    print(kilo) 

main() 

출력 : [0.0, 1.609, 3.219, 4.828, 6.437]

다음

오류 코드에서 찾을 수 있습니다 당신은 1.609344를 저장하기위한 같은 변수 이름mileINk을 사용하는

  • for 루프. 이것은 명백한 것입니다.

  • eval문자열을 인수로 취합니다. mileINk * miles 오류가 발생합니다. 난 당신이 miles에서 모든 항목와 를 곱해야하면서 for 루프 내부 eval

  • , 당신은, miles 곱하여되어 필요가 있다고 생각하지 않습니다.

  • chr유니 코드 표현을 반환하는 데 사용됩니다. 당신은 여기서 그것을 필요 없다.

  • round은 (kilo, 귀하의 경우) 수없는 목록 걸립니다.

문제는 좀 더 "Python"방식으로 해결할 수 있지만 일을 단순하게 유지하므로 혼동을 느끼지 않아도됩니다.

+0

고마워요! 그래, 내가 책에서 앞뒤로 갔을 때, 나는 계속 잘 던져 버리는 더 많은 오류에서 끝난 많은 다른 것들을 시도하기 시작했다. 그래서 평가와 chr은 다른 것들을 밖으로 시도하고 내 코드가 꽤 잘게 된 길을 따라했다. 두 번째 루프를 실제로 이해하지 못합니까? 5 개의 전환이 함께 출력되도록하는 것이 좋다고 생각합니다. 같은 루프 안에서 처리 할 수 ​​있습니까? 나는 그것이 내가하려고했던 것이라고 생각한다. 그러나 당신의 도움을 위해 다시 한번 대단히 감사합니다! 브라보! – Woop

+0

환영합니다. 두 번째 루프는 결과 숫자를 반올림하여 '1.124325'가 '1.124'가되었습니다. 그렇습니다.이 작업은 첫 번째 루프 내에서하는 것이 더 좋으므로 내 대답을 편집했습니다. 마지막으로, 나의 대답이 당신을 도왔다면, 그것을 받아들이는 것을 고려해주십시오. ... – ammarx

0

반복기를 매우 명확하게 이해하지 못하는 것 같습니다.

for mileINk in miles: 

위의 문장을 반복 할 때마다 Python은 mileINk에 마일 단위로 하나의 요소를 평가합니다. 따라서 mileINk는 더 이상 1.609344가 아니지만 각 반복에서 0,1,2,3,4와 같습니다. 명세서 변경

for mile in miles: 
    conV = mileINk * mile 
    kilo.append(str(conV)) 

입니다.