標籤:ali range isa 猴子吃桃 索引值 利用 def cap pre
可變的資料類型:list, dict, set (可修改其中的元素)
不可變的資料類型:str, tuple
重點:str, list, dict
列表推導式習題:
# 利用列表推導式: 找出100以內所有奇數,並將所有奇數乘以3,寫入列表。li = [i * 3 for i in range(1, 101) if i % 2 != 0]print(li)li = [i * 3 for i in range(1, 101, 2)]print(li)
遞迴的使用:(經典的猴子吃桃演算法)
"""猴子第一天摘下N個桃子,當時就吃了一半,還不過癮,就又多吃了一個。第二天又將剩下的桃子吃掉一半,又多吃了一個。以後每天都吃前一天剩下的一半零一個。到第10天在想吃的時候就剩一個桃子了,問:第一天共摘下來多少個桃子?""""""先進行分析:第n天: 10 9 8 7剩(個): 1 (1+1)*2=4 (4+1)*2=10 (10+1)*2=22"""def peachs(n): if n == 10: return 1 else: return (peachs(n + 1) + 1) * 2print(peachs(1))
沒理解遞迴的話,看下面這個方案:
n = 1 # 天x = 1 # 桃子幾個while n < 10: # 第9天發現只剩了一個 x = (x + 1) * 2 n += 1print(x)
‘‘‘定義一個函數:統計傳入的字串裡,英文字母、空格、數字和其他字元分別出現次數,並作為一個字典返回 {‘字母‘: ,‘空格‘: ,‘數字‘: ,‘其他字元:‘ }‘‘‘def count_types(s): # 先定義一個字典 dict = {"字母": 0, "空格": 0, "數字": 0, "其他字元": 0} # 遍曆取出字串中每個值 for i in s: if i.isalpha(): dict["字母"] += 1 # 索引值訪問,直接自加 elif i.isspace(): dict["空格"] += 1 elif i.isdigit(): dict["數字"] += 1 else: dict["其他字元"]+=1 return dictprint(count_types("jing tian 520.1314!"))
"""請定義一個名為titles的函數: 1.接收一句英文(字串)作為參數 2.將這個英文的每個單詞轉換成有且只有首字母大寫的形式 3.返迴轉換後的英文句 4.str.title具有這個功能,但在此題不可使用str.title 例如:>>> titles(‘this is python.‘)‘This Is Python.‘>>> titles(‘i love python‘)‘I Love Python‘"""# 利用列表推導式+lambda函數 一行代碼搞定
# 可讀性差,盡量避免寫(但我個人比較喜歡這樣,感覺眼前一亮,豁然開朗)s1 = "this is python."s2 = " i love jing tian "g = lambda s: " ".join([i.capitalize() for i in s.split()])print(g(s1))print(g(s2))
Python基礎的一些習題