Как переписать этот FOR l oop с помощью цикла WHILE - PullRequest
1 голос
/ 03 августа 2020

это одно из моих упражнений в Python электронной книге. Мне просто интересно, можно ли использовать WHILE вместо FOR. Спасибо за вашу помощь

# Попросите пользователя ввести регулярное выражение # подсчитать количество строк, соответствующих регулярному выражению.

Мой код

x= input('Enter a regular expression.') 
file = open('mbox-short.txt') 
count = 0  
for line in file: line=line.rstrip()
  if re.search('\\b' + x + '\\b', line):
    count=count+1
print (count)

Ответы [ 4 ]

2 голосов
/ 03 августа 2020

Если вы действительно хотите подняться на ступеньку выше, используйте тот факт, что True и False суммируются как 1 и 0. Это полностью избавляет от явного for и while.

import re
x = input('Enter a regular expression.')
my_regex = '\\b' + x + '\\b'
with  open('mbox-short.txt') as f:
    count = sum(bool(re.search(my_regex, line)) for line in f)
1 голос
/ 03 августа 2020

Вы можете использовать while l oop, как показано ниже, для выполнения той же задачи, что и ниже,

import re
x = input('Enter a regular expression.')
fileHandler = open('tmp.txt')
count = 0
while True:
    line = fileHandler.readline()
    if not line:
        break
    if re.search('\\b' + x + '\\b', line):
        count += 1
print (count)
0 голосов
/ 03 августа 2020

попробовать

x= input('Enter a regular expression.')
file = open('mbox-short.txt') 
count = 0
temp=0
lines=file.readlines()
while True:
    if re.search('\\b' + x + '\\b', lines[temp]):
        count=count+1
    if temp==len(lines)-1:
        break
    temp=temp+1
print(count)
0 голосов
/ 03 августа 2020
x= input('Enter a regular expression.')
file = open('mbox-short.txt') 
count = 0
while(re.search('\\b' + x + '\\b', line)):
   count = count+1
print(count)

Думаю, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...