【问题标题】:I am stuck with my pokemon trading app practice in python我在 python 中坚持使用我的口袋妖怪交易应用程序练习
【发布时间】:2019-12-22 12:49:07
【问题描述】:

我上个月开始学习 python,但我一直不知道如何继续研究我读到的想法。 这对我来说只是一个简单的训练练习,也是我将作为 OOP 执行的第一个程序。

我进入了 reddit 应用创意,以找到一些尝试工作的项目,其中一个要求提供一个 pokedex,让您可以检查某人是否有您需要的口袋妖怪。

我能够抓取第一代 151 个口袋妖怪,创建一个玩家类并给每个人 20 个随机口袋妖怪。 现在我想让每个玩家选择检查玩家 2 是否有玩家 1 没有的口袋妖怪,反之亦然,以查看他们是否可以进行一些交易,但我不知道该怎么做。 有人可以帮帮我吗? :)

提前致谢!

这是我到目前为止的代码,我也很想听听关于如何让当前代码变得更好的提示! :

import requests
from bs4 import BeautifulSoup
import random

url = 'https://pokemondb.net/pokedex/national#gen-1'
req = requests.get(url)
page = req.text
Soup = BeautifulSoup(page,'html.parser')

gen1_poke_names = [pokemon.get_text() for pokemon in Soup.find_all('',{'class':'ent-name'})[:151]]

class PokeScrape:
    def __init__(self):
        pass


class Player(PokeScrape):
    def __init__(self,name,poke_list):
        self.name = name
        self.poke_list = poke_list


Michael = Player('Michael',random.sample(gen1_poke_names,20))
print(Michael.name)
print(Michael.poke_list)

Daniel = Player('Daniel',random.sample(gen1_poke_names,20))
print(Daniel.name)
print(Daniel.poke_list)

【问题讨论】:

    标签: python python-3.x class oop


    【解决方案1】:

    使用集合比使用列表更容易做到这一点,因为从另一个集合中“减去”一个集合很简单。假设我们有:

    Michael.poke_list = ['Bulbasaur', 'Squirtle', 'Pikachu']
    Daniel.poke_list = ['Pikachu', 'Charmander']
    

    然后:

    >>> michael_set = set(Michael.poke_list)
    >>> daniel_set = set(Daniel.poke_list)
    >>> michael_set - daniel_set
    {'Bulbasaur', 'Squirtle'}
    >>> daniel_set - michael_set
    {'Charmander'}
    

    所以设定的差异告诉你每个玩家有哪些神奇宝贝,另一个没有。

    【讨论】:

    • 谢谢!但问题是我还想在玩家类中添加一个函数,允许某人检查另一个玩家是否有他没有的口袋妖怪,这就是我卡住的地方:(像 Michael.check(Daniel) 之类的东西跨度>
    • 你可以做这个集合减法,并检查结果是否不为空,例如len(michael_set - daniel_set) > 0.
    【解决方案2】:

    检查并归还他拥有而你没有的口袋妖怪:(在 Player 类 ofc 中)

    def checkpoke(self, other_player):
        other_pokelist = other_player.pokelist
        result=[poke for poke in other_player.pokelist if poke not in self.pokelist]
        print("he has: {} but you don't".format(result))
    

    【讨论】:

      猜你喜欢
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 2021-11-07
      • 2021-03-24
      相关资源
      最近更新 更多