#python #python-3.x #validation
#python #python-3.x #проверка
Вопрос:
Итак, нам дали задачу, которая вводит 6 цифр, я хочу добавить проверку длины в свой список, потому что я уже выполнил проверку своего номера. по какой-то причине, хотя я ввел шесть чисел, он печатает («только 6 цифр! Пожалуйста, попробуйте еще раз «). в любом случае, это мой код (прошу прощения за построение кода, поскольку я только начал изучать python)
while True:
numbers = input("Enter 6 digits: ")
if numbers.isalpha():
print("Invalid Input!", numbers ," is not a number!")
else:
NumberList = numbers.split()
if len(NumberList) == 6:
print("user list is ", NumberList)
break
else:
print ("6 digits only! Please try again")
Комментарии:
1. В чем именно заключается ваш вклад?
2. наши инструкции выглядят следующим образом 1. Попросите пользователя ввести 6-значное число. Пример. 123456 2. Удалите последнюю цифру введенного числа. Например. Удаление последней цифры из 123456 возвращает 12345. 3. Разделите новое 5-значное число на 7 и проверьте, соответствует ли его остаток удаленной цифре на шаге 2. Например. Остаток от деления 12345 на 7 равен 4. Удаленная цифра равна 6. Следовательно, они не равны. 4. Отобразите результат.
3. Вы не можете выполнить
split()
, чтобы разделить заданную строку.4. Попробуйте заменить
numbers.split()
наlist(numbers)
Ответ №1:
split
Функция, вызываемая без аргументов, разбивается на пробелы.
Итак, ваша строка не разбивается на список (вы получаете только список с одним элементом, вашей строкой).
print("123456".split())
['123456']
В этом случае, чтобы разделить строку, вы должны использовать: NumberList = list(numbers)
.
list("123456")
['1', '2', '3', '4', '5', '6']
Ответ №2:
Ввод, несомненно, даст вам строку, и поэтому вы можете использовать функцию разделения, но по умолчанию она ожидает пробелов.
Это splitting this string
приведет к ['splitting,'this','string']
, но что-то вроде 123456
, приводит к ['123456']
и поэтому длина всегда равна единице.
Способ решить эту проблему — преобразовать строку в список:
Заменить
NumberList = numbers.split()
с помощью
NumberList = list(numbers)
Это должно привести к ['1','2','3','4','5','6']
и, следовательно, должно дать вам правильную длину.
Ответ №3:
string.split()
Метод без указанного аргумента создаст список подстрок, разбивая исходную строку на любые пробелы. Если ваш ввод, скажем 123456
, , то numbers.split()
будет выдан ["123456"]
, поскольку во входной строке нет пробелов. В этом случае len(NumberList)
равно 1, и именно поэтому ваша проверка не выполняется.
Вместо этого вы могли бы просто проверить len(numbers) == 6
.
Если вы хотите превратиться "123456"
в ["1", "2", "3", "4", "5", "6"]
(поскольку кажется, что это то, что вы хотите распечатать), вы можете использовать list(numbers)
Ответ №4:
while True:
numbers = input("Enter 6 digits: ")
if numbers.isalpha():
print("Invalid Input!", numbers ," is not a number!")
else:
NumberList = len(numbers)
if NumberList == 6:
print("user list is", NumberList)
break
else:
print ("6 digits only! Please try again")
Ответ №5:
Я предполагаю, что ваш ввод — это что-то вроде «123456», во-первых, ваша проверка str.isalpha()
вернет true, только если все элементы строки являются буквами, что означает, что «123asd» будет считаться ложным и, следовательно, действительным для вашей программы, что является ошибкой, во-вторых str.split()
, будет разделять строку только в соответствии сдля разделителя char по умолчанию используется пробел, если ваша строка «123456», результатом разделения будет просто список из одного элемента с полной строкой, потому что в этой строке нет пробела.
while True:
numbers = input("Enter 6 digits: ")
if sum([n.isalpha() for n in numbers]):
print("Invalid Input!", numbers ," is not a number!")
else:
NumberList = list(numbers)
if len(NumberList) == 6:
print("user list is ", NumberList)
break
else:
print("6 digits only! Please try again")
Кроме того, нет необходимости разбивать строку на список, если единственная операция, которую вам нужно выполнить, это проверить ее длину, вы можете просто использовать len(numbers)
Ответ №6:
while True:
num = input("Enter a Number: ")
try:
numbers = [int(i) for i in num]
if len(numbers) == 6:
print('valid')
numbers = numbers[:5]
print(numbers)
else:
print('invalid')
except ValueError:
print('only numbers')
Проверка числа неверна, если вам нужны только числа. Я попытался ввести сначала цифры, а затем буквы, и я справился с этим.
Комментарии:
1. Я хотел внести это в список, потому что вторая инструкция в нашей деятельности гласит, что 2. Удалите последнюю цифру введенного числа. Например. Удаление последней цифры из 123456 возвращает 12345. есть предложения?
2. спасибо, кстати, еще раз вопрос. в нашей инструкции говорится, что 3. Разделите новое 5-значное число на 7 и проверьте, эквивалентен ли его остаток удаленной цифре на шаге 2. Пример. Остаток от деления 12345 на 7 равен 4. Удаленная цифра равна 6. Следовательно, они не равны. применимо ли это в списке?
3. Ммм. Любые математические проблемы, вероятно, находятся вне моего диапазона из-за возраста. В вашем сообщении много правильных ответов. Вы, вероятно, можете спросить их -?