-
面试问题:
python中元组和列表有什么区别和相同点?
1、相同点:都是一个有序容器,都可以包含0个或者多个元素,支持索引访问,切片等操作。
2、不同点:
元组内元素不可变,但是列表可以;
元组运行效率比列表更高
查看全部 -
\n
表示换行\t
表示一个制表符\\
表示\
字符本身查看全部 -
3-5 Python的字符串
如果字符串本身包含
'
怎么办?比如我们要表示字符串I'm OK
,这时,可以用" "
括起来表示:"I'm OK"
如果字符串包含
"
,我们就可以用' '
括起来表示:'Learn "Python" in imooc'
如果字符串既包含
'
又包含"
怎么办?这个时候,就需要对字符串中的某些特殊字符进行“转义”,Python字符串用
\
进行转义。'Bob said \"I\'m OK\".'
注意:转义字符
\
不计入字符串的内容中.常用的转义字符还有:
\n
表示换行\t
表示一个制表符\\
表示\
字符本身查看全部 -
3-4 Python的布尔类型
与运算 and
只有两个布尔值都为 True 时,计算结果才为 True。
True and True # ==> True True and False # ==> False False and True # ==> False False and False # ==> False
或运算 or
只要有一个布尔值为 True,计算结果就是 True。
True or True # ==> True True or False # ==> True False or True # ==> True False or False # ==> False
非运算 not
把True变为False,或者把False变为True:
not True # ==> False not False # ==> True
在Python中,布尔类型还可以与其他数据类型(字符串,数字等)做 and、or和not运算,请看下面的代码:
a = True print(a and 0 or 99) # ==> 99
因为Python把0、空字符串和None看成False,其他数值和非空字符串都看成True,所以:
True and 0
计算结果是0
继续计算0 or 99
计算结果是 99
因此,结果是99。
需要注意的是,not计算的优先级是高于and和or的。True and not False # ==> True
在上述布尔计算中,先计算
not False = True
,然后再计算True and True
,因此得到True的结果。短路计算
在计算
a and b
时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。在计算
a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
查看全部 -
3-3 Python的整数与浮点数
取模运算
Python数字支持取模运算,使用百分号
%
表示取模。print(3 % 2) # ==> 1 print(33 % 10) # ==> 3 print(99 % 30) # ==> 9
地板除
Python除了普通除法以外,还有一个特殊的除法被称为
地板除
,对于地板除
,得到的结果会忽略纯小数的部分,得到整数的部分,地板除使用//
进行。10//4 # ==> 2 10//2.5 # ==> 4.0 10//3 # ==> 3
小数点位数
使用Python计算小数的时候,经常需要保留小数点后若干位,可以使用round()函数来处理,这里先了解round的调用方式,使用两个参数,第一个是需要保留小数点位数的数值,第二个是保留的位数。
num = 10 / 3 print(num) # ==> 3.3333333333333335 # 使用round保留两位小数 round(num, 2) # ==> 3.33
查看全部 -
def info(**kwargs):
names = kwargs['names']
gender_list = kwargs['gender']
age_list = kwargs['age']
index = 0
for name in names:
gender = gender_list[index]
age = age_list[index]
print('name: {}, gender: {}, age: {}'.format(name, gender, age))
index += 1
info(names = ['Alice', 'Bob', 'Candy'], gender = ['girl', 'boy', 'girl'], age = [16, 17, 15])
查看全部 -
对于一个拥有必需参数,默认参数,可变参数,可变关键字参数的函数,定义顺序是这样的:
def func(param1, param2, param3 = None, *args, **kwargs): print(param1) print(param2) print(param3) print(args) print(kwargs) func(100, 200, 300, 400, 500, name = 'Alice', score = 100) # ==> 100 # ==> 200 # ==> 300 # ==> (400, 500) # ==> {'name': 'Alice', 'score': 100}
当然,这么多类型的参数,很容易导致出错,在实际使用上,不建议定义这么多的参数。
查看全部 -
请问这段代码为什么执行不了
def average(*args): sum = 0 if len(args) == 0: return 0 elif isinstance(args, str): return "传入变量为文本,无法计算平均值,请重新上传" else: for item in args: sum += item avg = sum / len(args) return avg print(average()) print(average("a", "b")) print(average(1, 21)) print(average(1.5, 3.5, 5, 5)) 执行这段代码的时候为什么没有进行这段的校验呢?
elif isinstance(args, str): return "传入变量为文本,无法计算平均值,请重新上传"
2020-08-31源自:Python3 入门教程 2020全新版 9-779 浏览2 回答
最佳回答
2020-09-01
你输入
print(average("a", "b"))
它会当作数组类型,而不是字符串,变成一个字符串应该就对了。
+2积分什么是积分?
举报 回复 1
# -*- coding: UTF-8 -*-
def average(*args):
sum = 0
if len(args) == 0:
return 0
else:
for i in args:
if isinstance(i,(int,float)):
sum += i
avg = sum / len(args)
else:
return"传入变量为文本,无法计算平均值,请重新上传"
return avg
我是根据你的这样改的,就OK了
查看全部 -
def average(*args):
sum = 0.0
if len(args)==0:
return sum
for item in args:
sum += item
avg = sum / len(args)
return avg
print(average(1,2,3,5,7,9))
赋的初始值可以影响数据类型。注意分析需要的数据类型并准确定义,否则结果会出差错。范围大一点也不要小了。
查看全部 -
这个为什么输出结果是1,跟示例的结果1.5输出不一致
# Enter a code
def average(*args):
lenth = len(args)
if lenth == 0 :
return 0;
else:
sum = 0
for item in args:
sum += item
avg = sum / lenth
return avg
print(average())
print(average(1,2))
快来回答问题,最佳答案可 +2积分 什么是积分?
2020-09-24源自:Python3 入门教程 2020全新版 9-774 浏览2 回答
sum = 0.0就行了
2020-09-26
举报 回复 2
已经解决了,
# Enter a code
def average(*args):
lenth = len(args)
if lenth == 0 :
return 0;
else:
sum = 0
for item in args:
sum += item
avg = float(sum) /float( lenth) #将两个数字转为float就不丢失小数部分
return avg
print(average())
print(average(1,2))
查看全部 -
除了默认参数,Python函数还接收一种参数叫做可变参数,可变参数即任意个参数的意思,可变参数通常使用
*args
来表示。def func(*args): print('args length = {}, args = {}'.format(len(args), args)) func('a') # ==> args length = 1, args = ('a',) func('a', 'b') # ==> args length = 2, args = ('a', 'b') func('a', 'b', 'c') # ==> args length = 3, args = ('a', 'b', 'c')
注意,在使用上,Python会把可变参数定义为一个tuple,所以在函数内部,把可变参数当作tuple来使用就可以了,比如可以通过位置下标取出对应的元素等。
定义可变参数的目的也是为了简化调用。假设我们要计算任意个数的平均值,就可以定义一个可变参数:def average(*args): sum = 0 for item in args: sum += item avg = sum / len(args) return avg
这样,在调用的时候,我们就可以这样写:
average(1, 2) # ==> 1.5 average(1, 2, 2, 3, 4) # ==> 2.4 average() # 报错 Traceback (most recent call last): ZeroDivisionError: division by zero
在执行
average()
的时候,却报错了,这是因为在使用可变参数时,没有考虑周全导致的,因为可变参数的长度可能是0,当长度为0的时候,就会出现除0错误。因此需要添加保护的逻辑,这是同学在使用过程中需要特别注意的。查看全部 -
def greet(name='world'):
print ('Hello, ' + name + '.')
greet()
greet('Alice')
查看全部 -
power( )本身就是个冥函数
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
print(power(2,3))
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
查看全部 -
由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面,否则将会出现错误。
查看全部 -
# Enter a code
# coding: utf-8
def func(param):
if isinstance(param, list):
result = 0
for item in param:
if isinstance(item, int) or isinstance(item, float):
result += item
return result
elif isinstance(param, tuple):
result = 1
for item in param:
if isinstance(item, int) or isinstance(item, float):
result *= item
return result
return None
print(func([1,2,3,5,9]))
print(func((1,2,3,5,9)))
print(func('持续努力吧'))
查看全部
举报