-
面試問題:
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('持續努力吧'))
查看全部
舉報