#python-3.x
#python-3.x
Вопрос:
Я использовал 3 строки кодов, которые хорошо работали. Затем я пытаюсь свести их в одну строку, что, я полагаю, можно сделать, объединив две переменные. Но по какой-то причине сокращенные коды возвращали только 0 вместо фактической суммы, которую можно было вычислить раньше. Что пошло не так в сокращенных кодах?
hand = open('xxxxxx.txt')
# This is a text file that contains many numbers in random positions
import re
num = re.findall('[0-9] ', hand.read())
# I used regular expression on variable 'num' to extract all numbers from the file and put them into a list
numi = [int(i) for i in num]
# I used variable 'numi' to convert all numbers in string form to integer form
print(sum(numi))
# Successfully printed out the sum of all integers
print(sum([int(i) for i in re.findall('[0-9] ', hand.read())]))
# Here is the problem. I attempted to contract variables 'num' and 'numi' into one line of codes. But I only got 0 instead of the actual sum from it`enter code here`
Ответ №1:
если вы выполняете весь код, как я вижу там, нормально получить 0, потому что вы не открывали файл повторно после его первого использования, просто повторно откройте файл «hand» или оставьте последнюю строку, которую вы хотите использовать, и удалите три строки перед ней.
Ответ №2:
Этот код отлично работает для меня —
hand = open('xxxxx.txt')
import re
print(sum([int(i) for i in re.findall('[0-9] ', hand.read())]))
Вы должны закрыть файл и снова открыть его перед запуском последней строки.