ввод в питоне должен быть только в строке - PullRequest
0 голосов
/ 06 ноября 2018

Я новичок в Python, поэтому, пожалуйста, не используйте сложный или сложный код.

У меня есть три if условия, на которые я хочу получить определенные ответы, и я хочу, чтобы мой код давал только один ответ.

  1. Сначала я хочу, чтобы входные данные отвечали только в строке, а не в целых числах или с плавающей точкой

    f = input("Please enter your name :")
    
  2. должно выдавать ошибку, если задано целое число или число с плавающей запятой

    if type (f)== int or float :
        print("Invalid entry")
    
  3. if f=="" :
        print("Invalid input. Your name cannot be blank. ")
    

я уже пробовал

f = str(input("Please enter your name :"))

это не работает, мой код по-прежнему принимает ANS в виде целого числа и строки.

Если я даю строку ввода, она дает мне следующий ответ:

if type (f)== int or float :
    print("Invalid entry")

Я новичок, поэтому я мог совершить много ошибок. Ваше терпение будет оценено.

1 Ответ

0 голосов
/ 06 ноября 2018

Если вы используете Python 3.X, input() всегда возвращает строку. Обратите внимание, что есть строки, такие как "1", которые все еще являются строками, несмотря на то, что они очень похожи на числа.

Я думаю, что вы на самом деле хотите, чтобы убедиться, что строка содержит только алфавитные символы, в этом случае вы можете сделать:

s = input("Enter your name: ")
if not s.isalpha():
    print("Please enter only alphabetical characters for your name.")

Или, возможно, вы хотите принять все строки, кроме тех, которые состоят исключительно из цифр.

s = input("Enter your name: ")
if s.isdigit():
    print("Your name cannot be a number.")

Или вы хотите принимать только те строки, которые вообще не содержат цифр?

s = input("Enter your name: ")
if any(char.isdigit() for char in s):
    print("Please do not include digits in your name.")

Если вы используете Python 2.7 или ниже, input() может вернуть строку, целое число или объект любого другого типа. Как правило, это больше головная боль, чем стоит, поэтому я рекомендую переключиться на raw_input(), после чего применимы все приведенные выше рекомендации.


Как только вы получите правильную логику для ваших условий проверки, вы можете подумать: «Хорошо, но как мне заставить программу вернуться к первому вызову input(), чтобы у пользователя был еще один шанс ввести правильный ввод? ?». Если это так, вы можете найти это полезным: Запрашивать у пользователя ввод, пока он не даст правильный ответ


PS. Когда дело доходит до имен, будьте осторожны с тем, насколько строго вы проверяете ввод. Ошибка на стороне принятия необычных входов. В противном случае вы можете получить жалобы от людей с такими именами, как «Джон Смит 3-й» или «Стив О'Рейли» или «田中 太郎». Связанное чтение: Ложные программисты верят в имена

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