第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python“并非所有參數(shù)在字符串格式化期間都被轉(zhuǎn)換”

Python“并非所有參數(shù)在字符串格式化期間都被轉(zhuǎn)換”

夢(mèng)里花落0921 2023-06-27 10:42:10
我正在使用 Python,但由于“字符串格式”錯(cuò)誤而遇到麻煩。x = int(input())x_list = ' '.join(str(x)).split()for i in range(len(x_list)):    if x_list[i] % 2 == 0  and x_list[i+1] % 2 == 0 :        x_list.insert(i+1,'*')x_list是我制作的任意列表,錯(cuò)誤發(fā)生在第4行。我認(rèn)為錯(cuò)誤是由于“%”而發(fā)生的,我想用它來計(jì)算余數(shù)。我怎么解決這個(gè)問題?
查看完整描述

5 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

您遇到了字符串格式化問題,因?yàn)槟趯⒆址?'*' 插入到您已經(jīng)迭代的列表中,位于 i 的下一個(gè)索引處。您不能讓字符串執(zhí)行模運(yùn)算。不完全確定你想在那里做什么,但你看到的是正常行為。


此外,按照您的代碼當(dāng)前的工作方式,您將無法達(dá)到原始列表中的所有整數(shù)。


編輯:回應(yīng)您的編輯:


x_list = ' '.join(str(x)).split()

for i in range(len(x_list)):

    if x_list[i] != '*':

        if (int(x_list[i]) % 2 == 0)  and (int(x_list[i+1]) % 2 == 0):

            x_list.insert(i+1,'*')

只需將字符串更改為 int 并檢查 i 處的值是否為“*”


查看完整回答
反對(duì) 回復(fù) 2023-06-27
?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

警告說明

在循環(huán)時(shí)修改列表并不是可取的。


一些解釋

發(fā)生的情況是,該行x_list[i] % 2被解釋為格式化字符串的指令,因?yàn)樽畛?code>x_list包含字符串。

%目前,在 Python 3 上,不推薦使用格式化。

緩解措施

注意:這解決了格式錯(cuò)誤,與功能相關(guān)的其他邏輯錯(cuò)誤可能仍然存在。

x = int('12234')

x_list = ' '.join(str(x)).split()

# Going from indices 0...(N-1) as we use (i+1) each iteration

for i in range(len(x_list)-1):

? ? # Validating current and next are not invalid char '*'

? ? if '*' in [x_list[i], x_list[i+1]]:

? ? ? ? continue

? ? if int(x_list[i])% 2 == 0? and int(x_list[i+1])% 2 == 0 :

? ? ? ? x_list.insert(i+1,'*')


# ['1', '2', '*', '2', '3', '4']

print(x_list)


查看完整回答
反對(duì) 回復(fù) 2023-06-27
?
慕雪6442864

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果您x_list包含字符串,那么您顯然無法計(jì)算該字符串除以 2 的余數(shù)。

另外,即使您x_list只包含數(shù)字,您也可能會(huì)遇到IndexError,因?yàn)樵谧詈笠淮蔚?code>x_list[i+1]可能超出范圍。

您還在循環(huán)遍歷同一列表時(shí)修改了該列表,這通常是不可取的。


查看完整回答
反對(duì) 回復(fù) 2023-06-27
?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

x = input()

x_list = ' '.join(str(x)).split()

for i in range(len(x_list)):

    try:

        if not(int(x_list[i]) % 2 and int(x_list[i+1]) % 2):

            x_list.insert(i+1,'*')

    except:

        continue


print(x_list)

嘗試一下這個(gè),它可能會(huì)起作用。我不知道輸出應(yīng)該是什么樣的“因?yàn)槟銢]有提到它”。但我嘗試輸入相同的代碼并進(jìn)行一些更改以避免錯(cuò)誤


查看完整回答
反對(duì) 回復(fù) 2023-06-27
?
斯蒂芬大帝

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

str您轉(zhuǎn)換為of chars 的方式list不正確,可以輕松地用list(string).?如果您想檢查所有字符是否為有效數(shù)字,您可以添加str.isdecimal().

您試圖修改正在迭代的列表,這也是一個(gè)錯(cuò)誤。修改循環(huán)內(nèi)的源代碼會(huì)破壞循環(huán)邏輯,因此某些元素可能會(huì)被處理多次或被跳過。

最后,您嘗試在 上應(yīng)用模(即數(shù)字運(yùn)算)str。為了讓它按您的預(yù)期工作,您應(yīng)該將 element 轉(zhuǎn)換為intusing?int(string)。

編輯后的代碼:

x = input()

if x.isdecimal():

? ? x_list = list(x)

? ? new_list = []

? ? for i in range(len(x_list) - 1):

? ? ? ? new_list.append(x_list[i])

? ? ? ? if not (int(x_list[i]) % 2 and int(x_list[i + 1]) % 2):

? ? ? ? ? ? new_list.append("*")


查看完整回答
反對(duì) 回復(fù) 2023-06-27
  • 5 回答
  • 0 關(guān)注
  • 260 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)