首先,对于墙壁文本,感到抱歉。我尽可能地解释这个问题。每次满足条件时运行一段代码
你好,从标题你可能认为我指的是一个简单的if
声明,这可能是正确的。我今天对这个项目做了一些问题,现在我想做其他事情。我正在使用英雄联盟进行一个机器人。机器人所做的只是从当前某个玩家的游戏中打印一些数据。对于那些不熟悉游戏的人来说,这里有排名。排名是机器人在正在处理的聊天中打印的统计数据之一;这些数据来自排名游戏,与普通游戏不同,排名游戏是统计这些数据的游戏。无论如何;我以json的形式获取数据,并且每当玩家未排序时(不排名玩家),我从请求中获得404,并且我想处理404以打印其他内容。眼下,这是代码的重要组成部分:
ids_seen = set()
for y in range(0, 10):
num += 1
i = r_match['participants'][num]
e_name = i['summonerName']
e_id = i['summonerId']
team_id = i['teamId']
champ = i['championId']
r_team = requests.get("https://lan.api.pvp.net/api/lol/lan/v2.5/league/by-summoner/{}/"
"entry?api_key=".format(e_id)).json()
champ_r = requests.get("https://global.api.pvp.net/api/lol/static-data/lan/v1.2/champion?"
"api_key=").json()
x = r_team["{}".format(e_id)][0]
e_tier = x['tier']
e_div = x['entries'][0]['division']
for key, value in champ_r['data'].items():
c_name = value['name']
c_id = value['id']
chat_say = """
{} - {} {} - Playing `#{}`""".format(e_name, e_tier, e_div, c_name)
if champ == c_id:
# if r_team['status']['status_code'] == 404:
# unranked_term = (e_name + " - " + "Unranked")
# unranked_say = """
# {} - Playing `#{}`""".format(unranked_term, c_name)
# yield from bot.send_message(message.channel, unranked_say)
# else:
if team_id == 100:
if not team_id in ids_seen:
yield from bot.send_message(message.channel, "```---Blue team---```")
yield from bot.send_message(message.channel, chat_say)
elif team_id == 200:
# if r_team['status']['status_code'] == 404:
# unranked_term = (e_name + " - " + "Unranked")
# unranked_say = """
# {} - Playing `#{}`""".format(unranked_term, c_name)
# yield from bot.send_message(message.channel, unranked_say)
if not team_id in ids_seen:
yield from bot.send_message(message.channel, "```--- Red team ---```")
yield from bot.send_message(message.channel, chat_say)
ids_seen.add(team_id)
yield from asyncio.sleep(1)
当我运行这段代码的输出是这样的:
Player1 - Rank - Champion that is being played
Player2 - Rank - Champion that is being played
Player3 - Rank - Champion that is being played...
...等;但是如果发现像我之前提到的那样没有排名的球员,那么就会发生KeyError
,因为它无法在json上找到任何排名数据。所以;我评论了一些我想要实现的内容。
此:
# if r_team['status']['status_code'] == 404:
# unranked_term = (e_name + " - " + "Unranked")
# unranked_say = """
# {} - Playing `#{}`""".format(unranked_term, c_name)
# yield from bot.send_message(message.channel, unranked_say)
我试图把这个它的确切位置。我也得到一个KeyError
;如果我把它放在这里:
if team_id == 100:
# <- Right here if I'm not wrong.
if not team_id in ids_seen:
yield from bot.send_message(message.channel, "```---Blue team---```")
yield from bot.send_message(message.channel, chat_say)
我得到的球员和冠军正在播放,但每一个的行列显示为未排序;每个人都没有排名。问题是,我如何将其实现到我的代码?我不确定我是否在正确的道路上这样做。
我想输出是这样的:
Player1 - Rank - Champion # If it has ranked information
Player2 - Rank - Champion # Same
Player3 - Unranked - Champion # If the player is unranked
一切都是这样我就可以正常运行的机器人,因为每次有一个未排序我得到一个错误,我只是无法避免(除非找到没有未排名球员的比赛)
感谢您的帮助! :)
嗨@fuhrerguxez如果这或任何答案已解决您的问题,请考虑[接受它](http://meta.stackexchange。com/q/5234/179419)通过点击复选标记。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 –
你好,我确实需要的只是一个尝试......除了块之外,我有一个,但它被错误地放置。经过一些调整后,我得到了它的工作,谢谢! – Aguxez