我是一名编程学生,我的老师从C开始教我们编程范例,他说我可以在python中完成我的作业(这对于作业来说更容易,更快).我希望我的代码能够像普通的C一样尽可能接近.问题是如何在python中为变量声明数据类型,就像在C中一样:
int X,Y,Z;
Run Code Online (Sandbox Code Playgroud)
我知道我可以在python中做到这一点
x = 0
y = 0
z = 0
Run Code Online (Sandbox Code Playgroud)
但这似乎是很多工作,它错过了python比C更容易/更快的点.所以,最简单的方法是什么?PS我知道你不必在大多数时间在python中声明数据类型,但我仍然想这样做,所以我的代码看起来像同学一样可能.
在教程中,我读到input
和之间存在差异raw_input
.我发现他们在Python 3.0中改变了这些函数的行为.什么是新行为?
为什么在python控制台解释这个
x = input()
Run Code Online (Sandbox Code Playgroud)
发送错误,但如果我把它放在file.py并运行它,它不会?
你好我的一个客户买了一个非常糟糕的网络主机,我甚至没有ssh访问,他们的票据支持只回答"是的我们在我们的服务器支持python"但我不能运行任何.cgi .py或应用程序. wsgi文件.有没有办法判断服务器是否支持python?我只能访问ftp和directadmin界面,我想知道更多,然后我可以再次向他们的支持系统抱怨,否则他们不会注意.
主持人是neubox.net这是我已经尝试过的.本教程http://www.howtoforge.com/embedding-python-in-apache2-with-mod_python-debian-etch在我的开发机器上工作,它说我需要在apache2/available-sites目录中添加一个webhost但显然我无法访问托管中的该文件夹.我也尝试将这个脚本放在我的主机的根目录上,名为application.wsgi,它没有用
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
我也在root上尝试了这个文件application.py.
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgitb
cgitb.enable()
print "Content-Type: text/plain;charset=utf-8"
print
print "Hello World!"
Run Code Online (Sandbox Code Playgroud)
这些文件显示为纯文本,我尝试完全相同的代码但命名为application.cgi,奇怪的是它返回了404错误,当然文件就在那里.我在网站摘要中的directadmin界面看到CGI-Bin OFF所以我猜这就是404的原因.在同一页面我看到名称服务器是 http://ns115.neubox.net/ http:// ns116 .neubox.net第一个说Apache运行正常这是他们的服务比较网站(西班牙语)http://neubox.net/comparativo-hosting.php
我希望我能知道他们运行的操作系统我几乎肯定是linux,因为在我的根目录下有一个文件夹.htpasswd和那些.folders是隐藏的linux,但我不确定这是否是一个肯定的方法.
他们给了我这个网址http://72.249.55.33/info.php它的phpinfo()我看到了fast-cgi,但关于它的所有关于改变Apache配置的事情,我显然不能做,这是我的搜索结束了吗?他们不支持python.
如果我输入vim命令行
:python import os;print os.getenv('PYTHONPATH')
Run Code Online (Sandbox Code Playgroud)
我得到一条路径如果我关闭vim并在同一个终端上做
echo $PYTHONPATH
Run Code Online (Sandbox Code Playgroud)
我得到另一个完全不同的路径为什么这样,vim在哪里获得这条路径?这是相关的,因为自动完成无法找到模块,因此它不起作用.我知道这是因为如果我尝试再次来自vim cli
:python import django
Run Code Online (Sandbox Code Playgroud)
它失败但如果我退出vim并输入
python
>>> import django
Run Code Online (Sandbox Code Playgroud)
没有显示错误!这里发生了什么?我正在使用virtualenv并且我检查了激活源并且没有更改PYTHONPATH.我试过这个没有virtualenv,同样的问题.
更新:用于在编译之前配置Vim源的行
./configure --prefix = $ {HOME}/apps/vim73 --with-features = huge --enable-gui = gnome2 --enable-pythoninterp --enable-rubyinterp --enable-multibyte --with-python-配置-DIR =/usr/lib中/ python2.6的/配置
我在视图上得到了这个long queryset语句
contributions = user_profile.contributions_chosen.all()\
.filter(payed=False).filter(belongs_to=concert)\
.filter(contribution_def__left__gt=0)\
.filter(contribution_def__type_of='ticket')
Run Code Online (Sandbox Code Playgroud)
我在我的模板中使用
context['contributions'] = contributions
Run Code Online (Sandbox Code Playgroud)
然后在该视图中我对表contrib_chosen进行更改(添加或删除记录),如果我想更新上下文['contributions'],我需要使用相同的lenghty查询重新查询数据库.
contributions = user_profile.contributions_chosen.all()\
.filter(payed=False).filter(belongs_to=concert)\
.filter(contribution_def__left__gt=0)\
.filter(contribution_def__type_of='ticket')
Run Code Online (Sandbox Code Playgroud)
然后再次更新我的上下文
context['contributions'] = contributions
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有任何方式我可以避免重复我的自我,重新评估贡献,所以它实际上反映了数据库上的真实数据.理想情况下,我会修改查询集的贡献和它的值将被更新,并在同一时间的数据库将反映这种变化,但我不知道如何做到这一点.
更新:这是我在两个上下文['稿''=贡献之间做的事情
我将一个新的贡献对象添加到contributions_chosen(这是一个m2m关系),
contribution = Contribution.objects.create(kwarg=something,kwarg2=somethingelse)
user_profile.contributions_chosen.add(contribution)
contribution.save()
user_profile.save()
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我删除贡献对象贡献= user_profile.contributions_chosen.get(id = 1)user_profile.contributions_chosen.get(id = request.POST ['con contribution.delete()
正如你所看到我正在修改表contrib_chosen所以我必须重新发出查询并更新上下文.我究竟做错了什么?
UPDATE看到有关评估您的意见后,我知道我做的eval上下文之间的查询集我做LEN(捐款)["贡献"]这似乎是问题.我会在数据库操作之后移动它,就好了,谢谢你.
我正在开始在这个网站http://www.bigfatalien.com/?p=223上关注elementtree的教程,所以像往常一样,我在解释器上输入了参考脚本,然后我去了
import xml.etree.ElementTree as xml
Run Code Online (Sandbox Code Playgroud)
解释器运行该命令就好并在intrepreter中使用"xml"没有问题我的IDE甚至在自动完成时显示该类的成员但是只要我在脚本上输入完全相同的行并尝试运行它,它说
对象没有属性'etree'
,这条线有效:
import xml
Run Code Online (Sandbox Code Playgroud)
但如果我补充:
xml.etree.ElementTree = xml
Run Code Online (Sandbox Code Playgroud)
并尝试运行那个不起作用的脚本,我尝试使用我的IDE(pyscripter)和IDLE,同样的行为.什么事情发生在这里,这是什么行为,我从来没有读过任何"如何导入python"教程或书籍.我觉得我错过了一些明显的东西.
使用请求的错误消息进行更新
从IDLE 2.6提供的线路
2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
[u'C:\\Users\\grillermo\\Desktop', 'C:\\Program Files\\PyScripter\\Lib\\rpyc-python2x.zip', 'C:\\Python26\\lib\\site-packages\\dropbox_client-1.0-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\simplejson-2.1.6-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\poster-0.8.1-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\oauth-1.0.1-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\nose-1.0.0-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\mechanize-0.2.5-py2.6.egg', 'C:\\Windows\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\site-packages', 'C:\\Python26\\lib\\site-packages\\win32', 'C:\\Python26\\lib\\site-packages\\win32\\lib', 'C:\\Python26\\lib\\site-packages\\Pythonwin', 'C:\\Python26\\lib\\site-packages\\wx-2.8-msw-unicode']
2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
[u'C:\\Users\\grillermo\\Desktop', 'C:\\Program Files\\PyScripter\\Lib\\rpyc-python2x.zip', 'C:\\Python26\\lib\\site-packages\\dropbox_client-1.0-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\simplejson-2.1.6-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\poster-0.8.1-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\oauth-1.0.1-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\nose-1.0.0-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\mechanize-0.2.5-py2.6.egg', 'C:\\Windows\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\site-packages', 'C:\\Python26\\lib\\site-packages\\win32', 'C:\\Python26\\lib\\site-packages\\win32\\lib', …
Run Code Online (Sandbox Code Playgroud) 您好我想知道您是否知道将字符串编码为url-safe的任何其他方法,因为urllib.quote做错了,输出与预期不同:
如果我试试
urllib.quote( 'A')
我明白了
'%C3%A1'
但那不是正确的输出,它应该是%E1
这不是我的困难,不正确的引用输出阻止浏览器找到资源,如果我尝试
urllib.quote('\ images \á\ some file.jpg')
然后我尝试使用我提到的javascript工具分别得到这个字符串
%5Cimages%5C%C3%A1%5Csome%20file.jpg
%5Cimages%5C%E1%5Csome%20file.jpg
注意如何几乎相同,但引用提供的URL不起作用,而另一个则起作用.我试着在提供引用的字符串上弄乱编码('utf-8),但它没有什么区别.我试着用其他西班牙语单词加上口音,而且它们都有不同的代表.
这是一个python bug吗?你知道一些模块可以做到这一点吗?
好的,我已经正确安装了所有东西,以便在django中获得celery + redis
我有
INSTALLED_APPS = (
'djcelery',
'kombu.transport.django',
)
Run Code Online (Sandbox Code Playgroud)
这些都在我的设置中
CELERY_REDIS_HOST = 'localhost'
CELERY_REDIS_PORT = 8889
CELERY_REDIS_DB = 0
CELERY_RESULT_BACKEND = 'redis'
BROKER_URL = "redis://localhost:8889/0"
REDIS_CONNECT_RETRY = True
CELERY_IGNORE_RESULT = True
CELERY_SEND_EVENTS = True
CELERY_TASK_RESULT_EXPIRES = 60
CELERYBEAT_SCHEDULER= 'djcelery.schedulers.DatabaseScheduler'
Run Code Online (Sandbox Code Playgroud)
我和redis一起工作了
./redis-server
Run Code Online (Sandbox Code Playgroud)
它每秒输出到终端左右,我也可以运行
./manage.py celeryd -E -B --loglevel=INFO -n w1.d820
Run Code Online (Sandbox Code Playgroud)
没有错误,我甚至可以看到我的任务被添加并成功完成
./manage celeryev
Run Code Online (Sandbox Code Playgroud)
因此,即使认为它被celeryev记录,这段代码也不起作用:
from celery.task import task
@task
def add(x, y):
return x + y
res = add.apply_async(args=[1,5])
print res.wait()
Run Code Online (Sandbox Code Playgroud)
它只是挂起而没有返回结果,我可以看到它实际上试图从redis获取它,因为如果我这样做
./redis-cli
MONITOR
Run Code Online (Sandbox Code Playgroud)
我得到很多GET试图得到一个不存在的密钥所以我的结论是django没有保存到后端我的设置有什么问题?我想我失去了一些明显的东西,我看不到它,因为我已经太长时间没有打架了.救命
顺便说一句我不能使用标准端口6379,因为我在共享服务器上.
使用这些更新
celery==2.5.3
django-celery==2.5.5
django-celery-with-redis==2.5
Run Code Online (Sandbox Code Playgroud) 我需要测试用户输入是否与列表元素相同,现在我正在这样做:
cars = ("red", "yellow", "blue")
guess = str(input())
if guess == cars[1] or guess == cars[2]:
print("success!")
Run Code Online (Sandbox Code Playgroud)
但我正在处理更大的列表,我的if语句在所有这些检查中都有很多增长,有没有办法引用多个索引,如:
if guess == cars[1] or cars[2]
Run Code Online (Sandbox Code Playgroud)
要么
if guess == cars[1,2,3]
Run Code Online (Sandbox Code Playgroud)
阅读列表文档,我发现不可能引用多个索引,我在上面尝试过,当然会发送语法错误.
def primes(n):
if n==2: return [2]
elif n<2: return []
s=range(3,n+1,2)
mroot = n ** 0.5
half=(n+1)/2-1
i=0
m=3
while m <= mroot:
if s[i]:
j=(m*m-3)/2
s[j]=0
while j<half:
s[j]=0
j+=m
i=i+1
m=2*i+3
return [2]+[x for x in s if x]
Run Code Online (Sandbox Code Playgroud)
您好,我在这里找到了这个函数http://code.activestate.com/recipes/366178-a-fast-prime-number-list-generator/而且我被卡住了.我不明白这一点.我认为它使用素数的一些属性,但所有那些单字母变量都是如此神秘.你可以请一些亮点吗?
我理解:mroot是你要检查素数的数字的限制,我知道该函数将列表s更改为0来标记倍数.我也理解最后的列表综合,我理解s.
但为什么一半?什么是j?什么是米?
你能否发表评论?
假设类中有 3 个 QRadioButtons 实例
self.Option1 = QRadioButton()
self.Option2 = QRadioButton()
self.Option2 = QRadioButton()
Run Code Online (Sandbox Code Playgroud)
(为了简洁起见,我没有编写整个脚本)并且您想在用户单击它时使用它们来执行特定的函数,所以您可以这样做
self.connect(self.Option1,SIGNAL("clicked()"), self.myFunction)
self.connect(self.Option2,SIGNAL("clicked()"), self.myFunction)
self.connect(self.Option2,SIGNAL("clicked()"), self.myFunction)
Run Code Online (Sandbox Code Playgroud)
如何将参数传递给 myFunction,以便它知道用户单击了哪个 QRadioButton?所以我可以做类似的事情
def myFunction(choice):
if choice == Option1:
do something
if choice == Option2:
do something
Run Code Online (Sandbox Code Playgroud)
现在我有 3 个函数,每个函数对应每个这样的连接
self.connect(self.Option1,SIGNAL("clicked()"), self.myFunction1)
self.connect(self.Option2,SIGNAL("clicked()"), self.myFunction2)
self.connect(self.Option2,SIGNAL("clicked()"), self.myFunction2)
Run Code Online (Sandbox Code Playgroud)
这种方法工作得很好,但是你可以看到代码增长的速度有多快,因为我添加的每个小部件我都必须编写至少一个新函数或修改现有函数,这将是一场维护噩梦(不是为了提到它看起来很丑并且它阻止了代码重用)。
快速访问谷歌让我得到了这个:
self.label = QLabel(" ")
self.connect(self, SIGNAL("didSomething"),
self.update_label)
self.do_something()
def do_something(self):
self.emit(SIGNAL("didSomething"), "important", "information")
def update_label(self, value1, value2):
self.label.setText(value1 + " " + value2)
Run Code Online (Sandbox Code Playgroud)
(我再次没有包含整个脚本,但你可以在这里查看)他所做的是创建一个方法来定义一个自定义发射器,该发射器在发射时发送参数,然后使用手动激活它
self.do_something()
Run Code Online (Sandbox Code Playgroud)
所以很自然地,connect 函数选择这个发射并将参数传递给函数 update_label,部分实现了我想要做的事情。但他是手动完成的,有没有办法自动“拦截”标准信号(例如 QRadioButtons 发出的 …
我安装了3.1.2 IDLE python控制台,然后我输入了这段代码:
>>> a = ['a', 'b', 'c', 'd']
>>> len(a)
4
Run Code Online (Sandbox Code Playgroud)
直接从蟒蛇官方文档http://docs.python.org/py3k/tutorial/introduction.html#lists
但它在解释器中不起作用,它不会返回4.
我究竟做错了什么?官方文档是错的吗?
我查看了其他一些网站,但很多人都在谈论Python 2.x.
python ×12
django ×2
autocomplete ×1
c ×1
celery ×1
dry ×1
elementtree ×1
encoding ×1
import ×1
interpreter ×1
list ×1
math ×1
omnicomplete ×1
primes ×1
pyqt4 ×1
redis ×1
settings ×1
testing ×1
variables ×1
vim ×1
web-hosting ×1