1.輸入一個字符串,打印所有偶數位上的字符(下標是0,2,4,6...位上的字符)
# 練習題1:輸入一個字符串,打印所有偶數位上的字符(下標是0,2,4,6...位上的字符)
# 1.鍵盤錄入字符串,并接收.
s1=input('請輸入一個字符串:')
# 2. 通過for循環,獲取字符串中每個字符的索引。
for i in range(len(s1)):
#3.判斷當前的索引值是否是偶數,如果是,就輸出該字符。if i%2==0:print(s1[i])
#簡化版:
for i in range(0,len(s1),2):print(s1[i])
print(s1[::2])
2:給定一個文件名,判斷其尾部是否以".png"結尾
思路1.rfind()??子串在字符串中最后一次出現的位置
思路2.字符串切片
細節:兩種極端情況
? 1)abc.txt.png.xlsx.png,所以不能直接用find
??2)文件名為'.png',在某些項目開發中為非法的文件名,所以要判斷字符串長度是否大于4
?思路1.
#1.定義變量,記錄文件名
file_name='abc.png.txt.png'
file_name='.png'
# 思路1.rfind() 子串在字符串中最后一次出現的位置 abc.png.txx.png
#細節:考慮直接寫.png這種情況,它不是合法的文件名
if file_name.rfind('.png')==len(file_name)-4 and len(file_name)>4:print(f'文件名{file_name}是以.png結尾的')
else:print(f'文件名{file_name}不是以.png結尾的')
思路2.
file_name='.png'
#思路2.切片實現
if file_name[-4:]=='.png' and len(file_name)>4:print(f'文件名{file_name}是以.png結尾的')
else:print(f'文件名{file_name}不是以.png結尾的')
print('-'*40)
3.模擬用戶登錄,只給3次機會
#1.定義變量,記錄正確的賬號和密碼,注意:這里只是模擬,實際開發中,這樣的數據是存儲在數據庫中的。
user_name,password='adm01','pwd111'
#2.因為不知道用戶多少次能錄入正確,用循環,因為次數固定,所以用for循環
for i in range(3):#3.提示用戶錄入賬號、密碼,并接收user_input=input("請輸入您的賬號:")pwd_input=input("請輸入您的密碼:")#4. 判斷是否登錄成功if user_input==user_name and password==pwd_input:print(f'登錄成功,歡迎您:{user_name}')breakelse:# #走這里,說明登錄失敗,判斷是否還有試錯機會# if i==2:# print('賬號或密碼錄入錯誤次數已達上限,請與管理員聯系!')# else:# print(f'賬號或密碼錯誤,您還有{2-i}次機會,請重新錄入!')print('賬號或密碼錄入錯誤次數已達上限,請與管理員聯系!' if i==2 else f'賬號或密碼錯誤,您還有{2-i}次機會,請重新錄入!')
4.字符串反轉3種實現方法
需求:鍵盤錄入一個字符串,對其內容進行反轉,并打印結果。
思路1.切片
#1.提示用戶錄入字符串,并接受
s1=input('請輸入一個字符串:')
#思路1.使用切片
s2=s1[::-1]
print(f'反轉后的字符串為:{s2}')
思路2.把字符串轉成列表,然后交換列表交換 列表 可變數據類型,交換次數為列表總長的一半,首尾交換,索引i和列表長度-i交換。
單變量
如圖所示,核心就是將索引為i和len(s)-1-i的兩個元素進行交換,長度為len(s)//2
若len(s)為奇數,則中位數的元素不動,其它的元素全部交換一遍;
若len(s)為偶數,則所有的元素全部首尾交換一遍
#思路2.把字符串轉成列表,然后交換列表交換 列表 可變數據類型,交換次數為列表總長的一半,首尾交換,索引i和列表長度-i交換
list1=list(s1)
n=len(list1)
for i in range(n//2):list1[i],list1[n-1-i]=list1[n-1-i],list1[i]
# s2=str(list1)
s3=''.join(list1)
print(f'反轉后的字符串為:{s3}')
思路3.把字符串轉成列表,然后交換列表交換 完成列表首尾交換,即start和end交換
引入雙變量,對應的start和end,start向后移動,end向前移動,直到start>=end時,跳出循環
#思路3.把字符串轉成列表,然后交換列表交換 完成列表首尾交換,即start和end交換
list2=list(s1)
i=0
j=len(list2)-1
while i<j:list2[i],list2[j]=list2[j],list2[i]i=i+1j=j-1
s4=''.join(list2)
#打印反轉后的結果
print(f'反轉后的字符串為:{s4}')