#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()