python基础——常见的一些基础题

这篇博客涵盖了Python的基础知识,包括字符串操作、正则表达式、斐波那契数列、质数判断、文件处理、日历打印、字符判断与转换、列表推导式以及Scrapy爬虫框架的简单介绍。通过实例展示了常用编程技巧和概念,适合初学者巩固基础知识。
摘要由CSDN通过智能技术生成

一、前言

在整理之前的一些笔记的时候,发现了这个文件,之前是保存在本地,但是经常忘记放在哪了,主要是一些基础,现在就想记录在博文里。

都是一些简单的基础题,还有一些容易遗忘的知识点,稍微记录以下。

二、笔记

1. 从hello world开始

各种print字符串的方法,format的用法,以及简便的使用方法

s = 'hello world'    

print(s)       #输出字符
print (s[2])    #输出字符的第三个字母
print (s[2:5])  #输出字符的第三个到第六个字符
print (s[2:])   #输出字符的第三个以后的字符
print (s * 2)   #输出字符两次
print (s + 'text')   #连接字符

print('我叫 %s,今年 %d 岁 '%('xiaoming',10))
print("我叫 {},今年 {} 岁".format("小明",10))
print(f"我叫{'小明'},今年 {10} 岁")


print("let's go!")

print('"life is short,you need python"')

print("\"life is short,let's learn python.\"")

print("I love python\nI love food!")

print("D:\\three\\two\\one\\now")

print(r"D:\three\two\one\now")

2. 正则表达式

一些常用的正则使用方法,还有一些常用的匹配方式和一些字符的匹配,之后在继续补充。

import re

re.search(pattern,string,flag)

re.I  可以忽略大小写,及大小写都会被查找到。

re.M 把每个字符串的每行的起始位置当作匹配起点。

re.S .一般情况点号操作符可以表示除换行符以外的所有操作符,使用re.S可以匹配所有的包括换行符的所有字符。

re.match(pattern,string,flag)   从字符串的起始位置开始匹配,没有则返回空。

re.findall(pattern,string,flag)  搜索字符串,返回以列表类型的所有可匹配的子串。

re.split(pattern,string,maxsplit = 0,flag,)  将字符串按照正则表达式匹配的结果进行分割,返回列表类型。
maxsplit 表示为最大分割数,剩余部分作为最后一个元素输出。

pat = re.compile(r'[1-9]\d{5}')
rst = pat.search('BIT10081')         使用面向对象的形式编译,可以多次编译

3. 斐波那契数列

斐波那契数列就是后一个数是前两个数的和,具体怎么解释,百度搜索以下哈。

写法很多,能实现就行。

a,b = 0,1
while b < 1000:
	print(b,end=',')
	a,b = b,a+b

输出:

在这里插入图片描述

4. 求一个区间内的质数

质数是指只能被1和自己整除的数,所以,就用这个原理,来求质数。

for n in range(2,100):
    for x in range(2,n):
        if n%x == 0:
           # print(n,'=',x,'*',n//x)
            break
    else:                               #表示穷尽了一组循环后,任然是false,执行else
        print(n,'is zhishu')

输出:

在这里插入图片描述

5. 获得文件夹内所有的文件名

可以获得带有后缀的文件名称列表

# 得到文件夹下的所有文件名称,注意:带后缀的文件名称
filenames = os.listdir(path)  
    for file in filenames:

6. 阶乘

使用阶乘的定义来写,具体怎么表述的,还是百度哈

def jiecheng(x = 1):
    s = 1
    for i in range(1,x+1):
        s = i * s
    return s

for i in range(1,10):
    print(jiecheng(i))

输出:

在这里插入图片描述

7. 打印九九乘法表

这个比较简单哈,稍微看看就好,关键在于输出的占位符,让他们一样长。

负号表示左对齐,没写或者写 + 表示右对齐,3表示占三个字符,大家可以试一下输出是什么样子的。

for i in range(1,10):
    for j in range(1,10):
        s = i * j
        print('%d*%d = %-3d' %(i, j, s), end= '\t')
    print('\n')

输出:

在这里插入图片描述

8. 阿姆斯特朗数 / 水仙花数

阿姆斯特朗数又叫做水仙花数,如果一个数各个位置上的数的三次方之和等于其本省,这个数就是阿姆斯特朗数。

这里写成了输入一个三位数,判断是否为水仙花数,如果要写成查找一定范围的水仙花数,可以稍微改写一下,这里我就不改了,有点懒了,哈哈哈。

关键就是使用地板除("//")来分解出各个位数,然后判断一下即可。

times = 5
list = []

while True:
    try:
        if times > 1:
            a = int(input('please input a number(1-999):'))
            if a > 99 and a < 1000 :
                bw = a // 100
                sw = a //10 % 10
                gw = a % 10
            else:
                print('请输入一个三位数:')
                continue
        else:
            break

        if bw**3 + sw**3 + gw**3 == a:
            list.append(a)
            print('阿姆斯特数:',list[:])
        else:
            print('不是阿姆斯特数')
        times -=1
    except ValueError as reason:
        print('输入错误',str(reason))
        continue

9. ASCII码和字符的转换

chr:把ASCII码转换成字符
ord:把字符转换成ASCII码

chr别和str啥的看岔了

a = 97
chr(a)

b = 'a'
ord(b)

10. 求最大公约数

最大公约数是最大的能被两个数同时整除的数,具体怎么解释,百度哈

a = int(input('please input a number:'))
b = int(input('please input another number:'))

for i in range(2,a+1):
    if a % i == 0 and b % i == 0:
        num = i
print(num)

输出:

在这里插入图片描述

11. 最小公倍数

最小公倍数就是最小的能同时整除两个数的数,具体百度哈!

最小公倍数肯定是在这两个数的任意一个数,至这两个数的积之间,找到一个能同时整除这两个数,就退出循环。

a = int(input('please input a number:'))
b = int(input('please input a number:'))

for i in range(a,a*b+1):
    if i % a == 0 and i % b == 0:
        num = i
        break
print(num)

输出:

在这里插入图片描述

12. 打印日历

我觉得没什么用哈,看看就好,要是有啥用,可以评论补充下。

import calendar
#mm = int(input('输入月份:'))
calendar.setfirstweekday(firstweekday = 6 )

while True:
    try:
        yy = int(input('输入年份:'))
        for i in range(1,13):
            print(calendar.month(yy,i))
    except (NameError,KeyError) :
        print('谢谢使用!!!')

13. 字符类型的判断

可以用作判断条件

print("-----测试实例-----")
str = "Hello World"
print('是否都是数字或者字母:',str.isalnum())
print('是否所有字符都是字母:',str.isalpha())
print('是否所有字符都是数字:',str.isdigit())
print('是否所有字符都是小写:',str.islower())
print('是否所有字符都是小写:',str.isupper())
print('是否所有单词都是首字母大写,像标题:',str.istitle())
print('是否所有字符都是空白字符',str.isspace())

输出:

在这里插入图片描述

14. 大小写转换

str = "Hello World"
print('把所有字符中的小写字母转换成大写字母:',str.upper())
print('把所有字符中的大写字母转换成小写字母:',str.lower())
print('把第一个字母转化为大写字母,其余小写:',str.capitalize())
print('把每个单词的第一个字母转化为大写,其余小写:',str.title())

输出:

在这里插入图片描述

15. 判断输入字符的长度

while True:
	num = 0
	s = input ('输入字符:')
	for i in s:
		if i != '':
			num += 1
	print(num)

	if s == '':
	    break

输出:

有点小bug,就是字符串中有引号的时候,有时会出错,可以讨论一下怎么改合适。
在这里插入图片描述

16. 列表推导式

同理,还有元组推导式和字典推导式。

a = [i for i in range(100) if i%2 ==0 and i%3==0]

输出:

在这里插入图片描述

17. scrapy爬虫框架

之后会详细写scrapy,这里就简单提一下。

第一,更改目录,改成要建立爬虫工程的文件目录,创建爬虫。
    -- cd pycodes                                   (创建一个目录,存放工程文件) 
    -- scrapy startproject python123demo            (创建工程,工程名称) 
    -- cd python123demo                             (转移到工程目录中) 
    -- scrapy genspider demo python123.io           (生成一个爬虫,叫demo,最后一个为域名,只能爬取这个域名一下的相关链接)


第二,修改demo的代码,完善爬虫的功能,配置爬虫文件。和常规爬虫的代码类似。

    --sitting相关配置,
        -- ROBOTSTXT = FALSE   
        -- 任意位置加上:LOG_LEVEL = 'ERROR'
        -- 改use-agent: 复制粘贴,该游览器代理
        -- 开启管道,可以多通道处理:  'taobao.pipelines.TaobaoPipeline': 300,数值表示的是优先级,数值越小,优先级越高
    
    
    --parse解析response
        -- 直接使用response.xpath()方法,xpath语法和正常的一样处理
        -- xpath返回的是列表,列表元素是selector类型,使用'.extract()'方法转换成字符串,列表则是转换每一个列表元素转换成字符串,还有extract_first()方法
        -- 使用content= ''.join(content),用空白字符连接content中的元素,实现一个链接的功能。  


    --item,每次yield item就会调用一次item类
        -- spider中导入item类
        -- items创建管道: # name = scrapy.Field()
        -- 在parse中引入管道: 
            -- item = Python1Item()
            -- 把数据提交给item: item['title'] = a.xpath('p/text()').extract()
        -- 将item提交给管道:
            -- yield item
            
            
    --pipelines操作:持久化处理,多个管道类似操作,新建一个管道类,打开文件一次,写入N次,关闭一次: 
        -- 初始有一个process_item方法,用来处理item对象
        -- 承接item对象的数据:      movie = item['movie']
        -- 打开操作:
            -- 重写一个父类的方法,只会被爬虫调用一次:
                -- def open_spider(self,spider):
        -- 关闭文件操作:
            -- 重写一个父类方法:
                -- def close_spider(self,spider):
        
 
第三,运行爬虫:scrapy crawl demo(这个为爬虫的名字)

18. element object 转 str

etree.tostring(each)

直接将each(element object)解析成str对象

方向

在看完基础之后,就可以进阶看一些别的了,这里稍微记录一下,我用到的一些东西。

科学计算类:

numpy、pandas、scipy、sympy、matplotlib等

图像处理类

PIL(Python Imaging Library)、CV2(OpenCV-Python)等

爬虫类

Requests、Seleinum、Scrapy等

表格处理类

pandas、openpyxl、xlrd、xlwt等

正则匹配定位类

re、xpath、css、bs4等选择器

深度学习类

pytorch、TensorFlow、Keras、Sklearn(Scikit-Learn)等

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值