成为爬虫高手的课前练习——分支/循环/列表/函数,综合练习题

努力成为爬虫高手的第n天,今天主要对前面学习的知识进行综合练习。

  1. 输入多个数字放入一个列表,统计其中重复数字出现的次数
输入1,2,3,4,5,1,2,3,1,2,
输出{1:3, 2:3, 3:2}
l2 = list(input("请输入数字:")) # 输入字符串并转换为列表
d = {} # 创建空字典
for i in l2: # 使用for循环来遍历输入的列表
    if l2.count(i) > 1 and i not in d: # 判断列表中那些元素重复出现
        d[i] = l2.count(i) # 重复出现的元素装入字典中并输出数量
print(d) # 输出字典
  1. 输入一个字符串,统计该字符串中每个字符出现的次数
“hello world”
{“h”:1, “e”:1, ”l”:3, ”o”:2, ”r”:1, ”d”:1, “w”: 1, “ ”:1}
"""
本体思路与上题一致,去掉了if判断是否重复出现,只要出现就统计次数。
"""
l2 = str(input("请输入字符串:"))
d = {}
for i in l2:
    if i not in d:
        d[i] = l2.count(i)
print(d)
  1. 封装函数该函数接受两个参数
输出它们的最大公约数和最小公倍数
def div_mul(n, m): # 自定义函数
    max_1 = max(n, m) # 判断大小
    min_1 = min(n, m)
    while True:
        if n % min_1 == 0 and m % min_1 == 0: # 判断公约数
            break
        min_1 -= 1
    while True:
        if max_1 % m == 0 and max_1 % n == 0: # 判断公倍数
            break
        max_1 += 1
    return min_1, max_1 # 返回值为最大公约数,与最小公倍数


print(div_mul(33, 75))
  1. 封装函数该函数接受以下格式的url地址
将参数按以下格式进行处理输出成字典格式
url = "https://www.zzy0371.com/login?next=news&page=10&num=20"
输出结果
{
"next": "news",
"page": 10,
"num": 20
}
def url_address(url):
    url = str(url)
    url1, url3 = url.split("?") # 使用split来把字符串进行分割
    url2 = url3.split("&")
    d = {}
    for i in url2:
        a, b = i.split("=")
        d[a] = b # 增加字典元素,中括号里为键名,等于键值
    print(d)


url_address("https://www.zzy0371.com/login?next=news&page=10&num=20")
#该代码仅能实现初级的分离url地址,可以进行添加循环来完善各种格式的地址分离
  1. 随机多少次可以得到10个不同的位于10-30之间的素数

本体两种思路

第一种不使用函数直接完成全部要求(也可以理解为使用一个函数完成全部诉求)

import random # 导入随机模块

l = []
count = 0
while len(l) < 10: # 设置循环条件,当列表中存够十个不同的素数时结束循环
    a = random.randint(10, 1000) # 使用随机函数输出10到1000内的随机数
    for i in range(2, a): # 判断该随机数是不是素数
        if a % i == 0:
            break
    else:
        if a not in l: # 如果该随机素数在列表里不重复则加入列表
            l.append(a)
    count += 1
print(l, count)

第二种思路先使用自定义函数完成素数的判定,在进行随机输入数字的函数书写

def is_sushu(n): # 先使用自定义函数判断是不是素数
    for i in range(2, n):
        if n % i == 0:
            count = False
            break
    else:
        count = True
    return count


def suiji_list(n, m): # 再使用自定义函数随机输出数字,并判断是否重复
    l = []
    count = 0
    while len(l) < 10:
        a = random.randint(n, m)
        if is_sushu(a) and a not in l:
            l.append(a)
        count += 1
    return l, count


print(suiji_list(10, 1000))
  1. 编写一个函数,接受一个数字n作为参数,该函数可以随机生成n个整数,并返回列 所有整数的最大值
def random_list(n): # 设置形参,作为接受n变量
    l = []
    for i in range(n): # 设置循环n次,从而输入n个数
        l.append(random.randint(1, 100)) # 随机生成数
    return l, max(l) # 求列表中最大值


print(random_list(10))
  1. 编写一个 Python 函数,接受一个字符串作为参数,并返回该字符串中所有大写字母的数量
def str_maj(str_1): # 自定义函数
    d = {}
    count = 0
    str_1 = str(str_1)
    for i in str_1: # 遍历字符串将所有大写字母筛选出来
        if "A" <= i <= "Z":
            d[i] = str_1.count(i) # 使用count函数获得大写字母数量
            count += 1
    a = f"大写字母每个的个数为{d}, 共有{count}个大写字母"
    return a # 设置返回值


print(str_maj("jhsdSUIUSDHGIJSDBVsuhbus"))
  1. 编写函数,接受一个字符串和一个字符作为参数,并返回该字符串中该字符出现的次数。
def frequency(n, m): # 设置自定义函数,并设置n, m为需要获取的参数
    n = str(n)
    m = str(m) # 转为字符串形式
    if m in n:
        a = f"{m}:{n.count(m)}" # 如果m是字符串n里面的元素,则获取数量
    else:
        a = "没有该字符" # 如果没有该字符则返回没有该字符串
    return a # 设置返回值


print(frequency("adgiuagfiua", "a"))
  1. 编写函数,接受一个字符串作为参数,并返回该字符串中第一个不重复的字符。
def ste_1(str_1):
    str_1 = str(str_1)
    for i in str_1: # 遍历该字符串
        if str_1.count(i) == 1: # 判断该字符是不重复字符
            break # 如果找到第一个不重复字符,则结束循环
    else:
        i = "没有不重复字符串"
    return i # 设置返回值


print(ste_1("ahahhaihoaihoaih"))
  1. 编写函数求m-n以内所有的相差为k的素数对
def primes(m, n, k): # 设置自定义函数 , m-n以内,相差为k的参数
    m = int(m)
    n = int(n)
    k = int(k)
    c = []
    for i in range(m, n + 1): # 循环输出m-n以内的数字
        b = []
        for j in range(2, i): # 通过for循环并使用求余字符来判断是否为素数
            if i % j == 0:
                break
        else:
            for o in range(2, i + k): # 判断素数对是否为素数
                if (i + k) % o == 0:
                    break
            else:
                b.extend([i, i + k])
                c.append(b)
    return c


print(primes(10, 100, 6))
  1. 编写函数返回斐波那契数列的第n个数
斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89...
def pebonacci(n): # 设置自定义函数以及参数n
    n = int(n)
    a = 1
    c = 0
    for i in range(n - 1): # 循环n次
        a = a + c # 每次循环a 等于 本身加上一个数。
        c = a - c # 每次循环c 等于a减去上一个c
    return a


print(pebonacci(10))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值