【问题标题】:TypeError Not all Arguments Converted During String FormattingTypeError 并非所有参数在字符串格式化期间都被转换
【发布时间】:2022-06-12 20:22:11
【问题描述】:

我正在尝试遍历数字列表,并且在每次迭代中我想检查添加的数字是偶数还是单数,但不幸的是我遇到了这个错误。

#!/usr/bin/env python
import time

ask = int(input("How Many Numbers You Want to Print ? : "))
numbers = []
for i in range(0, ask):
    x = input("What's Number " + str(i+1) + " : ")
    numbers.append(x)

for y in numbers:
    if (y % 2) == 0:
        print("Even Numbers : " + y)

但是当我运行我的代码时,它给了我:

_Projects/network_scanner/test.py
How Many Numbers You Want to Print ? : 3
What's Number 1 : 15
What's Number 2 : 16
What's Number 3 : 13
Traceback (most recent call last):
  File "/home/user/Desktop/Python_Projects/network_scanner/test.py", line 11, in <module>
    if y % 2 == 0:
TypeError: not all arguments converted during string formatting

【问题讨论】:

  • x = input("What's Number " + str(i+1) + " : ") 更改为x = int(input("What's Number " + str(i+1) + " : "))

标签: python python-3.x string formatting typeerror


【解决方案1】:

您最终出现此错误的原因是因为y 是一个字符串,并且您不能对字符串使用模数 (%) 函数。有两种解决方法:

  1. if (y % 2) == 0: 更改为if (int(y) % 2) == 0:。这会将y 转换为整数,以便模函数起作用。
  2. input("What's Number " + str(i+1) + " : ") 更改为int(input("What's Number " + str(i+1) + " : "))。这会将x(输入值)转换为整数,以便模函数起作用。但是,您会发现自己遇到此错误: TypeError: can only concatenate str (not "int") to str。 解决此问题的一种方法是将print("Even Numbers : " + y) 更改为print("Even Numbers : " + str(y)),因为print() 函数只接受字符串。 str() 函数将y 从整数转换为字符串。

【讨论】:

    猜你喜欢
    • 2020-08-23
    • 2015-10-28
    • 2015-01-21
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多