#python #python-3.x
#python #python-3.x
Вопрос:
Я изучаю python и нуждаюсь в помощи, чтобы понять, что я делаю неправильно. Задача, которую я пытаюсь выполнить, — создать список целых чисел из 1-100, а затем создать два других списка на основе этих чисел и завершить, распечатав оба списка. Однако у меня возникли проблемы с получением второго списка для записи в файл с именем target list.txt . Может кто-нибудь сказать мне, что я делаю не так?
num1 = input("Please Input a name for the file ending it with .txt. ")
numb_list = open(num1, "w")
mylist = []
def integer_list():
for numbers in range(1, 101):
mylist.append(numbers)
numb_list.write(str(numbers) "n")
print(numbers, end="n")
integer_list()
print(mylist)
numb_list.close()
def target_list():
for numbers2 in range(25, 75):
mylist.append(numbers2)
target_list.write(numbers2 "n")
print(numbers2, end="n")
target_list()
print(mylist)
target_list.close()
Комментарии:
1.
target_list.write(numbers2 "n")
эта строка вызывает ошибку?, возможно, потому, что вы пытаетесь записать строку и целое число вместе, преобразуйте целое число в строку2. Куда вы поместили
target_list.write(numbers2 "n")
, что вы ожидаете от этой строки кода? Вы говорите: «У меня возникли проблемы с получением второго списка для записи в файл с именем target list.txt «. Есть ли у вас какие-либо справочные материалы о том, как записывать в файлы? Я думаю, вам следует его просмотреть. Альтернативно: в верхней части вашей программы, где вы сделалиnumb_list = open(num1, "w")
— по вашим собственным словам, какова цель этой строки?
Ответ №1:
- Вы не открыли второй файл. Вы использовали имя функции
target_list
вместо нового файла. Это то, что вызывает сбой вашей программы. - Не используйте глобальное состояние в функциях. Вы можете
return
создавать новый список при каждом вызове. Это предотвращает влияние одного вызова функции на поведение следующего вызова. - Используйте параметры функции, чтобы позволить функции действовать немного по-другому. Это делает функцию более удобной и позволяет избежать дублирования кода.
def integer_list(start, end):
file_name = input("Please Input a name for the file ending it with .txt. ")
num_list = []
num_file = open(file_name, "w")
for num in range(start, end):
num_list.append(num)
num_file.write(str(num) "n")
print(num)
num_file.close()
return num_list
num_list1 = integer_list(1, 101)
print(num_list1)
num_list2 = integer_list(25, 75)
print(num_list2)
Комментарии:
1. Для меня это имело смысл. Спасибо за объяснение.
Ответ №2:
Вы не открыли второй файл. target_list.write
здесь у вас возникает ошибка, и причина в том, что target_list
это функция, а не файл.
Ответ №3:
У вас есть несколько проблем с областью действия.
Вот исправленный код:
num1 = input("Please input a name for the file ending it with .txt ")
numb_list = open(num1, "w")
global mylist
mylist = []
def integer_list():
for numbers in range(1, 101):
mylist.append(numbers)
numb_list.write(str(numbers) "n")
print(numbers)#, end="n")
integer_list()
print(mylist)
#numb_list.close()
def target_list():
for numbers in range(25, 75):
mylist.append(numbers)
numb_list.write(str(numbers) "n") # Needed to be a string
print(numbers)#, end="n")
target_list()
print(mylist)
numb_list.close()