Как исправить ошибку типа: гласные () отсутствует необходимый позиционный аргумент: ‘файловая ручка’?

#python #python-3.x

Вопрос:

Напишите программу, которая считывает содержимое текстового файла в строку

 def vowels(filehandle):  num_vowel = 0  vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']  for c in filehandle:  if c in vowels:  num_vowel = num_vowel 1  return num_vowel  def consonants(filehandle):  num_con = 0  for c in filehandle:  if c gt;= 'a' and c lt;= 'z':  if c not in vowels:  num_con = num_con 1  elif cgt;='A' and clt;='Z':  if c not in vowels:  num_con = num_con 1  return num_con  def case(filehandle):  uppercase = 0  lowercase = 0  for c in filehandle:  if cgt;='a' and clt;='z':  uppercase=uppercase 1  elif cgt;='A' and clt;= 'Z':  lowercase=lowecase 1  return uppercase, lowercase  def main():  vowel = vowels()  consonants = consonants()  uppercase, lowercase = case()  try:  filename=input('Enter name of text file: ')  filehandle=open('words.txt', 'r')   print('Vowels:', vowels)  print('Consonants:', consonants)  print('Uppercase:', uppercase)  print('Lowercase:', lowercase)   filehandle.close()  except IOError:  print('FILE NOT FOUND')   main()  

Когда я пытаюсь запустить программу, она выдает мне эту ошибку

 line 31, in main  vowel = vowels() TypeError: vowels() missing 1 required positional argument: 'filehandle'  

Я все еще новичок в python и использую функции, поэтому, если бы вы могли изложить это в терминах, которые любой может понять, это было бы очень ценно

Комментарии:

1. Если вы определяете функцию с параметром vowels(filehandle) , вы не можете вызвать vowels() ее, не указав в ней какое-либо значение.

2. вам нужен параметр

3. Вместо передачи дескриптора файла вашим функциям вам нужно будет передать текст файла. for c in filehandle: возвращает имя line файла c (а не символ, для которого проверяются следующие строки). def vowels(filehandle): это было бы def vowels(text): в ваших функциях. В main() этом случае вам нужно будет сказать что-то вроде text = filehandle.read() , чтобы получить необходимый текст файла (все в 1 переменной).

Ответ №1:

Определение vowels() состояний, для которых требуется параметр:

 def vowels(filehandle):  

Но тогда внутри main() вы вызываете его без параметра:

 vowel = vowels()