寒假作业

寒假作业
第一题:
import itertools
s=input()
s0 = itertools.permutations(s)
s0 = sorted(list(set(s0)))
for i in s0:
print(i)

用 itertools模块(循环器),中的permutations() ,将所有结果排序,返回为新的循环器。
然后用set弄掉重复的进行了
第二题:
class Solution:
def validate_IPv4(self, IP: str) -> str:
nums = IP.split(’.’)
for x in nums:
# Validate integer in range (0, 255):
# 1. length of chunk is between 1 and 3
if len(x) == 0 or len(x) > 3:
return “Neither”
# 2. no extra leading zeros
# 3. only digits are allowed
# 4. less than 255
if x[0] == ‘0’ and len(x) != 1 or not x.isdigit() or int(x) > 255:
return “Neither”
return “IPv4”

def validate_IPv6(self, IP: str) -> str:
    nums = IP.split(':')
    hexdigits = '0123456789abcdefABCDEF'
    for x in nums:
        # Validate hexadecimal in range (0, 2**16):
        # 1. at least one and not more than 4 hexdigits in one chunk
        # 2. only hexdigits are allowed: 0-9, a-f, A-F
        if len(x) == 0 or len(x) > 4 or not all(c in hexdigits for c in x):
            return "Neither"
    return "IPv6"
    
def validIPAddress(self, IP: str) -> str:
    if IP.count('.') == 3:
        return self.validate_IPv4(IP)
    elif IP.count(':') == 7:
        return self.validate_IPv6(IP)
    else:
        return "Neither"

IPV=Solution()
IPV.validIPAddress(“172.16.254.1”)

对于 IPv4 地址,通过界定符 . 将地址分为四块;对于 IPv6 地址,通过界定符 : 将地址分为八块。
对于 IPv4 地址的每一块,检查它们是否在 0 - 255 内,且没有前置零。
对于 IPv6 地址的每一块,检查其长度是否为 1 - 4 位的十六进制数。
第三题:
def ing(a=str):
if “ing” in a:
return a
else:
return a+“ing”
显而易见

题目四:
def full_arrangement(smlst,biglst,index=[]):
length_smlst=len(smlst)
length_biglst=len(biglst)
if length_smlst for i in smlst:
if i in biglst:
index.append(biglst.index(i))
else:return False
sorted_index=sorted(index)
if sort_index==index:return True
else:return False
smlst=list(str(input()))
biglst=list(str(input()))
full_arrangement(smlst,biglst)
把需要求的条件分开
①smlst的所有元素都可以在biglst中找到:
用For来遍历smlst,确保每一个元素都可以在biglst中找到
②顺序相同:用sorted()来判断升序前后两个列表是否一致,如果一致,说明原来就是升序排列,符合条件,否则不符合

你可能感兴趣的:(学习,python,算法)