【问题标题】:Making the amount of strings checked change based on the amount of strings in a line使检查的字符串数量根据一行中的字符串数量而变化
【发布时间】:2015-08-05 04:38:27
【问题描述】:

标题很烂,不知道怎么写。

基本上我需要检查来自 txt 文件的输入是否按字典顺序排列。我从文件中读取,将单个单词加载到列表中,然后使用 python 的“

我需要帮助的部分是做

单词1

无论列表中有多少单词,无论文件中有多少行,正确的次数都是正确的。 所以如果第 1 行只有 2 个字长,它只会做

单词1

但它会检查第 1 行有 5 个字长

单词1

我的代码现在到处都是,因为我真的很难过,我对 python 比较陌生,所以解释会有所帮助

with open ("lines.txt", "r") as myfile:
   linelist = myfile.readlines()
   count = len(linelist)
   l1 = linelist[0]
   line1split = l1.split()
   l1count = len(line1split)
   l2 = linelist[1]
   line2split = l2.split()
   l2count = len(line2split)
   l3 = linelist[2]
   line3split = l3.split()
   l3count = len(line3split)
   l4 = linelist[3]
   line4split = l4.split() 
   l4count = len(line4split) 
   l5 = linelist[4]
   line5split = l5.split()
   l5count = len(line5split) 
   line1split = l1.split()

     if line1split[0] < line1split[1]: 
       print('Line 1 is ascending.')

【问题讨论】:

  • 你期望输出什么?
  • 我认为你需要先检查所有可用的单词,然后在循环中检查它。
  • 如果 word1
  • 仅当word1 &lt; word2 ? word3 小于 word2 是什么?
  • @NickAdams 所以你的意思是第一行只有两个词?

标签: python python-3.x


【解决方案1】:

一个简单的方法是使用嵌套的 for 循环,第一个 for 循环遍历该行,第二个 for 循环遍历该行中的每个单词。示例 -

with open ("lines.txt", "r") as myfile:
    for i, line in enumerate(myfile):
        flag = True
        words = line.split()
        for j, word in enumerate(words):
            if j == len(words) - 1:
                break
            elif word >= words[j+1]:
                flag = False
                break
        if flag:
            print('Line {} is ascending'.format(i+1))

【讨论】:

  • 我的列表看起来像这样 .... 从前\n 有一个\n 名叫 tom\n 的男孩喜欢奶酪\n 和饼干\n 但它只是返回 ' 第 2 行正在升序,第 4 行上升,第 2 行再次上升'似乎不起作用
  • 不,\n 代表换行符的位置
  • 评论的第一次编辑没有 \n ,无论如何,第一行不是升序吗?这就是你想要的输出,对吧?
  • 对于上面应该输出的行,第 2 行是升序的。 3号线是上升的。第 5 行正在上升。
  • 如果回答对你有帮助,我建议你点击左侧的勾号接受回答,这将对社区有所帮助。
猜你喜欢
  • 2018-03-02
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 2020-04-28
  • 2018-11-20
  • 2021-12-17
  • 1970-01-01
  • 2021-12-10
相关资源
最近更新 更多