【问题标题】:Comparing number cast to string in str list将数字转换为 str 列表中的字符串
【发布时间】:2016-07-28 21:43:51
【问题描述】:

我在 for 循环中有一个字符串数字列表和一个计数器。如果计数器在列表中,我会做一些事情,如下所示:

codes = ['123','1245','564','8920','57498']
f = open('path_to_file','r')
for lineno, line in enumerate(f, start=1):
    if str(lineno) in codes:
        print str(lineno) + ' is in the list'

问题是 if 条件似乎从某个点开始总是为真,因为一旦 lineno = 123 它总是打印 if 块内的句子。

有人发现这段代码有问题吗?谢谢

【问题讨论】:

  • 废话。设置像i = 122 这样的变量。 str(i) in codes 是假的。增加它:是的。再次增加:错误。我在解释器中用了 7 行代码,用完全对新手友好的代码来证明你的“如果条件从某个点总是为真”的假设是错误的。这是你的真实代码吗?
  • 你为什么说f = open(...)然后枚举file
  • 我无法重现这个错误——你确定这正是你编码的方式吗? pastebin.com/w232SzaV
  • 你可能会错过一些东西。我测试了,看起来还可以。

标签: python python-2.7 python-2.x


【解决方案1】:

我的代码如下:

In [8]: codes = ['1', '3', '4']

In [9]: f = open("test.py", "r")

In [10]: for lineno, line in enumerate(f, start=1):
   ....:     if str(lineno) in codes:
   ....:         print str(lineno) + ' is in the list'
   ....:
1 is in the list
3 is in the list
4 is in the list

看起来不错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2021-09-22
    • 2021-12-04
    相关资源
    最近更新 更多