Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Python, не получается решить задачу!

1) Необходимо будет написать программу, которая будет считывать со стандартного ввода строку и выводить на стандартный вывод является ли строка “правильной”. Строка считается правильной, если в ней есть латинская буква “a” или “o”, но нет букв “i” и “e”. Строка содержит только латинские буквы в нижнем регистре.

Мой код:

while True:
word = input()
if ('a' in word and 'o' in word) and (not 'i' in word or not 'e' in word)):
print(True)
else:
print(False)

Система не принимает ответ, выдает ошибку:

"code": "RE",
"error": "Traceback (most recent call last):\n File \"/opt/client/solution/main.py\", line 2, in <module>\n word = input()\n ^^^^^^^\nEOFError: EOF when reading a line\n",

На IDLE все работает хорошо. Как правильно решить?

2) Нужно написать программу, которая будет считывать со стандартного ввода целочисленные границы промежутка (сначала левая, потом правая, каждая на отдельной строке). А дальше будет считывать целые числа со стандартного ввода пока не встретит пустую строку, которая будет означать конец ввода. Нужно будет проверить входят ли все введенные числа в промежуток, проверка включает в себя границы промежутка.

Мой код:

s = int(input())
e = int(input())

while True:
n = int(input())
if s <= n <= e:
print(True)
else:
print(False)

Ошибка:

"code": "RE",
"error": "Traceback (most recent call last):\n File \"/opt/client/solution/main.py\", line 7, in <module>\n n = int(input())\nValueError: invalid literal for int() with base 10: ''\n"

На IDLE, как всегда, все работает исправно.

Жду Ваших мыслей на этот счет

По дате
По рейтингу
Аватар пользователя
Ученик
10мес

Мне кажется все немного проще делается. По крайней мере у меня работает вот так:
word = input()
if ('a' in word or 'o' in word) and ('i' not in word and 'e' not in word):
print(True)
else:
print(False)

Аватар пользователя
Ученик

Решили?

Аватар пользователя
Мыслитель

1) Проблема в неправильной расстановке скобок и отсутствии отступов. Используйте следующий код:

```python
while True:
word = input()
if ('a' in word or 'o' in word) and ('i' not in word and 'e' not in word):
print(True)
else:
print(False)
```

2) Проблема в том, что вы не обрабатываете ввод, ожидая пустую строку. Используйте следующий код:

```python
s = int(input())
e = int(input())

while True:
try:
n = input()
if not n:
break
n = int(n)
if s <= n <= e:
print(True)
else:
print(False)
except ValueError:
print(False)
```

Обработка исключения `ValueError` добавлена для случая, когда ввод не является целым числом.