解决 Python中错误 TypeError: Not All Arguments Converted During String Formatting
Python 中的字符串格式化可以通过多种方式完成,模 (%
) 运算符就是其中一种方法。 它是 Python 中最古老的字符串格式化方法之一,以错误的方式使用它可能会导致 TypeError: not all arguments converted during string formatting。
不仅如此,许多其他原因也可能导致同样的情况。 让我们详细了解此错误以及修复它的可能解决方案。
TypeError 是当我们尝试对不受支持的对象类型进行操作时引发的 Python 异常。 在很多情况下我们都会遇到此错误,但在本文中,我们将研究因字符串格式不正确而导致的 Python TypeError。
话不多说,让我们开始吧!
Python 中错误 TypeError: Not All Arguments Converted During String Formatting 的原因及解决方法
Python 中可能会出现 TypeError: not all arguments converted during string formatting 的原因有很多。 让我们一一讨论它们,以及可能的解决方案。
Python对错误数据类型的操作
看下面给出的例子。 在这里,我们将用户的年龄作为输入,然后使用取模运算符 (%
)。
结果存储在变量 ans 中,然后在打印语句中将其格式化为字符串。 但是当我们运行这段代码时,我们得到了 TypeError。
发生这种情况是因为 Python 接受字符串形式的输入。 这意味着作为输入的值 19 被 Python 认为是 str 数据类型。
但是我们可以在字符串上使用模运算符 (%
) 吗? 不,因此,我们收到此错误。
age = (input("Enter your age: "))
ans = age % 10
print("Your lucky number is:", ans)
输出:
要解决此问题,我们必须使用 int()
函数将输入作为整数。 这是在下面完成的。
age = int(input("Enter your age: "))
ans = age % 10
print("Your lucky number is:", ans)
输出:
您可以看到,这次我们得到了所需的输出,因为 int()
函数将输入转换为整数数据类型,我们可以在其上使用模运算符 (%)。
Python 中字符串插值运算符缺少格式说明符
这种情况与我们上面讨论的情况有点相似。 看下面给出的例子。
输出显示错误发生在第 2 行。但是你能猜出原因吗?
答案很简单。 我们知道在 Python 中单引号或双引号内的任何东西都是字符串。
在这里,值 19 被双引号括起来,这意味着它是一个字符串数据类型,我们不能在它上面使用模运算符 (%)。
age = "19"
if(age%10):
print("Your age is a lucky number")
输出:
为了纠正这个问题,我们将使用 int()
格式说明符,如下所示。
age = "19"
if(int(age)%10):
print("Your age is a lucky number")
输出:
Your age is a lucky number
这次代码运行正常。
Python 中格式说明符和值的数量不等
我们知道我们在字符串格式化期间放置的格式说明符与要格式化的值的数量一样多。 但是,如果值的数量多于或少于字符串中指定的格式说明符的数量怎么办?
看看这段代码。 在这里,我们有三个变量并且只想将其中两个插入到字符串中。
但是当我们在 print 语句中传递参数时,我们传递了所有三个参数,这无疑会导致 TypeError。
lead_actor = "Harry Potter"
co_actor = "Ron Weasley"
actress = "Hermione Granger"
print("The males in the main role were: %s and %s." %(lead_actor,co_actor, actress ))
输出:
让我们从参数列表中删除最后一个变量 actress,然后重新运行该程序。
lead_actor = "Harry Potter"
co_actor = "Ron Weasley"
actress = "Hermione Granger"
print("The males in the main role were: %s and %s." %(lead_actor,co_actor))
输出:
The males in the main role were: Harry Potter and Ron Weasley.
您可以看到这次代码运行良好,因为字符串中格式说明符的数量等于作为参数传递的变量的数量。
请注意,要使用的格式说明符取决于值的数据类型,在本例中为 %s,因为我们正在处理字符串数据类型。
在 Python 中的同一字符串中使用不同的格式说明符
我们知道有几种方法可以在 Python 中格式化字符串,但是一旦选择了一种方法,就必须在单个字符串中仅遵循该方法。 换句话说,您不能在一条语句中混合使用不同类型的字符串格式化方法,因为这会导致 TypeError: not all arguments converted during string formatting。
查看下面的代码可以更好地理解这个概念。
我们在字符串中使用占位符 ({}
) 来格式化此字符串,但我们不像之前那样将参数作为元组传递。 相反,其中一个变量前面有模运算符 (%
),而另一个则没有。
这就是导致 TypeError 的原因。
lead_actor = "Harry Potter"
co_actor = "Ron Weasley"
actress = "Hermione Granger"
print("The males in the main role were: {0} and {1}." % lead_actor,co_actor)
输出:
为了解决这个问题,我们可以做两件事。
-
如果要在字符串中使用占位符 (
{}
),则必须使用带有点 (.
) 运算符的format()
方法来传递参数。 这是在下面完成的。lead_actor = "Harry Potter" co_actor = "Ron Weasley" actress = "Hermione Granger" print("The males in the main role were: {0} and {1}.".format(lead_actor, co_actor))
The males in the main role were: Harry Potter and Ron Weasley.
-
另一种方法是放弃使用占位符 (
{}
) 并在其位置使用格式说明符,同时将参数作为元组传递,前面加上模运算符 (%
)。 这是按如下方式完成的。lead_actor = "Harry Potter" co_actor = "Ron Weasley" actress = "Hermione Granger" print("The males in the main role were: %s and %s." % (lead_actor, co_actor))
The males in the main role were: Harry Potter and Ron Weasley.
请注意
,用于格式化的模运算符 (%
) 是旧式的,而另一方面,将占位符与.format()
方法一起使用是 Python 中字符串格式化的新式方法。
这就是本文的内容。
总结
在本文中,我们讨论了导致 Python 中 TypeError: Not all arguments converted during string formatting 的各种原因,以及可能的修复方法。
相关文章
解决 Python中 TypeError: Nonetype Object Is Not Subscriptable 错误
发布时间:2023/05/30 浏览次数:162 分类:Python
-
在本文中,我们将讨论为什么 TypeError: NoneType object is not subscriptable 在 Python 中出现以及如何修复它。 我们将学习如何对序列数据类型错误地使用 append()、sort() 和 reverse() 等方法导致
Python 错误 TypeError: Unhashable Type: List
发布时间:2023/05/17 浏览次数:112 分类:Python
-
本文将讨论 TypeError: unhashable type: 'list' 以及如何在 Python 中修复它。因为 Python 字典只接受可散列数据类型作为它们的键,而列表是不可散列的。
Python 错误 TypeError: __str__ Returned Non-String but Printing Output
发布时间:2023/05/17 浏览次数:142 分类:Python
-
本文旨在解决当我们尝试打印字符串而不是在函数中使用 return 语句时出现的问题。Python 错误TypeError: __str__ Returned Non-String but Printing Output
解决 Python 中 TypeError: An Integer Is Required 错误
发布时间:2023/05/16 浏览次数:149 分类:Python
-
在 Python 代码中发生的另一个最常见的错误是 TypeError。本文将展示我们如何在 Python 中得到 TypeError。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。
Python 中错误 TypeError: Must Be Real Number, Not STR
发布时间:2023/05/16 浏览次数:168 分类:Python
-
TypeError: must be real number, not str 错误涉及使用错误的类型和非实数,在本例中为 str 类型。使用 float() 或 int() 解决Python 中 TypeError: must be real number, not str
Python 错误 TypeError: Iteration Over Non-Sequence
发布时间:2023/05/16 浏览次数:69 分类:Python
-
当您尝试迭代不可迭代的对象时,会出现错误 TypeError: iteration over non-sequence 。 现在您已经了解了 TypeError 的原因,让我们在 Python 中重新创建非序列错误的迭代。
Python 中解决 TypeError: Can't Multiply Sequence by Non-Int of Type STR 错误
发布时间:2023/05/15 浏览次数:202 分类:Python
-
本篇文章着重于并旨在为 TypeError: can't multiply sequence by non-int of type 'str' 错误提供解决方案。Python 提供了多种数据类型,str 数据类型就是其中之一。 Python 中的字符串表示一系列 Unicode 字符,用
Python 中 TypeError: Can't Convert 'List' Object to STR 错误
发布时间:2023/05/15 浏览次数:127 分类:Python
-
我们将使用示例将列表对象转换为 Python 中的字符串。 我们还将通过示例介绍如何在 Python 中将字符串与列表对象连接起来。
Python 中 TypeError: 'DataFrame' Object Is Not Callable 错误
发布时间:2023/05/15 浏览次数:188 分类:Python
-
我们将介绍如何在 Python 中基于查询从 DataFrame 中调用数据。 我们还将通过示例介绍如何解决Python中的错误 TypeError: ‘DataFrame’ object is not callable 。