Ошибка неправильного ввода питон

Ошибки и исключения

Если вы пишете программу на Python и игнорируете синтаксис этого языка, то при запуске своей программы получите одну или несколько ошибок. Python сообщит вам, что ваш код не работает, и выдаст информацию об ошибке. Взгляните, что произойдет, если в Python вы попытаетесь определить строку с кавычками только с одной стороны.

Traceback (most recent call last): File error.py, line 1 my_string = "Привет, мир. ^ SyntaxError: EOL while scanning string literal

Это сообщение указывает, что ваша программа содержит синтаксическую ошибку. Синтаксические ошибки фатальны; программа, содержащая их, не может работать. Когда вы пытаетесь запустить программу с синтаксической ошибкой, Python сообщает об этом.

Сообщение расскажет вам о том, в каком файле была ошибка, в какой она произошла строке, и что это была за ошибка. Хотя ошибки могут показаться пугающими, они случаются постоянно.

Если в вашем коде была допущена ошибка, вы должны перейти к номеру строки кода, в которой возникла проблема, и попытаться выяснить, что было сделано неправильно. В данном примере нужно перейти к первой строке. Если вы внимательно к ней присмотритесь, то заметите, что она содержит лишь открывающие кавычки. Чтобы исправить это, закройте кавычки в конце строки и повторно запустите программу.

У Python есть два типа ошибок: синтаксические ошибки и исключения. Исключением называется любая ошибка, которая не является синтаксической. В отличие от синтаксических ошибок, исключения необязательно фатальны.

ZeroDivisionError — пример исключения, которое возникает при попытке деления на ноль пользователем, в случае если вами, как программистом, не предусмотрено ограничения такой возможности.

Читайте также:  Python зачем нужны classmethod

В процессе обучения программированию вы будете часто получать синтаксические ошибки и исключения, но со временем их количество снизится. Помните, когда вы сталкиваетесь с синтаксической ошибкой или исключением, переходите к строке, где возникла проблема, и всматривайтесь в нее, пока не найдете решение.

Обработка исключений ¶

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

a = input("Введите число: ")
b = input("Введите еще одно число: ")
a = int(a)
b = int(b)
print (a / b)

Программа будет работать. Однако если пользователь введет 0 в качестве второго числа, вы столкнетесь с ошибкой:

Traceback (most recent call last): module division.py line 5 ZeroDivisionError: division by zero

Нельзя просто надеяться, что пользователь не введет 0 и отличным способом выйти из положения может стать обработка исключений — инструмент, позволяющий «перехватить» исключения, если таковые возникают, и решить, что делать дальше.

Для обработки исключений используются ключевые слова try и except . При использовании обработки исключений, когда пользователь вторым числом вводит 0, программа может вывести им сообщение о недопустимости ввода нуля.

Все исключения в Python являются объектами, так что вы можете использовать их в своих программах. Список встроенных исключений можно найти здесь . Если вам кажется, что ваш код может сгенерировать исключение, используйте составную инструкцию с ключевыми словами try и except , чтобы перехватить его.

Блок try содержит код, который может сгенерировать исключение. Блок except содержит код, который будет выполняться лишь в том случае, если внутри блока try появится исключение. Ниже приведен пример использования обработки исключений, когда программа не прерывается при вводе 0 в качестве второго числа.

try:
a = input("Введите число: ")
b = input("Введите еще одно число: ")
a = int(a)
b = int(b)
print (a / b)
except ZeroDivisionError:
print("b не может быть нулем!")

Такая программа перехватит исключение ZeroDivisionError и передаст управление в блок except , в котором мы и выведем сообщение о недопустимости ввода 0.

Ваша программа также завершится с ошибкой, если пользователь введет строку, которую Python не может преобразовать в целое число. Попробуйте ввести вместо числа какое-нибудь слово и вы увидите примерно такое сообщение об ошибке:

Traceback (most recent call last): module division.py line 3 ValueError: invalid literal for int() with base 10: 'слово'

Это можно исправить, перехватив оба типа исключений

try:
a = input("Введите число: ")
b = input("Введите еще одно число: ")
a = int(a)
b = int(b)
print (a / b)
except ZeroDivisionError:
print("b не может быть нулем!")
except ValueError:
print("Ошибка ввода числа")

Не используйте в инструкции except переменные, определенные в try , поскольку исключение может возникнуть прежде, чем будет определена переменная, и как только вы попытаетесь использовать инструкцию except , внутри нее сгенерируется исключение.

try:
10 / 0
c = "Я никогда не определюсь."
except ZeroDivisionError:
print(c)

Такая программа закончится с ошибкой

Traceback (most recent call last): module zero.py line 5 NameError: name 'c' is not defined

Источник

Вывод ошибки и повторный ввод

Хочу сделать в программе так, чтобы после не правильного ввода данных с клавиатуры, выскакивала ошибка и просьба ввести информацию снова, и это продолжается до тех пор, пока пользователь не введёт правильное значение.
Так же хочу сделать,когда пользователь вводит символы, не являющиеся числами, то опять выскакивает ошибка и просьбы ввести информацию снова, и это продолжается до тех пор, пока пользователь не введёт правильное значение.

Повторный ввод данных после ошибки
как после слов "ошибка. " вернуться для повторного ввода оценки ученику?#include <iostream>.

Как сделать повторный ввод числа в случае ошибки?
Подскажите пожалуйста как сделать так чтобы во время ввода пользователем символа программа бы не.

Заполнение массива (повторный ввод значения в случае ошибки)
const min_val=-32676; max_val=32676; n=6; var m : array of integer; s:string;.

Как сделать повторный ввод числа в случае ошибки?
#include <iostream> #include <algorithm> #include <cmath> #include <Windows.h> using namespace.

Меню.Ввод-вывод.Проверка на ошибки ввода
Здравствуйте, помогите переделать программу без go to при чтении ввода scanf /*Задача: Напишите.

Лучший ответ

Сообщение было отмечено Pon4iPay как решение

Решение

right_val = 7 while True: try: n = int(input('Введите число ')) if n == right_val: break else: print('Неверное число') except : print("Ошибка - это не число")

Эксперт Python

ЦитатаСообщение от ТабуретY Посмотреть сообщение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
right_val = 7 while True: s = input('Введите число ') try: n = int(s) if n == right_val: break else: print('Неверное число') except : if s.isalpha(): print("Введены буквы") else: print("Введены непонятные символа")
1 2 3 4 5 6 7 8 9 10 11 12 13
while True: s = input('Введите число ') # получаем строку try: n = int(s) # пробуем перевести в число, если не удается переходим в except if n == right_val: break else: print('Неверное число') except : if s.isalpha(): # функция isalpha возвращает True если все символы буквы print("Введены буквы") else: print("Введены непонятные символа")

А что делать если число может быть любым? Ведь в 5 строке вы указываете, что «n» должно ровняться 7, а число нужно любое.

while True: s = input('Введите число ') # получаем строку try: n = int(s) # пробуем перевести в число, если не удается переходим в except break except : if s.isalpha(): # функция isalpha возвращает True если все символы буквы print("Введены буквы") else: print("Введены непонятные символа")

Всё прошло успешно, но почему-то после этого изменения, с этими переменными нельзя ничего посчитать, т.е. я ввожу число — всё отлично, потом выводится результат 0, а должно быть нормальное число

1 2 3 4 5 6 7 8 9 10 11 12
while True: s = input('Введите число ') try: n = int(s) break except : if s.isalpha(): print("Введены буквы") else: print("Введены непонятные символа") print(n **2)

$python fot.py
Введите число tyuyu
Введены буквы
Введите число dtd555
Введены непонятные символа
Введите число 6
36

вот мой результат(переменная «c» вводилась чуть позже):

Traceback (most recent call last):
File «C:\Users\***\PycharmProjects\untitled1\***.py», line 51, in
e = a/24*c
TypeError: unsupported operand type(s) for /: ‘str’ and ‘int’

ЦитатаСообщение от Pon4iPay Посмотреть сообщение

Прошу прощения, что пишу в столь старой теме с уже полученным ответом на вопрос автора, но моя проблема схожа. Делаю первые шаги в Python. Пишу простейший калькулятор (в данном случае он только складывает и вычитает числа) и возник вопрос — как сделать так чтобы после ввода любого символа отличного от + или — выскакивало сообщение об ошибке, к примеру «Недопустимый символ для ввода данных» после чего необходимо было бы снова вернуться к вводу данных. Голова кипит, а решение не найдено. Сам код:

1 2 3 4 5 6 7 8 9 10 11 12 13
what = input ( "Что делаем? (+ или -): " ) a = float(input("Введите первое число: ")) b = float(input("Введите второе число: ")) if what == "+": c = a + b print("Результат: " + str(c)) elif what == "-": c = a - b print("Результат: " + str(c)) else: print("Syntax ERROR!")

Yankeedoodle, на сколько сложная реализация тебе нужна? Судя по вопросу, ты пока на ветвлениях, на них приемлемо?

Добавлено через 6 минут

what = input("Что делаем? (+ или -): ") while what not in ('+', '-'): print('Я в такое не могу, попробуй еше раз') what = input('А что мне с ними сделать, пока умею только + и -: ') a = float(input("Введите первое число: ")) b = float(input("Введите второе число: ")) if what == '+': print(a + b) else: print(a - b)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
what = input ( "Что делаем? (+ или -): " ) while not (what in ['+', '-']): # проверяет, не находится ли введённое значение в списке. если значение не входит в список, начинает/повторяет цикл print("Недопустимый символ для ввода данных") what = input ( "Что делаем? (+ или -): " ) a = float(input("Введите первое число: ")) b = float(input("Введите второе число: ")) if what == "+": c = a + b print("Результат: " + str(c)) elif what == "-": c = a - b print("Результат: " + str(c))

самое просто решение, на мой взгляд.

третья строчка может выглядеть и так:

Благодарю ответивших, всё получилось. Ещё нет рейтинга чтобы нажать «спасибо» под вашими сообщениями. Интуитивно понимал, что реализация будет через цикл while, но не понимал как правильно синтаксически оформить, ряд самостоятельных попыток провалились.

Повторный ввод
Добрый вечер. Подскажите , пожалуйста , как после ввода неверного расширения (после показа всех.

Ввод/вывод структуры: найти и исправить ошибки в коде
Прога не запускатся, что-то не так с scanf. Не могу найти ошибку. #include <conio.h> #include.

Бесконечный повторный ввод
Всем, доброго дня! Не так давно изучаю питон. Помогите дописать программу. Нужно угадать два числа.

Повторный ввод в textBox
Добрый день. Мне нужно через массив объектов организовать ввод данных в textBox несколько.

Повторный ввод с консоли
Здравствуйте! Имеется некоторый ввод с консоли. Пользователь вводит строку вместо целого числа.

Источник

Оцените статью