Python-基础语法
#----------------------------------------------
print("hello")
print("world")
print("你好")
#输出不换行
print("hello,",end=" ")
print("world")
#变量
#普通赋值
name="张三"
print(name)
print("name")
name="李四"
print(name)
#链式赋值
a=b=c=1
print(a,b,c)
#序列解包赋值
a,b,c,d=5,6,7,8
print(a,b,c,d)
a=4
print(a)
_a1=6
a_1=7
A=5
print(a,A)
age=18
sex="男"
#假设变量 a = 3, b = 4 如何将a,b两个变量的值互换
#方法一
a=3
b=4
c=a
a=b
b=c
print(a,b)
#方法二
a=3
b=4
a,b=b,a
print(a,b)
#输入:input作用是接收从键盘中输入的数据
#name=input("请输入您的名字:")
print("请输入名字:")
name=input()
print("您的名字是:",name)
#变量的数据类型
a=4
b=1.5
c="89"
print(type(a))
print(type(b))
print(type(c))
#数据类型的转换
#整数转换为小数
floata=float(a)
print(type(floata),floata)
#小数转换为整数
intb=int(b)
print(type(intb),intb)
#字符串转换为整数?(字符不能转换为数字)
intc=int(c)
print(type(intc),intc)
#1、让用户从键盘输入两个数字,然后计算出他们的和
a=int(input("请输入一个数:"))
b=int(input("请再输入一个数:"))
print("两数之和为:",a+b)
#2、你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
a=float(input("请输入一个数:"))
#print("四舍五入之后为:",int(a+0.5))
print("四舍五入之后为:",round(a))
#字符串拼接
str1="aaaa"
str2="bbb"
str3=5
print(str1+str2)
print(str1+str(str3))
print(str1,str3)
#换行符\n
print(str1+"\n"+str2)
#缩进\t
print(str1+"\t"+str2)
#转义字符\
print('let\'s go!')
print("C:\\now\\to")
print(r"C:\now\to")
#字符串的索引
str1="heelpp, wrjkjkd"
print(str1[0])
print(str1[1])
print(str1[6])
print(str1[7])
print(str1[8])
#print(str1[30])
e="p88" not in str1
print(type(e),e)
#字符串反转输出
print(str1[::-1])
print(5-3)
print(5*3)
print("hello"*6)
#取结果
print(10/3)
#取整,或者商
print(10//3)
#取余数
print(10%3)
#幂运算
print(2**4)
#列表
list1=[1,2,"apple",[1,5,6],"aa"]
print(type(list1))
print(list1)
#访问列表元素
print(list1[3])
print(list1[4])
#统计列表长度
print(len(list1))
#向列表增加元素
list1.append("张三")
print(list1)
#修改列表元素
list1[1]=10
print(list1)
#删除列表元素
del list1[0]
print(list1)
#del list1
#列表切片
print(list1[0:2])
print(list1[1:4])
print(list1[:4])
print(list1[2:])
print(list1[:])
print(5 in list1)
print([1, 5, 6] in list1)
#元组:元组的内容不可更改
t1=(1,5,6,[1,2],"apple")
print(type(t1),t1)
t2=(9)
t3=(9,)
print(type(t2),type(t3))
print(t1[3])
print(t1[3:5])
#数据类型:int,float,str,bool,list,tuple
#判断语句:if...elif...elif.....else...
answer=8
guess=int(input("请猜测一个整数:"))
if answer==guess:
print("恭喜你答对了")
else:
print("很遗憾猜错了")
#程序优化
answer=8
guess=int(input("请猜测一个整数:"))
if answer==guess:
print("恭喜你答对了")
else:
if answer>guess:
print("小了")
else:
print("大了")
#继续优化:elif...
answer=8
guess=int(input("请猜测一个整数:"))
if answer==guess:
print("恭喜你答对了")
elif answer>guess:
print("小了")
else:
print("大了")
小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖
h=float(input("请输入您的身高(M):"))
w=float(input("请输入您的体重(KG):"))
bmi=w/h**2
if bmi<18.5:
print("过轻")
elif 18.5<=bmi<25:
print("正常")
elif 25<=bmi<28:
print("过重")
elif 28<=bmi<32:
print("肥胖")
else:
print("严重肥胖")
#如果今天是周末,天气晴朗,则去户外活动,如果天气不好,则室内活动,如果不是周末,就去上班
today="周末"
weather="晴朗"
if today=="周末":
if weather=="晴朗":
print("户外活动")
else:
print("室内活动")
else:
print("上班")
#while循环:while....条件为真,则执行循环语句
#循环输出10次欢迎你
#循环变量
times=1
while times<11:
print("欢迎你")
#times=times+1
times+=1
#循环输出1-100
i=1
while i<=100:
print(i,end=" ")
i+=1
#break:遇到break就跳出整个循环
#continue:遇到continue就跳出当前循环,继续下一次循环
times=0
while times<3:
answer=8
guess=int(input("请猜测一个整数:"))
if answer==guess:
print("恭喜你答对了")
#break
continue
elif answer>guess:
print("小了")
else:
print("大了")
times+=1
#1)求100以内的奇数之和 99+97+95+93+92+91......1
i=1
sum=0
while i<100:
print(i,end=" ")
sum=sum+i
i=i+2
print(sum)
#2)创建一个包含了100以内奇数的列表
list=[]
i=1
while i<100:
list1.append(i)
i=i+2
print(list1)
#----------------------------------------------
#1)求100以内的奇数之和
i=1
sum=0
while i<100:
#print(i,end=" ")
sum=sum+i
i=i+2
print(sum)
#2)创建一个包含了100以内奇数的列表
list1=[]
i=1
while i<100:
#print(i,end=" ")
list1.append(i)
i=i+2
print(list1)
#3)用代码实现:一个程序读入3个数,
#把这三个数值看作一个三角形的3条边的长度值。
#这个程序要打印出信息,说明这个三角形是普通的、是等腰的、还是等边的还是非三角形。
a=float(input("请输入三角形的第一边:"))
b=float(input("请输入三角形的第二边:"))
c=float(input("请输入三角形的第三边:"))
if a>0 and b>0 and c>0 and a+b>c and a+c>b and b+c>a:
if a==b==c:
print("这是等边三角形")
elif a==b or a==c or b==c:
print("这是等腰三角形")
else:
print("这是普通三角形")
else:
print("这是非三角形")
#for循环遍历不规则列表
for i in [1,5,6,"a",10]:
print(i)
#for循环遍历字符串
for i in 'helloworld':
print(i)
#for循环遍历规则列表
for i in range(1,100):
print(i,end=" ")
for i in range(100):
print(i,end=" ")
for i in range(1,100,2):
print(i,end=" ")
#用for循环求1-100之和
sum=0
for i in range(1,101):
sum=sum+i
print(sum)
#嵌套循环:外循环执行一次,内循环执行一圈
for i in range(1,5):
#print("++++++++>",i)
for j in range(1,4):
print("++++++++>",i)
print("********>",j)
for i in range(1,4):
for j in range(1,6):
print("*",end="")
print()
#九九乘法表
for i in range(1,10):
for j in range(1,i+1):
#print(j,"*",i,"=",j*i,end=" ")
#格式化输出:%d表示整数,%f表示小数,%s表示字符串
print("%d*%d=%d" %(j,i,j*i),end=" ")
print()
#我的名字叫张三,我今年8岁,我的压岁钱是200.5元
name="张三"
age=8
money=200.5
print("我的名字叫",name,",我今年",age,"岁,","我的压岁钱是",money,"元")
print("我的名字叫%s,我今年%d岁,我的压岁钱是%0.1f元" %(name,age,money))
#排序
li1=[5,6,8,4,3,1]
li1.sort()
print(li1)
#字典
d1={"苹果":"apple","梨":"pear","香蕉":"banana","苹果1":"apple"}
print(type(d1),d1)
print("香蕉的英文是:",d1["香蕉"])
#修改键值
d1["苹果1"]="apple1"
print(d1)
#获取字典的所有键keys()
for i in d1.keys():
print(i,end=" ")
#print(d1.keys())
print()
#获取字典的所有值values()
for i in d1.values():
print(i,end=" ")
print()
#获取字典的所有元素items()
for i in d1.items():
print(i,end=" ")
print()
#获取字典的键值,不报错get()
print(d1.get("香蕉55"))
#判断键是否存在字典
print("苹果" in d1)
#函数
#1.封装一个没有参数,没有返回值的函数
def hello():
print("你好,欢迎你")
#函数调用
hello()
#2.封装一个有参数,没有返回值的函数
def h1(name):
print("%s,你好,欢迎你" %(name))
#函数调用
h1("张三")
#3.封装一个有多个参数,没有返回值的函数
def h2(name,age):
print("我的名字叫%s,我今年%d岁" %(name,age))
#函数调用
h2(age=18,name="张三")
h2("张三",18)
#4.封装一个参数带默认值,没有返回值的函数
def h3(name,age=18):
print("我的名字叫%s,我今年%d岁" %(name,age))
#函数调用
h3("张三",19)
h3("张三")
#4.封装一个有参数,有返回值的函数:返回值的作用是方便我们对函数结果进行二次利用
def add(a,b):
return a+b
#调用函数
c=add(3,4)*2
print(c)
#练习:分别创建加法、减法、乘法、除法的函数(计算两个数的运算即可)
def add(a,b):
return a+b
def jianfa(a,b):
return a-b
def chengfa(a,b):
return a*b
def chufa(a,b):
if b==0:
return "除数不能为0"
else:
return a/b
print(chufa(4,2))
#模块
#第一种方法
import time
print(111)
time.sleep(3)
print(222)
print(time.ctime())
#第二种方法
#from time import sleep,ctime
from time import *
print(333)
sleep(3)
print(ctime())
#random模块
from random import choice,randint
list1=[1,5,6,"a","b",8]
print(choice(list1))
a=randint(1,20)
print(a)
#随机生成一个范围1-10的列表,并求和,列表长度为6
from random import choice,randint
list1=[]
sum=0
for i in range(1,7):
a=randint(1,10)
print(a,end=" ")
list1.append(a)
sum=sum+a
print(sum)
from module.calc import *
print(add(3,5))
print(chufa(4,0))
#异常处理:try...except...finally
try:
a=4/1
print(a)
except:
print("程序出错了")
finally:
print("不管程序有没有出错,我必须要输出")
#3)用代码实现:一个程序读入3个数,
#把这三个数值看作一个三角形的3条边的长度值。
#这个程序要打印出信息,说明这个三角形是普通的、是等腰的、还是等边的还是非三角形。
try:
a=float(input("请输入三角形的第一边:"))
b=float(input("请输入三角形的第二边:"))
c=float(input("请输入三角形的第三边:"))
if a>0 and b>0 and c>0 and a+b>c and a+c>b and b+c>a:
if a==b==c:
print("这是等边三角形")
elif a==b or a==c or b==c:
print("这是等腰三角形")
else:
print("这是普通三角形")
else:
print("这是非三角形")
except:
print("您输入的数据不合法,应该输入数字")
#类和对象(选择性理解)
#类:抽象概念,人类,动物类,汽车类,水果类
#对象:实体,对象=属性(特征)+方法(行为)
class father():
skin="黄皮肤"
name="张三"
def drive(self):
print("我会开车")
#调用类的属性和方法
#1.创建类的一个对象(类的实例化)
zhangsan=father()
print("我的名字叫%s,我的皮肤是%s" %(zhangsan.name,zhangsan.skin))
zhangsan.drive()
#类的继承
class son(father):
age=3
mouth="大嘴巴"
def jieshao(self,name,money):
print("我的名字叫%s,我今年%d岁,我的压岁钱是%d,我的皮肤是%s" %(name,self.age,money,self.skin))
#创建子类的一个对象
xiaoming=son()
xiaoming.jieshao("小明",200)
xiaoming.drive()
#----------------------------------------------
#冒泡
l=[6,5,4,3,2,1]
for i in range(1,6):
for j in range(0,5):
if l[j]>l[j+1]:
l[j],l[j+1]=l[j+1],l[j]
print(l)
#1,完善冒泡排序
l=[]
n=int(input("请问您要比较几个数?:"))
for i in range(0,n):
a=int(input("请输入列表第%d个数:" %(i+1)))
l.append(a)
print(l)
for i in range(1,n):
for j in range(0,n-1):
if l[j]>l[j+1]:
l[j],l[j+1]=l[j+1],l[j]
print(l)
#2,对列表a=[1,5,5,6,6,8,9,9,10]去重处理
a=[1,5,5,6,6,8,9,9,10]
b=[]
for i in a:
if i not in b:
b.append(i)
print(b)
#import selenium
from selenium import webdriver
from time import *
#获取浏览器驱动(获取浏览器的控制权)
dr=webdriver.Chrome()
#dr=webdriver.Firefox()
#添加隐式等待(提高执行效率)
dr.implicitly_wait(10)
#打开百度首页
dr.get("https://www.baidu.com")
#dr.get("https://www.so.com/haosou.html")
#定位搜素框
#1,id
#searchl=dr.find_element_by_id("input")
#2,name
searchl=dr.find_element_by_name("q")
#操作搜素框,输入内容
#searchl.send_keys("selenium")
searchl.send_keys("时间")
#定位搜索按钮
#3,class定位
#searchButton=dr.find_element_by_class_name("skin-search-button")
#4,tag_name定位 [get_attribute:获取元素的属性值]
searchButtons=dr.find_elements_by_tag_name("input")
for i in searchButtons:
if i.get_attribute("type")=="submit" and\
i.get_attribute("id")=="search-button":
i.click()
#点击搜素按钮
#searchButton.click()
#定位并点击 360导航
dr.find_element_by_link_text("360导航").click()
#定位并点击 新闻
dr.find_element_by_link_text("新闻").click()
#dr.find_element_by_partial_link_text("猪肉价稳了").click()
#用绝对路径定位搜索框并输入内容
dr.find_element_by_xpath("html/body/div/div/div/div/div/form/span/input").send_keys("selenium")
#通过元素属性定位
#dr.find_element_by_xpath("//i*[@suggestwidth='501px']").send_keys("selenium")
dr.find_element_by_xpath("//i*[@suggestwidth='501px'and @autocomplete='off']").send_keys("selenium")
#层级加属性定位
dr.find_element_by_xpath("//span[@id='input-container']/div/input").send_keys("selenium")
#通过css定位元素
#dr.find_element_by_css_selector("#input").send_keys("selenium")
#dr.find_element_by_css_selector("input[suggestwidth='501px']").send_keys("selenium")
#dr.find_element_by_css_selector("div#suggest-align>input").send_keys("selenium")
dr.find_element_by_css_selector("form>span>div>input").send_keys("selenium")
#send_keys 上传图片
dr.find_element_by_css_selector(".soutu-btn").click()
dr.find_element_by_css_selector("input[class='upload-pic']").send_keys(r"F:\图片\2017.jpeg")
# clear 清空
dr.find_element_by_id("kw").send_keys("selenium")
sleep(3)
dr.find_element_by_id("kw").clear()
#text 返回元素的文本信息
text1=dr.find_element_by_link_text("把百度设为主页").text
print(text1)
#text 返回元素的文本信息
gl=dr.find_element_by_link_text("把百度设为主页").get_attribute("id")
print(gl)
#关闭浏览器以及驱动
sleep(8)
dr.quit()
#----------------------------------------------
#自动注册脚本
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
def register(partial_username,n):
for i in range(0,n):
username=partial_username+str(i)
email=username+"@qq.com"
#获取浏览器驱动(获取浏览器的控制权)
dr=webdriver.Chrome()
#打开ecshop首页
dr.get("http://192.168.3.66/ecshop/category.php?id=3")
#注册按钮-路径定位
dr.find_element_by_xpath("html/body/div/div[2]/ul/li/font/a[2]/img").click()
#注册内容
#用户名
dr.find_element_by_name("username").send_keys(username)
#email
dr.find_element_by_name("email").send_keys(email)
#密码
dr.find_element_by_xpath("//input[@id='password1']").send_keys("147258")
#确认密码
dr.find_element_by_xpath("//input[@id='conform_password']").send_keys("147258")
#MSN
dr.find_element_by_xpath("//input[@name='extend_field1']").send_keys("1789554@qq.com")
#QQ
dr.find_element_by_xpath("//input[@name='extend_field2']").send_keys("1789554")
#办公电话
dr.find_element_by_xpath("//input[@name='extend_field3']").send_keys("15466513213")
#家庭电话
dr.find_element_by_xpath("//input[@name='extend_field4']").send_keys("15466513213")
#手机
dr.find_element_by_xpath("//input[@name='extend_field5']").send_keys("15466513213")
#密码提示
#dr.find_element_by_name("sel_question").click()
#dr.find_element_by_css_selector("option[value='old_address']").click()
sq=dr.find_element_by_name("sel_question")
#Select(sq).select_by_index(3)
Select(sq).select_by_value("motto")
#Select(sq).select_by_visible_text("我的座右铭是?")
sleep(3)
#密码问题答案
dr.find_element_by_name("passwd_answer").send_keys("1546852")
#点击注册
dr.find_element_by_name("Submit").submit()
sleep(3)
dr.quit()
register("zhong",5)
from selenium import webdriver
from time import *
from selenium.webdriver import ActionChains
#获取浏览器驱动(获取浏览器的控制权)
dr=webdriver.Chrome()
#添加隐式等待(提高执行效率)
dr.implicitly_wait(10)
#打开百度首页
#dr.get("https://www.baidu.com")
#dr.get("https://www.so.com")
#dr.get("https://mail.163.com/")
dr.get("http://192.168.3.66/ecshop/index.php")
#窗口最大化
dr.maximize_window()
#输入搜素内容,点击搜素按钮
dr.find_element_by_name("q").send_keys("selenium")
dr.find_element_by_id("search-button").submit()
#等待时间
sleep(5)
#判断页面元素是否存在
t1=dr.find_element_by_link_text("360搜索首页")
t2=t1.is_displayed()
print(t2)
#定位设置元素,执行鼠标悬停操作
shezhi=dr.find_element_by_link_text("设置")
ActionChains(dr).move_to_element(shezhi).perform()
#点击搜索设置
dr.find_element_by_link_text("搜索设置").click()
sleep(2)
#点击设置
dr.find_element_by_link_text("保存设置").click()
#获取警告框的文本信息
t1=dr.switch_to.alert.text
print(t1)
sleep(2)
#点击确定
dr.switch_to.alert.accept()
#取消警告框
#dr.switch_to.alert.dismiss()
#网易点击密码登录
dr.find_element_by_link_text("密码登录").click()
#网易切换表单(含有iframe 是嵌套表单)
f1=dr.find_element_by_xpath("//iframe[@scrolling='no']")
dr.switch_to.frame(f1)
#网易输入账号
dr.find_element_by_name("email").send_keys("123")
#dr.find_element_by_id("dologin").submit()
#切换到默认表单
dr.switch_to.default_content()
#点击企业邮箱
dr.find_element_by_link_text("企业邮箱").click()
#获取当前的所有窗口句柄
windows=dr.window_handles
print(windows)
#切换到当前窗口
dr.switch_to.window(windows[1])
dr.find_element_by_id("regContactName").send_keys("456")
#操作滚动条
dr.execute_script("window.scrollTo(0,3000);")
sleep(3)
dr.execute_script("window.scrollTo(0,0);")
#关闭浏览器
sleep(10)
#关闭当前窗口
#dr.close()
#关闭所有窗口和驱动
dr.quit()
'''
###eschop后台时间设置
from selenium import webdriver
from time import *
from selenium.webdriver import ActionChains
from datetime import *
#获取浏览器驱动(获取浏览器的控制权)
dr=webdriver.Chrome()
#添加隐式等待(提高执行效率)
dr.implicitly_wait(10)
#打开ecshop登录页面
dr.get("http://192.168.3.250/ecshop/admin/privilege.php?act=logout")
#窗口最大化
dr.maximize_window()
#输入账号密码
dr.find_element_by_name("username").send_keys("admin")
dr.find_element_by_name("password").send_keys("admin888")
#点击登录
dr.find_element_by_css_selector("input[type='submit']").click()
#切换表单1(含有iframe 是嵌套表单)
f1=dr.find_element_by_xpath("//frame[@id='menu-frame']")
dr.switch_to.frame(f1)
#点击商品列表
dr.find_element_by_link_text("夺宝奇兵").click()
#切换默认表单
dr.switch_to.default_content()
#切换表单3
f2=dr.find_element_by_id("main-frame")
dr.switch_to.frame(f2)
#点击夺宝奇兵
dr.find_element_by_link_text("添加夺宝奇兵").click()
#输入活动名称
dr.find_element_by_name("snatch_name").send_keys("夺宝奇兵之810")
dr.find_element_by_name("keywords").send_keys("A810")
#点击搜索
dr.find_element_by_xpath("//input[@value=' 搜索 ']").click()
#调用js删除readonly属性
js="document.querySelectorAll('#start_time_id')[0].removeAttribute('readonly')"
dr.execute_script(js)
#把原来默认时间清空
dr.find_element_by_css_selector("#start_time_id").clear()
#输入活动开始时间
dr.find_element_by_css_selector("#start_time_id").send_keys(str(date.today()+timedelta(2))+" 00:00")
#打印网页源代码
text1=self.dr.page_source
print(text1)
self.assertIn("发表留言成功",text1)