python - 关于练习题的Python初学者问题
问题描述
我正在学习 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()
解决方案
- 你没有打开第二个文件。您使用了函数的名称
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)
推荐阅读
- python - 在 Python 中绘制一个双条形图,其值来自两个不同的字典
- html - css不同的页面方向与一个打印过程
- c# - 无法在 Alea GPU (C#) 中启动内核
- c# - 使用 SQLite 显示当前数据库中的所有表
- python - 为什么这两个 API(twitter 地理/搜索 API)返回不同的结果集?
- python - 在 Window OS 中双击时如何在 Idle shell 中运行脚本?
- java - GUI 对象不绘制
- c# - 使用 IEnumerable 进行 C# 三元转换
- r - 如何从迭代交叉验证计算 lambda.1se?
- java - IntelliJ 警告:为 varargs 参数创建未经检查的泛型数组