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

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

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

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

夢里花落0921 2023-06-27 10:42:10
我正在使用 Python,但由于“字符串格式”錯誤而遇到麻煩。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是我制作的任意列表,錯誤發(fā)生在第4行。我認為錯誤是由于“%”而發(fā)生的,我想用它來計算余數(shù)。我怎么解決這個問題?
查看完整描述

5 回答

?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

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


此外,按照您的代碼當前的工作方式,您將無法達到原始列表中的所有整數(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 處的值是否為“*”


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

TA貢獻2041條經(jīng)驗 獲得超4個贊

警告說明

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


一些解釋

發(fā)生的情況是,該行x_list[i] % 2被解釋為格式化字符串的指令,因為最初x_list包含字符串。

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

緩解措施

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

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)


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

TA貢獻1812條經(jīng)驗 獲得超5個贊

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

另外,即使您x_list只包含數(shù)字,您也可能會遇到IndexError,因為在最后一次迭代中x_list[i+1]可能超出范圍。

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


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

TA貢獻1772條經(jīng)驗 獲得超8個贊

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)

嘗試一下這個,它可能會起作用。我不知道輸出應(yīng)該是什么樣的“因為你沒有提到它”。但我嘗試輸入相同的代碼并進行一些更改以避免錯誤


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

TA貢獻1827條經(jīng)驗 獲得超8個贊

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

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

最后,您嘗試在 上應(yīng)用模(即數(shù)字運算)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("*")


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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