Pycharm(十一):字符串練習題

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}')

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75447.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75447.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75447.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

虛幻5入門

常用操作 運行時&#xff0c;調試相機&#xff0c;按~鍵&#xff0c;輸入ToggleDebugCamera 。進入自由視角 常用節點 gate節點&#xff1a;用于控制該流程通不通&#xff0c;執不執行。Flip Flop節點&#xff1a;反轉執行&#xff0c;一次A&#xff0c;一次B。Set Timer by…

Prompt Flow 與 DSPy:大型語言模型開發的未來

作為一名大模型算法工程師&#xff0c;我一直在探索如何更高效地開發和優化基于大型語言模型&#xff08;LLM&#xff09;的應用程序。隨著模型規模的不斷擴大和應用場景的日益復雜&#xff0c;傳統的開發方式已經難以滿足高效、靈活和可擴展的需求。幸運的是&#xff0c;Promp…

Prompt攻擊是什么

什么是Prompt攻擊 Prompt攻擊(Prompt Injection/Attack) 是指通過精心構造的輸入提示(Prompt),誘導大語言模型(LLM)突破預設安全限制、泄露敏感信息或執行惡意操作的攻擊行為。其本質是利用模型對自然語言的理解漏洞,通過語義欺騙繞過防護機制。 Prompt攻擊的精髓:學…

Python 數據類型 - 集合(set)

Python 數據類型 - 集合(set) 1. 集合簡介 集合(set)是Python中的一種無序、可變、不重復元素的容器數據類型。集合的主要用途&#xff1a; 快速成員檢測&#xff08;判斷元素是否存在&#xff09;去除重復項執行數學集合運算&#xff08;并集、交集、差集等&#xff09; 2.…

Profibus DP主站轉Modbus TCP網關配置文件制作

Profibus DP主站轉Modbus TCP網關配置文件制作 1、首先打開配置文件制作軟件SST Profibus Configuration&#xff1a; 2、點擊“Library”選擇GSD文件所在文件夾找到后點擊打開導入GSD文件: 3、點開Masters、molex選擇主站設備&#xff1a; 4、雙擊添加后地址保存默認0就可以&…

如何批量拆分Excel工作表或按行拆分Excel表格 - Excel拆分器使用方法

在數據分析和處理的日常工作中&#xff0c;Excel文件因其強大的數據管理和計算能力而廣受歡迎。然而&#xff0c;當面對龐大的Excel工作簿&#xff0c;特別是需要將其拆分為多個獨立文件時&#xff0c;傳統的操作方法往往會顯得繁瑣且效率低下。為了解決這一難題&#xff0c;Ex…

JavaScript基礎-移動端常見特效

隨著移動互聯網的發展&#xff0c;為移動設備優化的網頁變得越來越重要。JavaScript在實現移動端特有的交互體驗中扮演著關鍵角色。本文將介紹幾種常見的移動端特效&#xff0c;并通過具體的代碼示例展示如何使用JavaScript和相關技術來創建這些特效。 一、手勢識別 &#xf…

ui-tars和omni-parser使用

ui-tars部署和訓練 說明快速開始環境準備ui-tars web推理和訓練ui-tars api部署omni-parser使用 說明 鏡像中包含ui-tars、llama-factory和omni-parser。該鏡像還在審批中&#xff0c;估計明天可以上線&#xff0c;到時候可以在auto-dl中的社區鏡像搜索。 快速開始 使用auto…

TF-IDF——自然語言處理——紅樓夢案例

目錄 一、紅樓夢數據分析 &#xff08;1&#xff09;紅樓夢源文件 &#xff08;2&#xff09;數據預處理——分卷實現思路 &#xff08;3&#xff09;分卷代碼 二、分卷處理&#xff0c;刪除停用詞&#xff0c;將文章轉換為標準格式 1.實現的思路及細節 2.代碼實現&#…

【NLP 面經 5】

難以承受的東西只會讓我在下一次更平靜的面對 —— 25.4.2 一、NER任務&#xff0c;CRF模型改進 命名實體識別&#xff08;NER&#xff09;任務中&#xff0c;你使用基于條件隨機場&#xff08;CRF&#xff09;的模型&#xff0c;然而模型在識別嵌套實體和重疊實體時效果不佳&a…

機器學習之回歸算法

《數據挖掘技術與應用》 【實驗名稱】 實驗&#xff1a;回歸算法 【實驗目的】 1.了解回歸算法理論基礎 2.平臺實現算法 3. 編程實現分類算法 【實驗原理】 線性回歸是利用數理統計中回歸分析&#xff0c;來確定兩種或兩種以上變量間相互依賴的定量關系的一種統計分析方法&…

Cline源碼分析

Cline源碼分析 --- vscode插件開發與cline的界面系統 vscode插件開發基礎知識開發基礎?核心概念核心API調試與發布調試 學習路線React開發界面前端代碼分析package.jsonview/title&#xff08;視圖標題欄菜單&#xff09;?editor/title&#xff08;編輯器標題欄菜單&#xff…

k8s EmptyDir(空目錄)詳解

1. 定義與特性 emptyDir 是 Kubernetes 中一種臨時存儲卷類型&#xff0c;其生命周期與 Pod 完全綁定。當 Pod 被創建時&#xff0c;emptyDir 會在節點上生成一個空目錄&#xff1b;當 Pod 被刪除時&#xff0c;該目錄及其數據會被永久清除。它主要用于同一 Pod 內多個容器間的…

【idea】實用插件

SonarLint SonarLint&#xff1a;代碼質量掃描工具 使用 SonarLint 可以幫助我們發現代碼的問題,并且還提供了相應的解決方案. 對于每一個問題&#xff0c;SonarLint 都給出了示例&#xff0c;還有相應的解決方案&#xff0c;教我們怎么修改&#xff0c;極大的方便了我們的開發…

【mysql 的安裝及使用】

MySQL 9.0 一、下載MySQL[MySQL 9.0 下載] [(https://dev.mysql.com/downloads/mysql/)選擇自定義,選擇合適安裝路徑二、檢查安裝情況配置環境變量打開命令行查看版本創建數據庫在MySQL中,可以使用create database語句來創建數據庫。以下是創建一個名為my_db的數據庫的示例:…

leetcode118.楊輝三角

思路源自 【LeetCode 每日一題】118. 楊輝三角 | 手寫圖解版思路 代碼講解 class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> result new ArrayList<>();for (int i 0; i < numRows; i) {List<…

【git】git pull 和 git rebase

git pull 和 git rebase 都是 Git 中用于同步代碼的命令&#xff0c;但它們的工作方式和適用場景有顯著區別。以下是兩者的詳細對比&#xff1a; 1. 核心區別 特性git pullgit rebase本質git fetch git merge&#xff08;默認&#xff09;將當前分支的提交“重新播放”到目標…

DIY搭建網站(學術個人介紹主頁)

本教程介紹了如何創建并管理一個基于GitHub Pages的個人網站。首先&#xff0c;需要在GitHub上創建一個遵循特定命名規則的新倉庫&#xff0c;例如用戶名.github.io&#xff0c;以便建立個人站點。接著&#xff0c;通過Fork一個開源模板代碼倉庫并添加index.html文件來構建主頁…

數據結構初階:二叉樹的前中后序三種遍歷(遞歸的暴力美學)

想要實現二叉樹的遍歷可以創建一個鏈式結構的二叉樹 回顧一下二叉樹的概念&#xff0c;二叉樹分為空樹和非空二叉樹&#xff0c;非空二叉樹由根節點、根節點的左子樹和根節點的右子樹組成。 typedef char BTDataType; // 數據類型 typedef struct BinaryTreeNode {B…

WebUI問題總結

修改WebUI代碼時遇到的一些問題以及解決辦法 1. thttpd服務器環境的搭建 可參考《thttpd安裝與啟動流程》這一篇文章 其中遇到的問題有 thttpd版本問題&#xff1a;版本過舊會導致安裝失敗&#xff0c;盡量安裝新版本thttpd的啟動命令失敗的話要加上sudo修改文件權限&#…