python第二周day5
python第二周day5(9.27)
1、day9字符串作業更改版
# *1.1輸入一個字符串,打印所有奇數位上的字符(下標是1,3,5,7…位上的字符) # 例如: 輸入**'abcd1234 ' ** 輸出**'bd24'** # 切片 str1 = 'abcd1234' print(str1[1::2]) # bd24 # 2.1輸入用戶名,判斷用戶名是否合法(用戶名長度6~10位) # str2 = input('請輸入一個用戶名:') # if 6 <= len(str2) <= 10: # print('用戶名合法') # else: # print('用戶名不合法') # 請輸入一個用戶名:陳來 # 3.1 **輸入用戶名,判斷用戶名是否合法(用戶名中只能由數字和字母組成)(經常遇到) # user_name = input('請輸入一個用戶名:') # for x in user_name: # if not ('0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'): # print('用戶名不合法') # break # else: # print('用戶名合法') # 4.1 ***輸入用戶名,判斷用戶名是否合法(用戶名必須包含且只能包含數字和字母,并且第一個字符必須是大寫字母) user_name = input('請輸入一個用戶名:') if 'A' <= user_name[0] <= 'Z':# 保存數字字符的個數count = 0for x in user_name[1:]:if not ('0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'):print('用戶名不合法')breakelse:if '0' <= x <= '9':count += 1else:if count: # count !=0 一樣print('用戶名合法')else:print('用戶名不合法') else:print('用戶名不合法') # 練習5:輸入一個字符串,將字符串中所有的數字字符取出來產生一個新的字符串 str3 = 'abc1shj23kls99+2kkk' new_str3 = '' for x in str3:if '0' <= x <= '9':new_str3 += x print(new_str3) #123992 # 練習6:輸入一個字符串,將字符串中所有的小寫字母變成對應的大寫字母輸出 (用upper方法和自己寫算法兩種方式實現) str1 = 'a2h2klm12+' # 方法一 # 規律:小寫字母轉大寫字母:小寫字母的編碼值 - 32 --> 轉換成字符 new_str1 = '' for x in str1:if 'a' <= x <= 'z':new_str1 += chr(ord(x)-32) # ord(字符) ,chr(編碼值)else:new_str1 += x print(new_str1) # A2H2KLM12+ # a:97 A:65 b:98 B:66 # 方法二 # 字符串.upper() - 將字符串中所有的小寫字母轉換成對應的大寫字母,產生一個新的字符串 # lower 大寫轉小寫 new_str1 = str1.upper() print(new_str1) # A2H2KLM12+ # **練習7:輸入一個小于1000的數字,產生對應的學號(簡單做法,運用+,*) # 輸入 ** '23' **,輸出 ** 'py1901023' ** 輸入 ** '9' **, 輸出 ** 'py1901009' ** 輸入 ** '123' **,輸出 ** 'py1901123' ** # 23 -> 023 9 -> 009 123 -> 123 num = '23' study_id = 'py1901' + (3-len(num))*'0'+num print(study_id) # 'py1901 # 練習8.1 輸入一個字符串,統計字符串中非數字字母的字符的個數 # str1 = input('請輸入一個字符串:') str1 = 'anc2+93-sj胡說' count = 0 for x in str1:if not ('0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z'):count += 1 print(count) # 4 # 練習9:輸入字符串,將字符串的開頭和結尾變成'+',產生一個新的字符串 # 例如: 輸入字符串**'abc123'**, 輸出**'+bc12+ str1 = input('請輸入一個字符串:') new_str1 = '+'+str1[1:-1]+'+' print(new_str1) # +bc12+ # 練習10.1. ***輸入字符串,獲取字符串的中間字符 # 例如: 輸入**'abc1234'** 輸出:**'1'** 輸入**'abc123'** 輸出**'c1'** str1 = 'abc1234c' count = len(str1) if count % 2:print(str1[count//2]) else:print(str1[count//2 - 1:count // 2 +1]) # 12 # **練習11:11. **寫程序實現字符串函數find/index的功能(獲取字符串1中字符串2第一次出現的位置) # 例如: 字符串1為:**how are you? Im fine, Thank you!** , 字符串2為:**you**, 打印**8** str1 = 'how are you? Im fine, Thank you!' str2 = 'you' len1 = len(str1) len2 = len(str2) for index in range(len1-len2 + 1): # *8取到最后三位if str1[index: index + len2] == str2: # **切片每次獲得三個元素print(index)break else:print('找不到') # 12.獲取兩個字符串中公共的字符 # 例如: 字符串1為:**abc123**, 字符串2為: **huak3** , 打印:**公共字符有:a3** str1 = 'abc123' str2 = 'huak3' result = set(str1) & set(str2) # 使用集合的交集 & print(''.join(result)) # 使用join方法直接轉 new_str1 = '' for x in result:new_str1 += x print(new_str1)2、r語法
1.r語法(阻止轉義)
在字符串的最前面加r或者R,可以讓字符串中所有的轉義字符的功能消失(每個符號都會變成普通字符)
str1 = r'C:\users\name\test\demo.py' str1 = R'C:\users\name\test\demo.py' str2 = 'C:\\users\\name\\test\demo.py' print(str1)3、字符串格式化
# name = input('請輸入姓名:') # age = int(input('請輸入年齡:')) # message = 'xxx今年xx歲' name = '小新' age = 17 # 方法一:字符串拼接 message = name +'今年'+str(age)+'歲' print(message) # chenlai今年12歲# 方法二:格式字符串 message = '%s今年%d歲' % (name, age) print(message)# 方法三:f-string message = f'{name}今年{age}歲!' print(message)1.格式字符串
“”"
語法:包含格式占位符的字符串 % (數據1,數據2,…)
%s->字符串 %d->整數
格式占位符:
%s - 字符串占位符(任何類型占位,不確定時可以使用)
%d - 整數占位符
%f - 浮點數占位符(保存6位小數)
%.Nf - 浮點數保留N位小數
1)%s可以給任何類型的數據占位(如果只有一個數據可以省略括號)
str1 = '%sxxx' % ('陳來') str1 = '%sxxx' % '陳來' str2= '%sxxx' % (123) str2= '%sxxx' % ([12, 11]) print(str1, str2)2)%d 可以給任何能轉換成數字數據占位
str1 = '%d-xxx' % 12 str1 = '%d-xxx' % 12.5 print(str1)3)%f 可以給任何能轉換成數字數據占位
str2 = '%f-xxx' % 4.34 print(str2) #4.340000-xxx str1 = '余額:%.2f' % 78.9908099 print(str1) # 余額:78.99str1 = '%s今年%d歲,月薪:%.2f元' % (name, age, 10000+2300) # 只要不是賦值語句就可以 print(str1) # 小新今年17歲,月薪:12300.00元 str2 = '%s嘉年是%d年,總收入額達到%3.f' % ('某某公司',12,123.89) print(str2)2.f-string
“”"
1)基本用法
語法:f’{任何有結果的表達式}’ - 用表達式的結果來填充{}所在的位置
2)加參數
語法:f’{任何有結果的表達式:參數}’
參數:
.Nf — 控制小數位數
, — 逗號分隔銀行金額的格式,數字三位之間用逗號隔開(金額)
.N% — 將數轉換成百分比,比值保留N位小數
X>N — 將數據轉換成長度為N的字符串,不夠在前面用X對應的字符來填充
X<N — 將數據轉換成長度為N的字符串,不夠在后面用X對應的字符來填充
解釋:
,< - 決定填充的時候填在前面還是后面
X - 填充字符
N - 目標長度
“”"
1)基本用法
str1 = f'收到你請講' str1 = f'{name}收到你請講' str1 = '{name}收到你請講' str1 = f'{name}-{age}-{age*10}-{name[-1]}' # 小新-17-170-新。f'{里面是有結果的表達式}' print(str1) str1 = f'{age- 10}是多少歲呢,{name}' print(str1)2)參數
a…Nf
money = 2305 str1 = f'金額:{money:.2f}' print(str1) # 金額:2305.00b. ,
money = 2345000 str1 = f'余額:{money:,}' print(str1) # 2,345,000.三位之間用逗號隔開c. .N%
rate = 0.5 str1 = f'市場占有率:{rate:.2%}' print(str1)d.X>N X<N 放前面,添幾位,不夠的加什么x :
,< - 決定填充的時候填在前面還是后面
X - 填充字符
N - 目標長度
4、字符串相關方法
所有的關于字符串的相關方法看一下
菜鳥教程 - python字符串(網址) https://www.runoob.com/python3/python3-string.html
1、center,rjust,ljust,zfill
“”"
字符串.center(長度,填充字符),例如:‘abc’.center(7,‘x’)->‘xxabcxx’
字符串.rjust(長度,填充字符),例如:‘abc’.rjust(7,‘x’)->‘xxxxabc’
字符串.ljust(長度,填充字符),例如:‘abc’.ljust(7,‘x’)->‘abcxxxx’
字符串.zfill(長度)==字符串.rjust(長度,‘0’),例如:‘abc’.zfill(7)->‘0000abc’
“”"
print('abc'.center(7,'x')) # xxabcxx print('abc'.zfill(7)) # 0000abc2.count
“”"
字符串1.count(字符串2) - 統計字符串1中字符串2出現的次數
字符串1.count(字符串2,開始下標,結束下標) - 在開始下標到結束下標(取不到)對應的范圍內容統計字符串2出現的次數
“”"
3.find,index
“”"
字符串1.find(字符串2) - 獲取字符串1中字符串2第一次出現的位置,返回0開始的下標值;如果字符串2不存在,返回-1
字符串1.index(字符串2) - 獲取字符串1中字符串2第一次出現的位置,返回0開始的下標值;如果字符串2不存在,報錯
字符串1.find(字符串2,開始下標,結束下標),字符串1.index(字符串2,開始下標,結束下標)
“”"
4.isdigit,isnumeric
“”"
字符串.isdigit() - 判斷是否是純數字字符串(數字指0~9的數字字符)
字符串.isnumeric() - 判斷是否是純數字字符串(單個數字指具有數字意義的字符)
“”"
*5.islower,isupper
“”"
字符串1.islower() - 判斷字符串是否是純小寫字母字符串
字符.islower() - 判斷是否是小寫字母
字符串1.isupper() - 判斷字符串是否是純大寫字母字符串
字符.isupper() - 判斷是否是大寫字母
“”"
**6.join
“”"
字符串.join(序列) - 將序列中的元素用指定的字符串拼接成一個新的字符串
注意:序列中的元素必須是字符串
“”"
7.strip, lstrip, rstrip
“”"
字符串.strip() - 去掉字符串兩端的空白字符
字符串.lstrip() - 去掉字符串前面的空白
字符串.rstrip() - 去掉字符串后面的空白
“”"
8.replace
“”"
字符串1.replace(字符串2,字符串3) - 將字符串1中所有的字符串2替換成字符串3
字符串1.replace(字符串2,字符串3, N) - 替換前N個
“”"
9.maketrans,translate
“”"
str.maketrans(字符串1,字符串2) - 創建一張字符串1和字符串2的字符對應表
字符串.translate(表)
“”"
11.split
“”"
字符串1.split(字符串2) - 將字符串1中所有的字符串2作為切割點對字符串進行切割
“”
5、函數的價值
nums = [29, 10, 12, 18, 23] print(max(nums))6、認識函數和定義函數
1.認識函數
“”"
系統函數(系統造好的機器) - 由Python創建好的函數,例如:print,input,type,max,min,id等
自定義函數(自己造機器) - 由程序員自己創建的函數
“”"
def func():
print(’======’)
print(’++++++’)
print(’------’)
func()
func()
func()
2.定義和函數(創建函數)
“”"
語法:
def 函數名(形參列表):
函數說明文檔
函數體
說明:
a.def - 關鍵字;固定寫法
b.函數名 - 由程序員自己命名
要求:是標識符;不能是關鍵字
規范:見名知義(看到函數名大概知道這個函數的功能是什么);
所有的字母都小寫,多個單詞之間用下劃線隔開;
不使用系統的函數名,類名和模塊名
c. () - 固定寫法
d.形參列表 - 以’變量名1,變量名2,變量名3,。。。‘格式存在。
這兒的每一個變量就是一個形參,如果不需要形參,括號里什么都不用寫
形參是用來將函數外部的數據傳遞到函數內部。(可以理解成連接函數外部和內部的通道)
需不需要形參就看實現函數的功能需不需要額外的數據
e. : - 固定寫法
f. 函數說明文檔 - 本質就是文檔注釋’’’’’’,""""""
g. 函數體 - 和def保持一個縮進的一條或者多條語句;
函數體就是實現函數功能的代碼
“”"
# 練習1:定義一個函數,求任意兩個數的和 def sum2(num1, num2):print(num1 + num2)# 練習2:定義一個函數,求N的階乘 # N! = 1*2*3*...*N def factorial(n):result = 1for x in range(1, n+1):result *= xprint(result)總結
以上是生活随笔為你收集整理的python第二周day5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 失物招领小程序_上线了!| 失物招领平台
- 下一篇: 超级电容与锂电池的比较