2017-12-08 1 views
0

그래, 알아 냈어. 하지만 이제는 if 문을 사용하여 22 mpg 미만의 차량에서 평균 mpg (.txt 파일)를 가져온 다음 루프를 평균하여 유휴 상태로 출력합니다. 루프 전에 if 문을 실행해야합니다. 나는 내가 정말로 바꿀 필요가있는 것만을 확신하지 못한다. 나는 텍스트 파일 데이터를 가지고있는 변수를 슬라이스 할 수 있어야한다고 생각한다. 어쨌든 여기 내 코드가 있습니다. 누군가 내가 내가 옳은 일을 이해하지 못하게 할 수 있습니까? If 문에서 평균 구하기 Python 3

def cityGasGuzzler(): 
# Input:that assigns a text file to a value and provides other definition 
values 
cityGuzz = open("carModelData_city.","r") 
# Process: For loop to get average of gas guzzling city street driving 
    vehicles 
for line in cityGuzz: 
# Process: Uses if statement to get the average of lower mpg or gas guzzlers 
    if cityGuzz[0:-1] < 22: 
     sum = sum + eval(line) 
     count = count + 1 
     avrg = sum/count 
# Output: using the round function to get average to the 2nd decimal place 
#   and prints string and rounded variable to IDLE. 
print("The average city MPG is,", round(avrg, 2)) 



cityGasGuzzler() 

그냥 사람들을 평균 출력의 평균 공회전, 다음과 같이 내 주요 목적은 명확 미만 22있는 텍스트 파일에서 숫자 값을 촬영합니다.

+0

* "나는 float 값을 추가 할 것이라고 생각합니다"* - 그게 정확하지 않으며 왜 다르게 생각했는지 불분명합니다. 'for len (text1) .readline' - ... 뭐라구? – jonrsharpe

+0

@jonrsharpe 잘 텍스트 파일의 값은 수레입니다. 그리고 루프가 진행되는 한, 나는 예상 된 결과를 얻을 수 있도록 이것을 이해할 수 있도록 노력하고 있습니다. – Woop

+0

그들은 * float를 나타내지 만,'float()'이 독자적으로 할 것이라고 생각한 바가 전혀 없습니다. 구조화 된 학습을 강력히 권장합니다 (예 : https://sopython.com/wiki/What_tutorial_should_I_read%3F – jonrsharpe

답변

0

, 문제는이 라인이다 : cityGuzz이 파일 객체가 아닌 현재 행하지 최소한 때문에, 여러 가지 이유로 작동하지 않습니다

if cityGuzz[0:-1] < 22: 

합니다. 22과 같은 숫자와 비교하기 전에 현재 줄을 숫자로 변환해야합니다. 이 같은

시도 뭔가 :

total = 0 # renamed to avoid masking the builtin sum function 
count = 0 

for line in cityGuzz: 
    mpg = float(line) 
    if mpg < 22: 
     total += mpg 
     count += 1 

average = total/count 

내가 sum 때문에 totalsum 개명는 내장 함수의 이름입니다. 실제로 파일에서 값을 더하기 위해 명시적인 루프를 대체하는 것이 유용 할 수 있습니다. 다음은 평균 계산의 다른 구현입니다.

guzzlers = [mpg for mpg in map(float, cityGuzz) if mpg < 22] 
average = sum(guzzlers)/len(guzzlers) 
+0

고마워요! 정상 근무, 나는 바닥뿐만 아니라 시도를 줄 것이다. – Woop

1

귀하의 문제는 루프의 각 반복에서 수량 분할하려고하는 것입니다. 또한 코드에는 몇 가지 실수가 있습니다. 이것을 시험해보십시오. 내가 제대로 질문을 이해한다면

sum = 0.0 
quantity = 0 
with open('file.txt', 'r') as f: 
    for line in f.readline(): 
     if line.isdigit(): 
      sum += float(line) 
      quantity += 1 
average = sum/quantity 
print average 
+0

이것이 효과가 있었지만 적은 수의 출력이 유휴 상태였습니다. 이 코드를 작성하는 기본적인 방법이있을 수 있습니까? – Woop

+0

@Woop, 이것은 아주 기본적인 코드 조각입니다. 일반적으로 프로그래밍을 더 연습해야합니다. Python 문서 및 API를 읽으십시오. 분명하지 않은 경우 아마 모든 언어로 프로그래밍하는 기본 과정을 가져야합니다. –

+0

예. 저는 CS 수업을 듣고 비단뱀을 배우고 있습니다. 그러나 화학을 배우기도하고 화학이 훨씬 어려워서 대부분의 시간을 보냅니다. 휴식 시간에 많은 CS 수업을 복습 할 것입니다. 게다가 나는 프로그램을 짜 맞추고있다. 그러니 도움을 요청하는 게시물을 볼 준비를하십시오. 도와 주셔서 다시 한 번 감사드립니다! – Woop