Chciałbym móc pobrać wyniki testów wprowadzone przez użytkownika i zapisać do zewnętrznego pliku tekstowego. Następnie poproś aplikację o odczytanie wartości z i obliczenie średniej. Jednak nie jestem pewien, jak zaimplementować składnię Pythona w pętli i funkcjach. Próbowałem wykorzystać moje zasoby, aby lepiej zrozumieć, jak to zrobić, ale mam pewne problemy ze zrozumieniem, jak Python obsługuje pliki zewnętrzne. Ponadto, czy użycie dołączania byłoby lepsze niż pisanie w tym scenariuszu? Bieżąca składnia:
def testAvgCalculation():
#Variables
total = 0
total_quiz = 0
while True:
#User Input and Variable to stop loop
inpt = input("Enter score: ")
if inpt.lower()== 'stop':
break
#Data Validation
try:
if int(inpt) in range(1,101):
total += int(inpt)
total_quiz += 1
else:
print("Score too small or Big")
except ValueError:
print("Not a Number")
return total, total_quiz
def displayAverage(total, total_quiz):
average = total / total_quiz
print('The Average score is: ', format(average, '.2f'))
print('You have entered', total_quiz, 'scores')
#Main Function
def main():
total, total_quiz = testAvgCalculation()
displayAverage(total, total_quiz)
#Run Main Function
main()
1 odpowiedź
To jest cholerne, ale próbowałem pracować z tym, co już tam było. Podzieliłem sekcję walidacji danych oryginalnej funkcji na osobną funkcję. W main()
zwraca swoją wartość counter
, która śledzi liczbę wprowadzonych wartości, do calculate_average()
, który następnie czyta plik wiersz po wierszu, aż counter
stanie się 0, co oznacza, że ma zamiar odczytać słowo „stop” (które umożliwia rozpoznanie EOF za pomocą „i” w instrukcji if), wykonuje obliczenia i zwraca jego wartości.
def write_file():
#Variables
counter = 0
file = open("Scores.txt", "w")
while True:
#User Input and Variable to stop loop
inpt = input("Enter score: ")
file.write(inpt + "\n")
if inpt.lower()== 'stop':
file.close()
break
counter += 1
return counter
def calculate_average(counter):
total = 0
total_quiz = counter
scores = open("Scores.txt", "r")
s = ""
try:
while counter > 0 and s != 'stop':
s = int(scores.readline())
if int(s) in range(1,101):
total += int(s)
counter -= 1
else:
print("Invalid data in file.")
except ValueError:
print("Invalid data found")
return total, total_quiz
def displayAverage(total, total_quiz):
average = total / total_quiz
print('The Average score is: ', format(average, '.2f'))
print('You have entered', total_quiz, 'scores')
#Main Function
def main():
total, total_quiz = calculate_average(write_file())
displayAverage(total, total_quiz)
#Run Main Function
main()
UWAGA: plik jest tworzony początkowo w trybie zapisu, który nadpisuje plik za każdym razem, więc nigdy nie potrzebujesz nowego. jeśli chcesz zachować rekord, możesz zmienić go na dopisywanie, chociaż będziesz musiał poradzić sobie z wyodrębnianiem odpowiednich wierszy ze starych danych wejściowych.
Niezbyt ładne, ale powinno dać ci wyobrażenie, jak osiągnąć to, do czego dążyłeś.
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.