【问题标题】:not all arguments converted during string formatting?不是在字符串格式化期间转换的所有参数?
【发布时间】:2018-12-21 11:14:56
【问题描述】:
print(*(i for index, i in enumerate(list(input(int()).split())) if i % 6 == 0 and (index+1) % 6 == 0), sep=' '`)

你可以看到我的代码,但问题是下面的错误:

TypeError:字符串格式化期间并非所有参数都转换

我该怎么办?

input:
1 2 3 4 5 6 7 8 9 10 11 12

output:
6 12

【问题讨论】:

  • 这不是非常 Pythonic IMO,将所有这些操作塞进一行。您正在成为这种方法的受害者,因为它变得越来越难以调试。
  • 这是您的完整代码吗?当我运行它时,我只打印了0
  • int() 只是0.split() 返回一个列表,因此无需包装 list()
  • @karl 帖子已编辑
  • @Chris_Rands 帖子已编辑

标签: python generator


【解决方案1】:

i 是一个字符串。你需要在%操作之前将其转换为int

print(*(i for index, i in enumerate(list(input(int()).split())) if int(i) % 6 == 0 and index % 6 == 0), sep=' ')

此外,您在上面发布的预期输出是错误的-在这种情况下index = int(i) - 1(当i == 1index == 0)-所以iindex都是6的倍数是不可能的

【讨论】:

  • 你在写,但还有一件事是,如果我想检查我是否不想打印一个数字两次?我该怎么办?
  • 使用set 而不是generator。只需将 () 替换为 {} ----- print(*{i for index, i in enumerate(list(input(int()).split())) if int(i) % 6 == 0}, sep=' ')
  • 您可以使用内置的sorted 函数对集合进行排序 - 注意它会返回一个列表
猜你喜欢
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2013-03-07
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多