1112day10:Python基础24题及Sql 语句编写

1.Python 有哪些数据类型?并举例

字符串,元组,字典,集合,列表,浮点数,布尔数,整型

2.列表和元组的区别?

列表属于可变数据类型元组属于不可变数据类型
列表为方括号元组为园括号

3.请写出一段Python代码实现删除一个list里面的重复元素

方法一
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
a=list(set(a))
print (a)

结果:[0, 1, 2, 3, 4, 5, 7, 8, 9, 10]

方法二
a=[1,2,4,2,4,5,6,5,7,8,9,0]
b={}
b=b.fromkeys(a)   #构建字典
print(b)
a=list(b.keys())  #字典的键不能重复
print(a)

结果:
{1: None, 2: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None, 0: None}
[1, 2, 4, 5, 6, 7, 8, 9, 0]

4.单引号,双引号,三引号的区别

单引号和双引号可以用来表示一个字符串
三引号的作用是:注释 还可以作为换行

5.看代码写结果

def func(a,b=[]):
    b.append(a)
    return b


v1 = func(1)
print(v1)
v2 = func(2,[10,20])
print(v2)
v3 = func(3)
print(v3)

运行结果:
[1]
[10, 20, 2]
[1, 3]

6.请问上题中def func(a,b=[]): 这种写法有什么陷阱

函数的第二个默认参数是一个list,当第一次执行的时候实例化了一个list,第三次执行还是用第一次执行的时候实例化的地址存储,所以第一和第三次执行的结果就是相同的,想每次执行只输出当前传入参数 ,默认参数应该设置为None

7.re的match和search区别?

== match ==:如果字符串开头有0个或多个字符,符合正则表达式返回匹配的对象如果不符合返回none
== search ==:扫描整个字符串有匹配的返回匹配对象没有返回none

8.re 中 .* 与 .*? 有何区别

.*贪婪模式匹配一个或多个
.*?非贪婪模式匹配一个

9.re 匹配邮箱代码 格式: 51245546@qq.com |或者| kkbig@163.com

[1-9]\d+@qq.com  
[a-z]+@163.com

10.列表元素去重

方法一
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
a=list(set(a))
print (a)

结果:
[0, 1, 2, 3, 4, 5, 7, 8, 9, 10]


方法二
a=[1,2,4,2,4,5,6,5,7,8,9,0]
b={}
b=b.fromkeys(a)
print(b)
a=list(b.keys())
print (a)

结果:
{1: None, 2: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None, 0: None}
[1, 2, 4, 5, 6, 7, 8, 9, 0]

11.怎么将列表转为字符转

当这里面有不能凭借的东西,比如元素,join就用不了
l = [1,2]
print(''.join(l))  #报错

l = [False,None]
print(','.join(l)) #报错


l = str([False,None])
print(l[5:])   #可以

12.怎么让字符的首字母大写,其他字母小写

upper()
lower()
title()
swapcase()

import string
print(string.capwords('hello world'))

13.怎么让列表按相反顺序排列

方法一
s = [1,5,2,3]
s.reverse()
print(s)

结果:[3, 2, 5, 1]

方法二
s = [1,5,2,3]
print(s[::-1])

结果:[3, 2, 5, 1]

14.把字符串里面的数字全部替换成大写A,正则替换:re.sub

import re
strs = 'dgfsgsfg3214sfgsdh232dfg535'
result = re.sub('\d+?','A',strs)
print(result)

结果:dgfsgsfgAAAAsfgsdhAAAdfgAAA

15.怎么给字典中不存在的key指定默认值

dicts = {'hello':12}
print(dicts.get('hellos','not found'))

16.高级函数求1~100的和

filter() sorted()
from functools import reduce
print(reduce(lambda x,y:x+y,range(101)))

结果:5050

17.怎么快速启动浏览器打开指定网站并搜索

from selenium import webdriver
from selenium.webdriver.common.by import By

dr = webdriver.Chrome('D:\\an\Lib\site-packages\\chromedriver.exe')  #指定驱动位置

dr.get('https://www.baidu.com/')

dr.find_element(by=By.XPATH,value='//*[@id="kw"]').send_keys('python')   #F12打开,path找到XPATH,value后边跟XPATH规则
dr.find_element(by=By.XPATH,value='//*[@id="su"]').click()     #定位按钮,点击搜索

18.私有属性,私有属性安全吗?

class Man:
    pass
class Student(Man):
    pass
    def __init__(self,name):
        self.__name = name #self._name = name:变成一个杠,我不希望你去在外边调用这个属性,但是你在外边可以调用,加这个杠的意思就是写这个类的程序员不希望你在外边调用

    def get_name(self):
        print(self.__name)

stu = Student('张三')  #实例化
stu.get_name()  #可以打印
stu._Student__name = 'hello'  #实际上在外边起来一个别名
print(stu._Student__name)

结果:
张三
hello



issubclass()   #判断一个类是否十另一个类的子类
isinstance()   #判断这个对象
print(issubclass(Student,Man))

stu = Student()  #先实例化
print(isinstance(stu,Man))  #判断stu是不是Man的子

19.random有关的方法

import random
random.shuffle()
random.randrange()
random.choice()
random.sample()
random.random()
print(random.randint(1,100))

20.集合

set1 = {1,2,3}
set2 = {2,3,4}
print(set1|set2)
print(set1&set2)  #与字符
print(set1-set2)
print(set1^set2)

21.创建文件夹

import os
os.system('mkdir user')

22.执行命令,获取它输出的值

import subprocess

cmd = 'mkdir bbb'
r = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) #stdout=subprocess.PIPE将cmd里面的输出指向管道
out = r.communicate()[0]   #指定完就可以打印出来

print(out)

23.遍历

ord ()
chr ()

for i in range(1,200):
    print(chr(i))

23.打包文件成为exe

pip install pyinstaiier
pyinstaller -F xxxxx文件名

24. Sql 语句编写

第一张表 表名 CompanyNameTable
在这里插入图片描述

第二张表 表名 UserNameTable
在这里插入图片描述

第三张表 表名 UserPayTable
在这里插入图片描述
要求更新第一张表isvip (是否是会员)的状态 (0是非会员 1是 会员).
提示: 第三表UserPayTable的EndDate大于当前时间的公司认为是会员。

方法一
UPDATE companynametable
SET isvip = '1'
WHERE
	cbsid IN (
		SELECT
			cbsid
		FROM
			usernametable
		WHERE
			user_name IN (
				SELECT
					username
				FROM
					userpaytable
				WHERE
					EndDate > now()
			)
	)


思路
SELECT
	*
FROM
	companynametable
WHERE
	cbsid IN (
		SELECT
			cbsid
		FROM
			usernametable
		WHERE
			user_name IN (
				SELECT
					username
				FROM
					userpaytable
				WHERE
					EndDate > now()
			)
	)
方法二
UPDATE companynametable
SET isvip = '1'
WHERE
	cbsid IN (select * from(
		SELECT
			cbsid
		FROM
			companynametable AS cp
		JOIN usernametable AS ut USING (cbsid)
		INNER JOIN userpaytable AS up ON ut.user_name = up.UserName
		WHERE
			up.enddate > now()
	)as AA)


思路
-- 嵌套子查询,方法一
select now()
select * from companynametable where cbsid in
select * from usrnametable where user_name in
SELECT username from userpaytable where enddate>now()
update companynametable set isvip='1'


select cbsid from usernametable where user_name in(select username from userpaytable where EndDate > now())


-- 三表联查,方法二
update companynametable set isvip='1' where cbsid in
-- 先用select * from 先查一下,然后才能套
select cbsid from companynametable as cp join usernametable as ut using(cbsid) INNER JOIN userpaytable as up on ut.user_name=up.UserName
where up.enddate>now()

-- 方法一三表联查
select * from companynametable join usernametable using(cbsid)

select * from companynametable as cp join usernametable as ut using(cbsid) INNER JOIN userpaytable as up on ut.user_name=up.UserName
select cbsid from companynametable as cp join usernametable as ut using(cbsid) INNER JOIN userpaytable as up on ut.user_name=up.UserName where up.enddate>now()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ゆきな

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值