【Python】练习---序列字典(一)

"""
步骤:
1、提示用户输入一个字符串
2、设置一个标记flag
3、遍历字符串1/2的角标
  3.1若对应字符不相等,则输出False,循环停止
  3.2若循环正常结束,则表示回文,则True
"""
n = input("请输入一个字符串:")
flag = True
for i in range(len(n) // 2 + 1) :
    if n[i] != n[-i-1]:
        flag = False
        print(flag)
        break
if flag:
    print(flag)

测试结果:

"""
步骤:
1、提示用户输入一个社会安全号码
2、如果满足长度为11,角标0,1,2,4,5,7,8,9,10位为数字并且角标3,6为‘-’,则是正确的社会安全号码
"""
def isValid(ssn):
    if len(ssn) != 11:
        return False
    #  d d d - d d - d d d d
    #  0 1 2 3 4 5 6 7 8 9 10
    for i in range(len(ssn)):
        if i == 3 or i == 6:
            if ssn[i] != "-":
                return False
        else :
            if not ssn[i].isdigit():
                return False
    return True

ssn = input("Enter ssn :")
print(isValid(ssn))

测试结果:

"""
步骤:
1、提示用户输入一个密码
2、判断密码是否合法
   如果在字符串中找到一个字母则alpha_num + 1
   如果在字符串找到一个数字则digit_num + 1
   如果字符串总长度大于8,数字digit_num大于1,并且英文字母alpha_num不为0则密码合法
   否则不合法
"""
num = input("请设置一个密码:")
def isValid(num):
    digit_num = 0
    if len(num) < 8:
        return False
    if not num.isalnum():
        return False
    for i in num:
        if i.isdigit():
            digit_num += 1
    return digit_num >= 2

print(isValid(num))

测试结果:

"""
步骤:
1、定义函数判断字符串是否为某个字符串子字符串
2、提示用户输入两个字符串
3、调用函数,输出结果
"""
def finds(n1,n2):
    for i in range(len(n2)):
        if n1 == n2[i:i+len(n1)]:
            return True
    return False

n1 = input("请输入一个字符串:")
n2 = input("请输入一个字符串:")
print(finds(n1,n2))

测试结果:

"""
步骤:
1、定义统计字符出现次数的函数
2、提示用户输入字符串和要统计的字符
3、调用函数,输出结果
"""
s = input("请输入一个字符串:")
ch = input("请输入一个字符:")
def counts(s,ch):
    count = 0
    for i in range(len(s)):
        if s[i] == ch:
            count += 1
    return count
print(counts(s,ch))

测试结果:

"""
步骤:
1、定义统计字符串出现次数的函数(不重叠)
2、提示用户输入字符串以及要统计的字符串
3、调用函数

"""
def counts(s1,s2):
    count = 0
    for i in range(len(s1)):
        if s1[i:i+len(s2)] == s2:
            count += 1
    return count

s1 = input("Enter s1:")
s2 = input("Enter s2:")
print(counts(s1,s2))

测试结果:

"""
步骤:
1、定义二进制转十进制函数
 1.1将接收数据倒序
 1.2然后对应角标乘2的n次幂
 1.3 累加求和
2、提示用户输入二进制数
3、调用函数,输出结果
"""
def binaryToDecimal(binaryString):
    binaryString = binaryString[::-1]
    sum = 0
    for i in range(len(binaryString)):
        sum += int(binaryString[i]) * (2 ** i)
    return sum

s = input("Enter a binaryString:")
print(binaryToDecimal(s))

测试结果:

"""
步骤:
1、定义二进制转十进制函数
2、定义十进制数如果转向十六进制函数
3、定义二进制转十六进制函数
   3.1 将数字遍历从后向前切片操作,每四个一切
   3.2 将每一组切出来的数字转为十进制,调用函数1
   3.3 转为十进制后判断该数字是否大于10,若大于则转为对应字母ABCDEF
   3.4 将转化的数字倒序拼接起来
4、提示用户输入一个二进制数
5、调用函数,输出结果
"""
def binaryToDecimal(binaryString):
    binaryString = binaryString[::-1]
    sum = 0
    for i in range(len(binaryString)):
        sum += int(binaryString[i]) * (2 ** i)
    return sum

def getHex(binStr):
    for i in binStr:
        n = binaryToDecimal(binStr)
        if n < 10:
            return str(n)
        else:
            return chr(55 + n)


def binaryToHex(binaryValue):
    hexStr = ""
    i = len(binaryValue) - 4
    while True:
        j = i + 4
        if i < 0:
            i = 0
            hexStr = getHex(binaryValue[i:j]) + hexStr
            break
        hexStr = getHex(binaryValue[i:j]) + hexStr
        i = i - 4
    return hexStr


binaryValue = input("Enter a binary number:")
print(binaryToHex(binaryValue))

测试结果:

"""
步骤:
1、定义十进制转二进制函数
 1.1若数字为0,结束循环
 1.2数字不为0,和2取余,将结果拼接起来,再整除2
2、提示用户输入一个数字
"""
def decimalToBinary(value):
    str1 = ""
    while value != 0:
        y = value % 2
        str1 = str(y) + str1
        value //= 2
    return int(str1)
value = int(input("Enter a number:"))
print(decimalToBinary(value))

测试结果 :

def reverse(s):
    str1 = ""
    for i in range(len(s)):
        str1 = s[i] + str1
    return str1
s = input("Enter a str:")
print(reverse(s))

测试结果:

"""
步骤:
1、定义求两个字符串最长公共前缀函数
 1.1 以两个字符串长度最小的那个结束遍历
 1.2 从第一个字符开始比较,若相同,继续;不同直接停止遍历
2、提示用户输入两个字符串
3、调用函数,输出结果
"""
def prefix(s1,s2):
    a = min(len(s1),len(s2))
    for i in range(a):
        if s1[i] != s2[i]:
            return s1[:i]
    return s1[:i + 1]

s1 = input("Enter s1:")
s2 = input("Enter s2:")
print(prefix(s1,s2))

测试结果:

"""
步骤:
1、定义检测ISBN的函数
 1.1 依据公式计算校验数
 1.2 若校验数为10,第10位数字为x
 1.3 若校验数不为10,则第10位为校验数
2、提示用户输入一个ISBN-10号码
3、调用函数,输出结果
"""
def isbn(s):
    sum = 0
    str1 = ""
    for i in range(len(s)):
        str1 += s[i]
        sum = sum + int(s[i]) * (i + 1)
    if sum % 11 == 10:
        return (str1+"X")
    return (str1+str(sum % 11))

s = input("Enter the first 9 digits of a ISBN-10 as a string:")
print("The ISBN-10 number is ",isbn(s))

测试结果:

"""
步骤:
1、定义检测ISBN的函数
 1.1 根据公式计算校验数
 1.2 若校验数为10,第13位为0
 1.3 若校验数不为10,则第13位为校验数
2、提示用户输入一个ISBN-13号码
3、调用函数,输出结果
"""
def isbn(s):
    sum = 0
    sum1 = 0
    sum2 = 0
    for i in range(len(s)):
        if i % 2 == 0:
            sum2 += int(s[i])
        else:
            sum1 += 3 * int(s[i])
    sum = 10 - (sum1 + sum2) % 10
    if sum == 0:
        return s+"0"
    else:
        return s + str(sum)

s = input("Enter the first 12 digits of ISBN-13 as a string:")
print("The ISBN-13 number is ",isbn(s))

测试结果:

猜你喜欢

转载自blog.csdn.net/trichloromethane/article/details/108609730
今日推荐