1、writelines() takes exactly one argument (4 given)
这个错误提示意味着你在调用 writelines() 函数时传递了 4 个参数,但是该函数只接受一个参数。你需要检查你的代码,确保你只传递了一个参数给 writelines() 函数。如果你需要传递多个参数,你可以使用其他函数,比如 write() 或者 writelines() 的变体。
原本为fileptr.writelines("艾特金迭代法第",k+1,"次迭代值为",y0)
改正方法为fileptr.writelines("艾特金迭代法第{}次迭代值为{}".format(k+1,y0))
即减少了参数的传递
2、KeyboardInterrupt
在代码大体正确情况下,简单说就是未终止循环,解决方法有两种
一、我的情况是在多个文件切换运行时出现,代码关键内容正确,但是程序卡死或者报错KeyboardInterrupt,简单粗暴方法是自己手动终止程序运行,然后再次重新运行,发现解决,但此方法不推荐,因为没从根本解决问题,重新切文件运行还是出现此情况。
二、根本问题还是最开始说的,循环未终止,虽然代码很理想,但是计算机就是会在循环
KeyboardInterrupt 是 Python 中的一个异常,表示用户在程序运行时通过键盘中断(Ctrl + C)终止了程序。解决方法有以下几种:
- 使用 try-except 语句捕获 KeyboardInterrupt 异常,在 except 块中进行相应的处理,然后退出程序。
- 使用 while True 循环运行程序,在循环中判断是否捕获到 KeyboardInterrupt 异常,如果是,则进行相应的处理,然后退出循环。
- 使用 signal 模块注册一个信号处理函数来处理 KeyboardInterrupt 异常。
在此我选择了第2种方法,即在if语句外套用while True(),当然True也可以改成其他恒成立保证在if() 外层的条件,在此就可以if(): else():break,关键在于break让程序退出循环。
3、如何输出内容到文件
第一步fileptr=open("目标函数.txt",'w',encoding='utf-8'),即打开文件,关于'w'等含义参考http://t.csdn.cn/WeLq3
第二步fileptr.writelines("艾特金迭代法第{}次迭代值为{}".format(k+1,y0)),即输出到文件,此方法发现输出到文件中不自动换行
所以第二步采取另一种方式print("艾特金迭代法第{}次迭代值为{}".format(k+1,y0),file=fileptr)
第三步fileptr.close(),即关闭文件
4、选择调用目标函数
首先python中没有switch case语句这种写法,当然有其他很多方法,不过还没有去吸收学习,此处就直接放上自己刚刚学习改进的例子代码
def get_sunday():
return "Today it's Sunday"
def get_monday():
return "Today it's Monday"
def get_tuesday():
return "Today it's Tuesday"
def get_wednesday():
return "Today it's Wednesday"
def get_thursday():
return "Today it's Thursday"
def get_friday():
return "Today it's Friday"
def get_saturday():
return "Today it's Saturday"
def get_default():
return "对"
def f():
switcher = {
0:get_sunday,
1:get_monday,
2:get_tuesday,
3:get_wednesday,
4:get_thursday,
5:get_friday,
6:get_default
}
return switcher.get(float(input("请输入n值:")),get_default)()
def main():
print (f())
main()
不过对于f()含有未知数多项式子的选择自己还没掌握等后续掌握再进一步补全吧