изменить (отсутствие) пользовательского ввода на строковое значение по умолчанию - PullRequest
0 голосов
/ 20 февраля 2020

Вероятно, это прямой вопрос, но у меня пока нет основы Python (работает перед ходом)

Я хочу, чтобы пользователь вводил следующие переменные (координаты):

source_x = input('enter blast x: ')
source_y = input('enter blast y: ')
source_z = input('enter blast z: ')
receiver_x = input('enter receiver x: ')
receiver_y = input('enter receiver y: ')
receiver_z = input('enter receiver z: ')

Когда пользовательский ввод Введите для z координаты (или любой другой), возникает следующая ошибка:

    source_z = float(source_z)
ValueError: could not convert string to float: ''

Я понимаю ошибку, Ввод ввод рассматривается как строка, но есть ли быстрый способ идентифицировать и преобразовать ввод Ввод в (например) a 0?

На всякий случай Я хочу выполнить массовый импорт и не останавливать мои вычисления далее по коду.

С уважением

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Решение состоит в том, чтобы проверить входное значение, чтобы увидеть, состоит ли оно из цифр, а затем привести его к нужному типу или присвоить значение по умолчанию, иначе:

import re

is_number = re.compile(r'^[-+]?[0-9]*\.?[0-9]+$')

src_x = input('enter blast x: ')
src_y = input('enter blast y: ')
src_z = input('enter blast z: ')

rcv_x = input('enter receiver x: ')
rcv_y = input('enter receiver y: ')
rcv_z = input('enter receiver z: ')

src_x = float(src_x) if is_number.match(src_x) else 0
src_y = float(src_y) if is_number.match(src_y) else 0
src_z = float(src_z) if is_number.match(src_z) else 0

rcv_x = float(rcv_x) if is_number.match(rcv_x) else 0
rcv_y = float(rcv_y) if is_number.match(rcv_y) else 0
rcv_z = float(rcv_z) if is_number.match(rcv_z) else 0
0 голосов
/ 20 февраля 2020

Ввод всегда возвращает строку. Вы можете сделать variable = int (введено число).

Кроме того, просто используйте оператор try / exception и присвойте значение по умолчанию в предложении кроме> Try: Num1 = int (input ("Введите число") ) # математическая функция или что-либо, кроме Exception, как e: Num1 = int (10) # или любой другой номер по умолчанию print (e) # для устранения неполадок

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