python编程问题 10

如图,除了像while'1','2'。。。。ininput这样的死办法还有什么方法可以做到这个要求的?... 如图,除了像while '1','2'。。。。in input这样的死办法还有什么方法可以做到这个要求的? 展开
 我来答
ericsekkei
2016-03-25 · TA获得超过2625个赞
知道大有可为答主
回答量:1598
采纳率:0%
帮助的人:855万
展开全部
错误:

复制代码代码如下:

>>> def f(x, y):
print x, y
>>> t = ('a', 'b')
>>> f(t)

Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
f(t)
TypeError: f() takes exactly 2 arguments (1 given)

【错误分析】不要误以为元祖里有两个参数,将元祖传进去就可以了,实际上元祖作为一个整体只是一个参数,
实际需要两个参数,所以报错。必需再传一个参数方可.

复制代码代码如下:

>>> f(t, 'var2')
('a', 'b') var2

更常用的用法: 在前面加*,代表引用元祖

复制代码代码如下:

>>> f(*t)
'a', 'b'

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
错误:

复制代码代码如下:

>>> def func(y=2, x):
return x + y
SyntaxError: non-default argument follows default argument

【错误分析】在C++,Python中默认参数从左往右防止,而不是相反。这可能跟参数进栈顺序有关。

复制代码代码如下:

>>> def func(x, y=2):
return x + y
>>> func(1)
3

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

错误:

复制代码代码如下:

>>> D1 = {'x':1, 'y':2}
>>> D1['x']
1
>>> D1['z']

Traceback (most recent call last):
File "<pyshell#185>", line 1, in <module>
D1['z']
KeyError: 'z'

【错误分析】这是Python中字典键错误的提示,如果想让程序继续运行,可以用字典中的get方法,如果键存在,则获取该键对应的值,不存在的,返回None,也可打印提示信息.

复制代码代码如下:

>>> D1.get('z', 'Key Not Exist!')
'Key Not Exist!'

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

错误:

复制代码代码如下:

>>> from math import sqrt
>>> exec "sqrt = 1"
>>> sqrt(4)

Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
sqrt(4)
TypeError: 'int' object is not callable

【错误分析】exec语句最有用的地方在于动态地创建代码字符串,但里面存在的潜在的风险,它会执行其他地方的字符串,在CGI中更是如此!比如例子中的sqrt = 1,从而改变了当前的命名空间,从math模块中导入的sqrt不再和函数名绑定而是成为了一个整数。要避免这种情况,可以通过增加in <scope>,其中<scope>就是起到放置代码字符串命名空间的字典。

复制代码代码如下:

>>> from math import sqrt
>>> scope = {}
>>> exec "sqrt = 1" in scope
>>> sqrt(4)
2.0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式