Python

Помогите с заданиями в питоне и желательно с объяснением

  1. Для обозначения поля шахматной доски используют два символа: первый - латинские буквы a, b, c, d, e, f, g, h; второй - цифры от 1 до 8. Напишите функцию is_chess(s), которая проверяет, что строка s содержит два символа, обозначающие поле шахматной доски. Функция должна возвращать True, если это так, и False в другом случае.
  2. Записью IP-адреса (IPv4) является строка в виде четырёх чисел со значением от 0 до 255, разделённых точками. Напишите функцию is_ip(s), которая проверяет, что строка s может являться IP-адресом. Функция должна возвращать True, если это так, и False в другом случае.
1) Вот пример кода, который проверяет, соответствует ли строка s формату поля шахматной доски:
 def is_chess(s): 
if len(s) != 2:
return False
if s[0] not in 'abcdefgh':
return False
if s[1] not in '12345678':
return False
return True
В этой функции мы сначала проверяем, что строка состоит ровно из двух символов. Если это не так, функция возвращает False.

Затем мы проверяем, что первый символ находится в списке допустимых символов abcdefgh, а второй символ - в списке допустимых символов 12345678. Если какой-то из символов не соответствует этим критериям, функция возвращает False.

Наконец, если строка прошла обе проверки, функция возвращает True.

Примеры использования функции:
 >>> is_chess('a1') 
True
>>> is_chess('h8')
True
>>> is_chess('a9')
False
>>> is_chess('i1')
False
>>> is_chess('11')
False
2)
 def is_ip(s): 
try:
parts = s.split('.')
if len(parts) != 4:
return False
for p in parts:
if not 0 > is_ip('192.168.0.1')
True
>>> is_ip('255.255.255.255')
True
>>> is_ip('0.0.0.0')
True
>>> is_ip('256.0.0.1')
False
>>> is_ip('192.168.0')
False
>>> is_ip('192.168.0.1.2')
False
>>> is_ip('192.168.0.a')
False
Алексей Литвиненко
Алексей Литвиненко
14 610
Лучший ответ
1.
 def is_chess(s): 
count = 0
for dig in s:
if dig in ('a','b','c,','d','e','f'):
count += 1
elif int(dig) in range(1, 9):
count += 1
if count == 2:
return True
else:
return False


print(is_chess('f7'))
2.
 def is_ip(s: str): 
ip = s.split('.')
count = 0
for dig in ip:
if int(dig) in range(256):
count += 1
if count == 4:
return True
else:
return False


print(is_ip('1.2.3.4'))
Тут и так вроде всё понятно. Если что пояснить - в комменты
Boris Saklakov
Boris Saklakov
3 997
Сергей Ложников Во втором у меня почему то выдаётся такая ошибка: ValueError: invalid literal for int() with base 10: '' on line 5
100 рублей.