TypeError: not all arguments converted during string formatting (Python 3) (Strings)
TypeError: not all arguments converted during string formatting (Python 3) (Strings)
我在 Python 3,TypeError: not all arguments converted during string formatting
上收到此错误,我知道这是由于字符串以“[
”开头,但我正在解决的问题有这个作为输入字符串 '[1, 2, 3, 4, 5, 6, 7, 8, 9]
',任务是在 Python 3 上找到偶数。任何帮助将不胜感激。
def is_even_num(l):
enum = []
for n in l:
if n % 2 == 0:
enum.append(n)
return enum
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
**TypeError: not all arguments converted during string formatting**
If I try int(n), I get this error **ValueError: invalid literal for int() with base 10: '[' **
编辑 1:
由于输入是 STRING,我面临着类似的问题
Python 练习:根据浮点元素对元组进行排序
price = "[('item1', '12.20'), ('item2', '15.10'), ('item3', '24.5')]"
print( sorted(price, key=lambda x: float(x[1]), reverse=True))
IndexError: string index out of range
这里 'Price' 是一个字符串,问题是按浮点元素对元组进行排序
使用嵌套循环转置矩阵的程序
y = "[[1,2,3,4],[4,5,6,7]]"
result = [[0,0],
[0,0],
[0,0],
[0,0]]
#iterate through rows
for i in range(len(X)):
# iterate through columns
for j in range(len(X[0])):
result[j][i] = X[i][j]
for r in result:
print(r)
IndexError: list index out of range ` I am getting this same type of problem again, the matrix has been input as a STRING.
您将参数作为字符串传递:
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
将其更改为:
print(is_even_num([1, 2, 3, 4, 5, 6, 7, 8, 9]))
输出:
[2, 4, 6, 8]
您没有将列表传递给函数,而是 字符串。因此,循环中的枚举将枚举列表中的字符,即 '['
然后 '1'
,然后 ','
等
这可能不是您想要的。
改为使用该调用:
print(is_even_num([1, 2, 3, 4, 5, 6, 7, 8, 9]))
删除[
和]
并拆分字符串:
def is_even_num(l):
enum = []
for n in l.replace('[','').replace(']','').split(', '):
if int(n) % 2 == 0:
enum.append(n)
return enum
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
输出:
['2', '4', '6', '8']
另一种优雅的方式是使用ast
:
def is_even_num(l):
enum = []
for n in ast.literal_eval(l):
if int(n) % 2 == 0:
enum.append(n)
return enum
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
输出:
['2', '4', '6', '8']
同样对于你问题的第二部分,如前所述,只需使用 ast
:
price = "[('item1', '12.20'), ('item2', '15.10'), ('item3', '24.5')]"
price = ast.literal_eval(price)
print( sorted(price, key=lambda x: float(x[1]), reverse=True))
输出:
[('item3', '24.5'), ('item2', '15.10'), ('item1', '12.20')]
然后:
y = "[[1,2,3,4],[4,5,6,7]]"
result = [[0,0],
[0,0],
[0,0],
[0,0]]
X = ast.literal_eval(y)
#iterate through rows
for i in range(len(X)):
# iterate through columns
for j in range(len(X[0])):
result[j][i] = X[i][j]
for r in result:
print(r)
输出:
[1, 4]
[2, 5]
[3, 6]
[4, 7]
您不能对字符串使用“%”运算符。从字符串中删除那些不能转换为 int 或 float 的字符。
def is_even_num(l):
l = l.replace('[','').replace(']','').split(",")
return [x for x in l if int(x)%2 ==0]
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
这将 return 一个偶数列表。
我在 Python 3,TypeError: not all arguments converted during string formatting
上收到此错误,我知道这是由于字符串以“[
”开头,但我正在解决的问题有这个作为输入字符串 '[1, 2, 3, 4, 5, 6, 7, 8, 9]
',任务是在 Python 3 上找到偶数。任何帮助将不胜感激。
def is_even_num(l):
enum = []
for n in l:
if n % 2 == 0:
enum.append(n)
return enum
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
**TypeError: not all arguments converted during string formatting**
If I try int(n), I get this error **ValueError: invalid literal for int() with base 10: '[' **
编辑 1:
由于输入是 STRING,我面临着类似的问题
Python 练习:根据浮点元素对元组进行排序
price = "[('item1', '12.20'), ('item2', '15.10'), ('item3', '24.5')]"
print( sorted(price, key=lambda x: float(x[1]), reverse=True))
IndexError: string index out of range
这里 'Price' 是一个字符串,问题是按浮点元素对元组进行排序
使用嵌套循环转置矩阵的程序
y = "[[1,2,3,4],[4,5,6,7]]" result = [[0,0], [0,0], [0,0], [0,0]] #iterate through rows for i in range(len(X)): # iterate through columns for j in range(len(X[0])): result[j][i] = X[i][j] for r in result: print(r) IndexError: list index out of range ` I am getting this same type of problem again, the matrix has been input as a STRING.
您将参数作为字符串传递:
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
将其更改为:
print(is_even_num([1, 2, 3, 4, 5, 6, 7, 8, 9]))
输出:
[2, 4, 6, 8]
您没有将列表传递给函数,而是 字符串。因此,循环中的枚举将枚举列表中的字符,即 '['
然后 '1'
,然后 ','
等
这可能不是您想要的。
改为使用该调用:
print(is_even_num([1, 2, 3, 4, 5, 6, 7, 8, 9]))
删除[
和]
并拆分字符串:
def is_even_num(l):
enum = []
for n in l.replace('[','').replace(']','').split(', '):
if int(n) % 2 == 0:
enum.append(n)
return enum
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
输出:
['2', '4', '6', '8']
另一种优雅的方式是使用ast
:
def is_even_num(l):
enum = []
for n in ast.literal_eval(l):
if int(n) % 2 == 0:
enum.append(n)
return enum
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
输出:
['2', '4', '6', '8']
同样对于你问题的第二部分,如前所述,只需使用 ast
:
price = "[('item1', '12.20'), ('item2', '15.10'), ('item3', '24.5')]"
price = ast.literal_eval(price)
print( sorted(price, key=lambda x: float(x[1]), reverse=True))
输出:
[('item3', '24.5'), ('item2', '15.10'), ('item1', '12.20')]
然后:
y = "[[1,2,3,4],[4,5,6,7]]"
result = [[0,0],
[0,0],
[0,0],
[0,0]]
X = ast.literal_eval(y)
#iterate through rows
for i in range(len(X)):
# iterate through columns
for j in range(len(X[0])):
result[j][i] = X[i][j]
for r in result:
print(r)
输出:
[1, 4]
[2, 5]
[3, 6]
[4, 7]
您不能对字符串使用“%”运算符。从字符串中删除那些不能转换为 int 或 float 的字符。
def is_even_num(l):
l = l.replace('[','').replace(']','').split(",")
return [x for x in l if int(x)%2 ==0]
print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
这将 return 一个偶数列表。