我正在写一小段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 3.4+中,我们可以做到
class Foo(abc.ABC):
...
Run Code Online (Sandbox Code Playgroud)
或者我们可以做到
class Foo(metaclass=abc.ABCMeta):
...
Run Code Online (Sandbox Code Playgroud)
我应该注意两者之间是否有任何差异?
所以想象一下,我想要从0到100循环,但跳过奇数(所以"两个两个").
for x in range(0,100):
if x%2 == 0:
print x
Run Code Online (Sandbox Code Playgroud)
这解决了它.但想象一下,我想跳两个数字吗?三个呢?不是有办法吗?
在C中,如果我没有错,main
如果没有错误,函数返回0,如果发生错误,则返回0.
是否适合在Python中执行相同操作(只要函数不必返回任何特定值,而是指示成功/失败); 或者只是处理异常?
我正在学习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'
.我想这不是我构建应用程序的方式.我应该怎么做呢或如何修复错误?
我正在尝试编写一个将从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的三元运算符:
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,则分配不同的值.
显然这只是我刚刚提出的一个例子,我知道它在语法上是不正确的,但是有一种不那么重复的写作方式吗?
我在我的项目中使用Pycharm创建和管理我的virtualenv。
问题在于,在使用pycharm添加库之后,当我键入命令(pip3 freeze --user
)时,该库不会出现在命令结果中。
我必须pip install
每次手动键入命令,以便库可见。
我应该在PyCharm中执行哪些操作来解决此问题?
我一直想知道如何适当地导入Python,与我现在要解释的方式有关:
想象一下,我有我自己建了两个模块,modulea
并且moduleb
,并且具有同时使用最后一个modulea
和b
,所以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 ×8
python-3.x ×2
ubuntu ×2
arguments ×1
audio ×1
flask ×1
methods ×1
object ×1
pip ×1
pycharm ×1
python-2.7 ×1
python-3.5 ×1
range ×1
virtualenv ×1