обработка ввода строки без ‘ ‘

#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. Приведите мне пример. Что бы вы ввели, когда вам будет предложено ввести число, и что бы вы хотели, чтобы программа с ним сделала?