每个人,我想做这样的事情,但我的逻辑不是那么goog.我有一条消息,每行必须有80个字符:我可以这样做:
msg = ''
msg_list = []
for i in dict['msg']:
if len(msg) >= 80 and i.isspace():
msg_list.append(msg)
msg = ""
msg += i
Run Code Online (Sandbox Code Playgroud)
这里的问题是当我的msg没有80个字符时,是否有任何想法让这个块更好?
Python教程指出:
try ... except语句有一个可选的else子句,当存在时,必须遵循所有except子句.如果try子句不引发异常,则必须执行的代码很有用.例如:
Run Code Online (Sandbox Code Playgroud)for arg in sys.argv[1:]: try: f = open(arg, 'r') except IOError: print 'cannot open', arg else: print arg, 'has', len(f.readlines()), 'lines' f.close()使用else子句比向try子句添加其他代码要好,因为它可以避免意外捕获由try ... except语句保护的代码未引发的异常.
问题1 >在阅读上述文档后,我仍然不明白为什么我们不能简单地将代码从else子句移动到try子句中.
问题2 > try子句如何意外捕获异常,因为所有捕获都是在except子句中完成的,对吧?
def chkDay(x, size, part):
dayre = re.compile('[0-3][0-9]') # day digit 0-9
if (dayre.match(x)):
if (len(x) > size):
return tkMessageBox.showerror("Warning", "This "+ part +" is invalid")
app.destroy
else:
tkMessageBox.showinfo("OK", "Thanks for inserting a valid "+ part)
else:
tkMessageBox.showerror("Warning", part + " not entered correctly!")
root.destroy
#when clicked
chkDay(vDay.get(),31, "Day")
#interface of tkinter
vDay = StringVar()
Entry(root, textvariable=vDay).pack()
Run Code Online (Sandbox Code Playgroud)
问题:
我遇到了一个问题,我必须通过代理日志来查看用户是否访问过网站列表.
我写了一个小脚本来读取所有代理日志,将访问过的主机与列表进行匹配:
for proxyfile in proxyfiles:
for line in proxyfile.readlines():
if line[4] in hosts_list:
print line
Run Code Online (Sandbox Code Playgroud)
hosts_file很大,我们说的是~10000个主机,我注意到搜索时间比预期的要长.
我写了一个小测试:
import random, time
test_list = [x for x in range(10000)]
test_dict = dict(zip(test_list, [True for x in range(10000)]))
def test(test_obj):
s_time = time.time()
for i in range(10000):
random.randint(0,10000) in test_obj
d_time = time.time() - s_time
return d_time
print "list:", test(test_list)
print "dict:",test(test_dict)
Run Code Online (Sandbox Code Playgroud)
结果如下:
list: 5.58524107933
dict: 0.195574045181
Run Code Online (Sandbox Code Playgroud)
所以,对我的问题.是否可以以更方便的方式执行此搜索?创建列表的字典似乎是一个黑客,因为我想搜索它们的键而不是它包含的值.
我是一个python newb,我只是想了解这里的逻辑:
class SomeClass:
#...
def __hash__(self):
return self.__str__().__hash__()
def __str__(self):
arr = []
if self.final:
arr.append("1")
else:
arr.append("0")
for (label, node) in self.edges.iteritems():
arr.append( label )
arr.append( str( node.id ) )
return "_".join(arr)
#...
someObj = SomeClass()
hash(someObj)
Run Code Online (Sandbox Code Playgroud)
我正在读它的方式是这样的:
如果我尝试hash()在类SomeClass的对象上调用函数 - >那么__hash__将执行魔术方法.__hash__方法调用__str__方法然后在__hash__方法的结果__str__上第二次调用方法- >其中imho导致循环引用和无限循环...
有人可以向我解释 - 这不是__hash__一次又一次被召唤的无限循环吗?
我认为这是一个非常简单的程序。
seperator = Label(text ="")
seperator.config(background='#2b5bce', relief = RAISED, Height = 3)
seperator.grid(row=16, column=0, sticky="w", columnspan=40, ipadx = 500)
Run Code Online (Sandbox Code Playgroud)
但我们收到以下错误!
TclError: bad option "-Height": must be -column, -columnspan, -in, -ipadx, -ipady, -padx, -pady, -row, -rowspan, or -sticky
Run Code Online (Sandbox Code Playgroud) 使用单个语句,打印一个只包含原子符号及其对应权重的字典,这些元素位于wts(我的字典)中,这些元素在原子符号中只有一个字母.即,包括'H'但省略'他'.我的字典设置为{'H':'1.00794','He':'4.002602','Li':'6.941','Be':'9.012182','B':'10.811','C':'12.0107','N':'14.0067','O':'15.9994'}
[for element in wts if len(element) == 1]
Run Code Online (Sandbox Code Playgroud)
我在想列表理解会起作用,但是,我怎么会只看元素符号.这会返回以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "_sage_input_45.py", line 10, in <module>
exec compile(u"print _support_.syseval(python, u'[for element in wts if len(element) == 1]', __SAGE_TMP_DIR__)" + '\n', '', 'single')
File "", line 1, in <module>
File "/sagenb/sage_install/sage-5.3-sage.math.washington.edu-x86_64-Linux/devel/sagenb-git/sagenb/misc/support.py", line 487, in syseval
return system.eval(cmd, sage_globals, locals = sage_globals)
File "/sagenb/sage_install/sage-5.3-sage.math.washington.edu-x86_64-Linux/local/lib/python2.7/site-packages/sage/misc/python.py", line 53, in eval
eval(compile(s, '', 'exec'), globals, globals)
File "", line 3
[for element in …Run Code Online (Sandbox Code Playgroud) 我在codecademy.com上关注了一个教程,由于某些原因我无法理解,我的程序没有返回预期值,而是返回值"none".
我不明白为什么.你介意看看吗?
我使用的词典是:
lloyd = { "name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0] }
alice = { "name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0] }
tyler = { "name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0] }
Run Code Online (Sandbox Code Playgroud)
我尝试了以下功能:
def average(x):
return sum(x)/len(x)
def get_average(x):
a = (sum(x['homework'])/len(x['homework']) * 0.1 +
sum(x['quizzes'])/len(x['quizzes']) * 0.3 +
sum(x['tests'])/len(x['tests']) * 0.6)
return a
def …Run Code Online (Sandbox Code Playgroud) 用于将Decimal修复为两个位置的语法是怎么回事?
>>> from decimal import Decimal
>>> num = Decimal('1.0')
>>> num.quantize(Decimal(10) ** -2) # seriously?!
Decimal('1.00')
Run Code Online (Sandbox Code Playgroud)
是否有更好的方式一目了然看起来不那么深奥?'量化十进制'听起来就像是"星际迷航"的一集中的技术!
python ×9
tkinter ×2
decimal ×1
label ×1
layout ×1
optimization ×1
python-2.2 ×1
regex ×1
rounding ×1
search ×1
validation ×1