#python-3.x
#python-3.x
Вопрос:
Попытка неправильно напечатать после строки в качестве входных данных, например, без кавычек «
while True:
t=eval(input("number "))
if isinstance(t, str):
print("bad")
if TypeError: #trying to detect strings not input in ' ' format
print("bad")
ожидаемым результатом будет вывод «bad», когда в консоль вводится ‘string’ или string .
Однако при вводе строки без кавычек мой код прерывается. Не уверен, как определить входные данные без кавычек.
Ответ №1:
Похоже, что вы хотите использовать число из командной строки, и вы пытаетесь проверить, получили ли вы вместо этого строку.
eval()
будет оценивать свои аргументы, как если бы это был какой-то распознанный код python, проще говоря. Смотрите документацию. Если вы передаете string, eval пытается вычислить string
, что на самом деле не является кодом python. Итак, выдается ошибка. Если вы передаете 'string'
, eval считает, что это строка в кавычках.
Что вам, вероятно, нужно, так это:
while True:
t = input("number ")
try:
my_value = int(t)
except:
if t == 'quit':
break
else:
print('I didnt receive a string. Please try again');
continue
print('Great! Received a number')
Таким образом, вы запрашиваете информацию у пользователя. Вы получите строку. Затем вы пытаетесь преобразовать его в целое число. Если это не удается, вы можете проверить, предоставил ли пользователь quit
. Если это так, остановите программу. Если нет, сообщите пользователю, что у вас есть строка, и вам нужно число.
Если вы получили число, отлично, вы можете продолжить.
Комментарии:
1. Спасибо за помощь … теперь код работает намного лучше. У меня только один последний вопрос, если вам захочется на него ответить! Если я введу строку в форме кавычек, она ничего не напечатает, просто продолжит запрашивать новый ввод. вы знаете, как я могу это исправить, чтобы он печатался, когда строка вводится с кавычками?
2. Приведите мне пример. Что бы вы ввели, когда вам будет предложено ввести число, и что бы вы хотели, чтобы программа с ним сделала?