亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 循環中查找第一個數字索引?

在 Python 循環中查找第一個數字索引?

達令說 2021-07-09 14:15:46
found = Falseposition = 0while not found and position < len(inputString):    if inputString[position].isdigit():        found = True    else:        position += 1if found:    print('first digit is at position', position)else:    print('There are no digits in the string')這是我發現的一個簡單程序,用于查找輸入字符串中的第一個數字。我無法理解的事情是......if inputString[position].isdigit():     found = True這個表達式究竟說明了什么,特別是inputString[position]部分。我們是否在尋找第一個數字的位置/索引值,然后將循環分解為下面的打印語句?
查看完整描述

3 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

我們是否在尋找第一個數字的位置/索引值,然后將循環分解為下面的打印語句?


是的,這是真的。它會中斷,因為一旦找到一個數字,在下一次迭代while not found條件中就會給出while False和中斷while循環。值得注意的是and短路,因此甚至不評估第二個條件。


如果未找到數字,則position遞增直至等于len(inputString),此時while循環通過第二個條件即 中斷position < len(inputString)。


編寫while循環的一種更 Pythonic / 慣用的方法是通過for循環和enumerate:


for idx, val in enumerate(inputString, 1):

    if val.isdigit():

        position = idx

        break

else:

    position = 0


if position:

    print('first digit is at position', position)

else:

    print('There are no digits in the string')

注意,在這個解決方案中,由于我們從 1 開始計數,我們可以利用這樣一個事實,如果找到一個數字,它必須是“Truthy”,即非零。因此,我們不需要額外的found變量。


查看完整回答
反對 回復 2021-07-21
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

position是您的迭代變量,就像在for循環中一樣。因此,每次找不到數字時,都會轉到字符串中的下一個字符。

TheinputString[position]讀取什么代表position's 在字符串中的位置。所以,如果你的字符串abcdefg,然后inputString[2]= c(不是b因為Python從0開始計數)。

.isdigit()隨后看,如果在此位置是一個數字。如果是數字,則found = Truewhile循環停止。(否則它繼續。)

循環結束后,該函數會根據 .csv 文件中是否有數字來打印兩條消息之一inputString。


查看完整回答
反對 回復 2021-07-21
?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

您正在尋找inputString位置的 值,position。position首先初始化為零,然后while循環每個位置(注意position += 1)以查看它是否.isdigit().


查看完整回答
反對 回復 2021-07-21
  • 3 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號