小编J. *_*nde的帖子

Python解释器错误,x不带参数(给定1个)

我正在写一小段python作为家庭作业,我不会让它运行!我没有那么多的Python经验,但我知道很多Java.我正在尝试实现粒子群优化算法,这就是我所拥有的:

class Particle:    

    def __init__(self,domain,ID):
        self.ID = ID
        self.gbest = None
        self.velocity = []
        self.current = []
        self.pbest = []
        for x in range(len(domain)):
            self.current.append(random.randint(domain[x][0],domain[x][1])) 
            self.velocity.append(random.randint(domain[x][0],domain[x][1])) 
            self.pbestx = self.current          

    def updateVelocity():
    for x in range(0,len(self.velocity)):
        self.velocity[x] = 2*random.random()*(self.pbestx[x]-self.current[x]) + 2 * random.random()*(self.gbest[x]-self.current[x]) 


    def updatePosition():    
        for x in range(0,len(self.current)):
            self.current[x] = self.current[x] + self.velocity[x]    

    def updatePbest():
        if costf(self.current) < costf(self.best):
            self.best = self.current        

    def psoOptimize(domain,costf,noOfParticles=20, noOfRuns=30):
        particles = []
        for i in range(noOfParticles):    
            particle = Particle(domain,i)    
            particles.append(particle)    

        for i in range(noOfRuns): …
Run Code Online (Sandbox Code Playgroud)

python methods arguments object

60
推荐指数
3
解决办法
9万
查看次数

使用ABC和ABCMeta之间有什么区别吗?

在Python 3.4+中,我们可以做到

class Foo(abc.ABC):
    ...
Run Code Online (Sandbox Code Playgroud)

或者我们可以做到

class Foo(metaclass=abc.ABCMeta):
    ...
Run Code Online (Sandbox Code Playgroud)

我应该注意两者之间是否有任何差异?

python python-3.x

29
推荐指数
1
解决办法
5237
查看次数

如何用Python的'范围'来计算两个

所以想象一下,我想要从0到100循环,但跳过奇数(所以"两个两个").

for x in range(0,100):
    if x%2 == 0:
        print x
Run Code Online (Sandbox Code Playgroud)

这解决了它.但想象一下,我想跳两个数字吗?三个呢?不是有办法吗?

python range

16
推荐指数
1
解决办法
2万
查看次数

错误处理方法

在C中,如果我没有错,main如果没有错误,函数返回0,如果发生错误,则返回0.

是否适合在Python中执行相同操作(只要函数不必返回任何特定值,而是指示成功/失败); 或者只是处理异常?

python

6
推荐指数
1
解决办法
809
查看次数

扩展Flask类作为主要应用程序

我正在学习Flask,我对如何构建代码感到有些困惑.所以我尝试扩展Flask主类如下:

from flask import Flask, ...

class App(Flask):
    def __init__(self, import_name, *args, **kwargs):
        super(App, self).__init__(import_name, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

请注意,我知道这可能是一个完全错误的方法.
因此,当我想启动应用程序时,我会:

app = App(__name__)

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

这样我可以在类中命令我的方法和路由,但问题是在使用自我装饰器时:

@route('/')
def home(self, context=None):
    context = context or dict()
    return render_template('home.html', **context)
Run Code Online (Sandbox Code Playgroud)

这引起了错误unresolved reference 'route'.我想这不是我构建应用程序的方式.我应该怎么做呢或如何修复错误?

python flask

6
推荐指数
1
解决办法
4704
查看次数

如何从URL播放mp3

我正在尝试编写一个将从Soundcloud URL播放mp3的python脚本

这就是我已经做过的事情:

from urllib.request import urlopen

url = "soundcloud.com/artist/song.mp3"
u = urlopen(url)

data = u.read(1024)

while data:
   player.play(data)
   data = u.read(1024)
Run Code Online (Sandbox Code Playgroud)

我试过pyaudio很多选项,比如改变格式,频道,速率.我只是从扬声器发出奇怪的声音,我搜索谷歌pyaudio播放MP3并没有找到任何信息.

我尝试pygame通过Sound从mp3传递字节然后只是通过执行播放功能来创建对象.我没有收到任何错误:脚本运行但没有播放.

我正在使用Python 3和Ubuntu.

python audio ubuntu

5
推荐指数
1
解决办法
1万
查看次数

评估变量赋值

我知道Python的三元运算符:

result = a if b else c
Run Code Online (Sandbox Code Playgroud)

但是如果a和b是同一个怎么办?让我举例说明一下:

tasks = ["foo", "bar"]
def tasksLeft():
    return tasks

tasks.remove('foo')
my_tasks = tasksLeft() if tasksLeft() else 'no tasks left'
Run Code Online (Sandbox Code Playgroud)

在第一次尝试中,tasksLeft()将评估为True,因此三元运算符将评估为["bar",].

tasks.remove('bar')
my_tasks = tasksLeft() if tasksLeft() else 'no tasks left'
Run Code Online (Sandbox Code Playgroud)

在第二次尝试中,tasksLeft()将计算为False([]),因此它将计算为默认字符串.

我的假设代码是:

if not my_tasks = tasksLeft():
    my_tasks = 'no tasks left'
Run Code Online (Sandbox Code Playgroud)

关键是要评估刚分配的值,如果它是False,则分配不同的值.

显然这只是我刚刚提出的一个例子,我知道它在语法上是不正确的,但是有一种不那么重复的写作方式吗?

python python-3.5

5
推荐指数
1
解决办法
112
查看次数

Pip冻结不显示Pycharm的新安装软件包

我在我的项目中使用Pycharm创建和管理我的virtualenv。

问题在于,在使用pycharm添加库之后,当我键入命令(pip3 freeze --user)时,该库不会出现在命令结果中。

我必须pip install每次手动键入命令,以便库可见。

我应该在PyCharm中执行哪些操作来解决此问题?

ubuntu pip virtualenv pycharm python-3.x

1
推荐指数
1
解决办法
470
查看次数

如何正确导入

我一直想知道如何适当地导入Python,与我现在要解释的方式有关:

想象一下,我有我自己建了两个模块,modulea并且moduleb,并且具有同时使用最后一个moduleab,所以modulec.

此外,modulea用途moduleb.

这些模块都是单文件,它们构成了一个拥有自己__init__.py文件的大模块的一部分.

+ My project
-
-> modulea.py
-> moduleb.py
-> modulec.py
-> __init__.py # Here I import modulea, b, c.
-> main_module.py # This is were I do all the hardcore.
Run Code Online (Sandbox Code Playgroud)

我创建了一个文件,用于导入我需要的所有模块,而不是在每个脚本中逐个导入它们,并且知道我是否已经导入它,如果我已经导入了该文件,我将不得不检查文件的文件不.

我可以简单地声明,正如你在评论框中所说,每个模块中所需的模块,但我认为这不实用,并且更容易将它们全部导入到一个文件中.

告诉我这是不是一个好习惯.

如果我导入

import modulea
import moduleb
import modulec
Run Code Online (Sandbox Code Playgroud)

它不会工作(ImportError)因为modulea不会隐式导入moduleb代码内部,而是导入它之前导入它所需的模块(b)

如果我做了

import moduleb
import modulea
import modulec
Run Code Online (Sandbox Code Playgroud)

我猜他们会工作,因为moduleb之前已经导入了runnning脚本a …

python python-2.7

0
推荐指数
1
解决办法
93
查看次数