十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
import math
隆昌网站建设公司创新互联,隆昌网站设计制作,有大型网站制作公司丰富经验。已为隆昌1000多家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的隆昌做网站的公司定做!
a=int(input('请输入a的值:'))
b=int(input('请输入b的值:'))
c=int(input('请输入c的值:'))
derta=(b**2-4*a*c)
if a == 0:
print('您输入的a为0,方程ax^2+bx+c=0不能作为一元二次方程')
elif derta0:
print('方程无实数解')
elif derta==0:
print('方程有解,有一个实数解:')
print(b*(-1)/(a*2))
else:
print('方程有解,有两个实数解:')
print((-1*b+math.sqrt(derta))/2*a)
print((-1*b-math.sqrt(derta))/2*a)
max_y=max(list(map(lambda x:[x,x*(x-1)], [x for x in range(0,32)])))
print(f"[x,y]={max_y=}")
'''python运行效果
[x,y]=max_y=[31, 930]
'''
找了一圈NBA文字直播网站,发现手机版直播吧有现成的接口,直接返回json格式数据。那就是它了,听我慢慢道来。
首先在电脑浏览器打开手机版直播吧,我用的是chrome浏览器,在Network中可以看到,它不停地用GET方式请求,这个地址会返回当前正在进行的所有类型比赛的基本情况,根据其中的type字段过滤掉非NBA比赛就OK了。其中最重要的是ID字段,之后的所有操作都需要用到。返回的数据如下所示:
{
"code": "2760624",
"second": "10",
"list": [
{
"id": "96233",
"sdate": "2017-04-20",
"time": "10:30",
"url": "/zhibo/nba/2017/042096233.htm",
"type": "basketball",
"start": "2017-04-20 10:30",
"home_team": "勇士",
"visit_team": "开拓者",
"home_score": "106",
"visit_score": "81",
"period_cn": "第4节\n01:30",
"from": "dc.live",
"code": "373",
"update": "13:13:37",
"big_score_1": "",
"big_score_2": ""
},
... # 省略了其它比赛的信息
]}12345678910111213141516171819202122232425
获得所有正在进行的比赛ID后,点击某一场比赛,进入文字直播页面。首先请求页面,其中XXXX是上一步获取的id,它会返回一个数字,即max_sid。然后判断该max_sid是否大于上次获取的该值,如果大于,表示有新的直播文字,否则表示没有。
如果max_sid大于上一次的值,通过请求(其中XXXX是今天的日期,格式为2017-04-20,YYYY是第一步中获取的id),返回这场比赛的基本情况,比如比分,是第几节等,如下所示:
{ "id": "96233", "home_team": "勇士", "visit_team": "开拓者", "home_score": "110", "visit_score": "81", "period_cn": "第4节结束", ...}123456789
最后,就可以获取直播的文字了。请求(其中XXXX是比赛id,YYYY是max_sid),它会返回最新的直播文字,其中包括一条或多条直播文字,如下所示:
[
{ "live_id": "8769977", "live_text": "@仙女最库阿-:库里正负值最高32我去!!!!", "home_score": "110", "visit_score": "81", "pid_text": "比赛结束", ...
}, ... # 可能有多条直播文字]1234567891011
可以看到,该请求返回的信息中没有比赛剩余时间、主队和客队等信息,所以每次获取直播文字之前,需要多一次请求,获得比赛的基本信息。
基本流程就是这样,非常简单,一共就四个GET请求,返回四串json,用requests库请求,然后解析搞定。
先定义一个Match类,表示当前正在进行的每一场比赛。
# match.pyclass Match:
def __init__(self, **kwargs):
self.id = kwargs['id']
self.home_team = kwargs['home_team']
self.visit_team = kwargs['visit_team']
self.home_score = kwargs['home_score']
self.visit_score = kwargs['visit_score']
self.period_cn = kwargs['period_cn'].replace('\n', ' ') def __repr__(self):
return '{self.id} {self.home_team} {self.home_score} - {self.visit_score} {self.visit_team} {self.period_cn}'.format(self=self)12345678910111213
再定义一个TextLiving类,表示获取的每一条文字直播。
# text_living.pyclass TextLiving:
def __init__(self, match_info, **kwargs):
self.home_team = match_info['home_team']
self.visit_team = match_info['visit_team']
self.period_cn = match_info['period_cn']
self.live_text = kwargs['live_text']
self.home_score = kwargs['home_score']
self.visit_score = kwargs['visit_score'] def __repr__(self):
return '{self.home_team} {self.home_score} - {self.visit_score} {self.visit_team} {self.period_cn}\n{self.live_text}\n{sep}'.format(self=self, sep='*'*60)12345678910111213
接着创建zhibo8_api.py模块,用于获取相关数据。
# 当前正在进行的比赛Living_Matches_Url = ''# 某一场比赛当前的max_sidMatch_Max_Sid_Url = ''# 某一场比赛最新文字直播Match_Living_Text_Url = ''# 某一场比赛当前的基本情况Match_Info_Url = ''def get_living_matches():
response = requests.get(Living_Matches_Url)
result = json.loads(response.text)
matches = [Match(**match) for match in result['list'] if match['type'] == 'basketball' and match['period_cn'] != '完赛'] return matchesdef get_match_max_sid(match_id):
response = requests.get(Match_Max_Sid_Url % match_id) if response.status_code == requests.codes.ok: return int(response.text)def get_match_living(match_id, max_sid):
# 先获取比赛的当前情况,再获取最新文字直播
match_info = get_match_info(match_id)
response = requests.get(Match_Living_Text_Url % (match_id, max_sid))
texts = [] if response.status_code == requests.codes.ok:
result = json.loads(response.text)
texts = [TextLiving(match_info, **living) for living in result] return textsdef get_match_info(match_id):
today = datetime.now().strftime('%Y-%m-%d')
response = requests.get(Match_Info_Url % (today, match_id))
match_info = json.loads(response.text) return match_info123456789101112131415161718192021222324252627282930313233343536373839404142
最后,在main.py模块中启动程序,开始直播!
def get_living_matches():
matches = zhibo8_api.get_living_matches() for match in matches:
print(match) return matchesdef get_watch_match(matches):
match_id = input('请输入比赛ID:') for match in matches: if match.id == match_id: return match else:
print('输入的ID不正确') return Nonedef main_loop():
matches = get_living_matches() if len(matches) == 0:
print('当前没有比赛!!!') return
match = get_watch_match(matches) if not match:
print('没去找到该比赛') return
current_match_max_sid = -1
while True:
match_max_sid = zhibo8_api.get_match_max_sid(match.id) if not match_max_sid:
print('没有直播数据') return
if current_match_max_sid == match_max_sid: continue
current_match_max_sid = match_max_sid
text_livings = zhibo8_api.get_match_living(match.id, current_match_max_sid) for text in text_livings:
print(text)if __name__ == '__main__':
main_loop()
######python求标准的一元二次方程的解###############
a,b,c= map(float,input("请输入aX^2+bX+c=0,函数中的三个参数:(空格隔开)").split())
###使用公式b^2-4ac判定是否有解b^2-4ac####
i=b*b-4*a*c
if i0:
print("该方程无实数解!")
elif i==0:
print("该方程解为:%.2f"%((-1)*b/(2*a)))#有一个解
else:
print("该方程解为:%.2f或%.2f"%((((-1)*b+i**0.5)/(2*a)),(((-1)*b-i**0.5)/(2*a))))
该方法运用是运用公式求解,保留两位小数,只能求实数解,供参考,有问题可追问
有不少同学学完 Python 后仍然很难将其灵活运用。我整理15个 Python 入门的小程序。在实践中应用 Python 会有事半功倍的效果。
实现数学里的二元二次函数: f(x, y) = 2x^2 + 3y^2 + 4xy ,需要用到指数运算符 **
将一个正整数的个位数,以及除个位数外的部分分离。需要用到 模(取余数) 运算符 % ,和 整除 运算符 //
实现一个简单的累加器,可以接受用户输入3个数字,并将其累加。需要用到 复合赋值运算符:+=
输入年份,判断是否是闰年。闰年判断方法:能被4整除,但不能被100整除;或者能被 400 整除。需要用到 算术运算符 和 逻辑运算符
输入一个数字,判断基数还是偶数,需要 模 运算和 if ... else 结构
之前做过华氏度转摄氏度,现在通过 分支结构 实现二者互转。
输入三个边长度,判断是否构成三角形。 构成三角形的条件:两边之和大于第三边 。
输入成绩分数,输出分数对应的等级。
某企业的奖金根据销售利润按照如下规则计算提成。输入销售利润,计算奖金。
程序随机生成一个正整数,用户来猜,程序根据猜的大小给出相应的提示。最后,输出用户猜了多少次才猜中。
输入一个正整数,判断是否是素数。 素数定义:大于1的自然数中,只能被1和它本身整除的自然数。如:3、5、7
用程序实现石头剪刀布 游戏 。
字典的key是姓名,value是身高,现在需要按照身高对字典重新排序。
将二元二次函数封装在函数中,方便调用
初学python的小伙伴注意哦~不要只依赖于教程,而忽视实操的能力。不然,是很难有进步的。可以多动动手,尝试一下,积累经验。