【问题标题】:Show duplicate results in Python在 Python 中显示重复的结果
【发布时间】:2021-11-14 07:54:34
【问题描述】:

我的代码:

import random

class human:
    'humans class'
    def __init__(self,fname,lname=None,age=None):
        self.fname = fname
        if lname != None: self.lname = lname 
        else: self.lname = None
        if age != None: self.age = age 
        else: self.age = None

    def new(self,command):
        "for define a new variable"
        return exec(command)


class soccer_player(human):
    "soccer players class"
    
    all_players = []
    choised = []
    a = []
    b = []
    def __init__(self, fname, lname=None, age=None):
        super().__init__(fname, lname=lname, age=age)
        soccer_player.all_players.append(fname)
    
    def start_random_choise():
        i=0
        while True:
            choise = random.choice(soccer_player.all_players)
            if choise not in soccer_player.choised:
                soccer_player.a.append(choise)
                i = i + 1
            if i == 11:
                break
        i=0
        while True:
            choise = random.choice(soccer_player.all_players)
            if choise not in soccer_player.choised:
                soccer_player.b.append(choise)
                i = i + 1
            if i == 11:
                break

hosein = soccer_player("hosain")
maziar = soccer_player("maziar")
akbar = soccer_player("akbar")
nima = soccer_player("mina")
mehdi = soccer_player("mehdi")
farhad = soccer_player("farhad")
mohammad = soccer_player("mohammad")
khashaiar = soccer_player("khashaiar")
milad = soccer_player("milad")
mostafa = soccer_player("mostafa")
amin = soccer_player("amin")
saeed = soccer_player("saeed")
poya = soccer_player("poya")
porya = soccer_player("porya")
reza = soccer_player("reza")
ali = soccer_player("ali")
behzad = soccer_player("behzad")
sohail = soccer_player("sohail")
behrooz = soccer_player("behrooz")
shahrooz = soccer_player("shahrooz")
saman = soccer_player("saman")
mohsen = soccer_player("mohsen")

soccer_player.start_random_choise()

print("A:",end=" ")
for i in list(range(len(soccer_player.a))):
    print(soccer_player.a[i],end=" , ")
print()
print("B:",end=" ")
for i in list(range(len(soccer_player.b))):
    print(soccer_player.b[i],end=" , ")
print()

我的问题是这个应用显示重复的结果:

[nimafanniasl@fedora prs]$ python -u "/home/nimafanniasl/pr.py"
A: mehdi , porya , maziar , porya , akbar , porya , behzad , amin , khashaiar , maziar , ali , 
B: hosain , mohammad , mostafa , shahrooz , mostafa , poya , mostafa , hosain , farhad , hosain , hosain ,

这个应用程序在B队打印了4个hesein,请帮我制作这个程序,这样它就不会显示重复的结果

【问题讨论】:

    标签: python python-3.x class


    【解决方案1】:

    您没有将选定的玩家添加到choised。添加这一行

    soccer_player.choised.append(choise)
    

    在两个 while 循环中。

    【讨论】:

      【解决方案2】:
      1. 您的 if 条件被破坏,因为您检查了错误的列表。您将玩家附加到soccer_player.a.append(choise)b,但您的条件状态为if choise not in soccer_player.choised。您可能还打算将玩家添加到 choised 列表中。

      2. 如果您将大部分代码替换为random.samplerandom.shuffle,您就可以避免做所有这些工作,这已经保证它们不会产生重复。

          def start_random_choise():
              soccer_player.a = random.sample(soccer_player.all_players, 11)
              soccer_player.b = random.sample(soccer_player.all_players, 11)
      
      1. 请查看“生日悖论”,了解您的代码效率低下的原因

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-23
        • 2015-02-23
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        • 2019-08-16
        • 1970-01-01
        相关资源
        最近更新 更多