首页 > 解决方案 > 在我的程序中出现类型错误(python 初学者)

问题描述

我正在尝试编写一个使用 while 循环重复读取命令行输入的程序。我想跳过偶数,只打印奇数。输入始终有效。

这是我所拥有的:

    import sys

    num = sys.argv

    while True:
      for x in num:
        if x % 2 == 0:
           continue
      else: 
        print(x)

我收到此错误:“TypeError:字符串格式化期间并非所有参数都转换了”

标签: pythonstringformattingcommand-line-arguments

解决方案


sys.argv包含字符串,而不是数字。您可以使用该int()函数将字符串转换为数字。

但是你应该跳过 的第一个元素sys.argv,因为它包含脚本的名称,它不太可能是数字。

没有必要continue声明。只需颠倒测试的意义并在那里打印值。

import sys

num = sys.argv[1:]

for x in num:
    if int(x) % 2 == 1:
        print(x)

等效while循环是:

i = 1
while i < len(sys.argv):
    if int(sys.argv[i]) % 2 == 1:
        print(sys.argv[i])
    i += 1

推荐阅读