Я не могу понять, как обрабатывать пользовательский ввод в виде строк

#python #string #input #sys

#python #строка #ввод #sys

Вопрос:

Я действительно новичок в Python, поэтому я не очень разбираюсь в синтаксисе. Я пытаюсь написать программу, которая принимает слова в отдельных строках и добавляет каждое слово в массив. Я попытался использовать isalpha(), чтобы разорвать цикл после ввода всех слов. Но цикл прервался бы, даже если бы это было слово. Пожалуйста, помогите! Редактировать: я также хотел бы знать, как избавиться от n в выходных данных.

 import sys; args = sys.argv[1:]
import fileinput
words = []
for line in fileinput.input():
   if line.isalpha() == False:
    fileinput.close()
   words.append(line)
print (words)
  

Ввод: привет

Вывод: [‘hello n’]

Комментарии:

1. Какой ввод вы хотите использовать для завершения цикла?

2. Практически все, что не является словом, поэтому isalpha() должно работать.

3. isalpha : возвращает True, если все символы в строке являются алфавитными и есть хотя бы один символ, в противном случае False . Возможно, вам потребуется добавить line = line.rstrip() перед if оператором.

4. О, хорошо, спасибо! Я попробую это сделать.

Ответ №1:

Из документации для isalpha:

Возвращает True, если все символы в строке являются алфавитными и есть хотя бы один символ, в противном случае False .

Небольшая работа в IPython:

 In [1]: 'hellon'.isalpha()
Out[1]: False

In [2]: 'hellon'.rstrip().isalpha()
Out[2]: True
  

Я бы исправил непосредственную проблему чем-то вроде этого:

 for line in fileinput.input():
    line = line.rstrip()
    if line.isalpha() == False:
        fileinput.close()
    words.append(line)
  

Комментарии:

1. Большое вам спасибо! Если вы не возражаете, если я спрошу, почему он автоматически говорит n ?

2. n Это конец строки

3. @JuminHan n Исходит из стандартного определения строки POSIX