小编zrb*_*ker的帖子

Python Tkinter填充问题

我正在学习Tkinter并构建一个简单的8益智游戏.
(例如:http://www.permadi.com/java/puzzle8/)

每个数字都是使用网格布局放置到框架中的Canvas对象.其中一个对象是在Canvas对象之间添加额外的填充.我将Canvas对象的边框宽度设置为-2,这解决了一些人的问题,但这只会略微减少我的额外填充.将此值设置为-4开始切入我的画布区域.

我假设网格布局的单元格有一些默认的填充或边框宽度,但我还没有找到一种方法来删除它.在Canvas对象上调用grid()时设置padx,pady,ipadx,ipady值似乎也没有帮助.

我发现的另一个奇怪之处是当我为Canvas对象创建一个边框时,我使用了create_rectangle,但是我必须以4,4开始x_1和y_1而不是0,0或2,2这是我期望的2px边框.

这是我的代码.任何帮助/建议/解决方法/否则非常感谢.

#!/usr/bin/python

from Tkinter import *

class Number(Canvas):
    def __init__(self, master=None, number=1):
        Canvas.__init__(self, master, width=100, height=100, bd=-2)
        self.create_text(50, 50, text=str(number), anchor=CENTER)
        self.create_rectangle(4, 4, 98, 98, width=2)


class Application(Frame):
    def create_widgets(self):
        self.playarea = Frame(self, width=300, height=300)
        self.playarea.grid_propagate(0)
        self.playarea.grid()
        self.playarea.numbers = []
        for number in xrange(1, 10):
            num_obj = Number(self.playarea, number)
            self.playarea.numbers.append(num_obj)
            row = number // 3
            col = number % 3
            num_obj.grid(row=row, column=col)

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.grid()
        self.create_widgets()


def main(): …
Run Code Online (Sandbox Code Playgroud)

python tkinter

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

角组件,将两行添加到另一个表中

我正在创建一个组件“模板”(我认为这是正确的词),它可以是两行

@Componenet({
  selector: '[my-row]',
  template: `
  <tr>
    <td>first</td>
    <td>second</td>
  </tr>
  <tr *ngIf="secondRow">
    <td>foo</td>
    <td>bar</td>
  </tr>`
})
export class MyRowComponent {
  @Input() secondRow = false;
}
Run Code Online (Sandbox Code Playgroud)

我想在另一个这样的组件中使用

<table>
  <element my-row></element>
  <element my-row secondRow="true"></element>
  <element my-row></element>
  <element my-row></element>
</table>
Run Code Online (Sandbox Code Playgroud)

但是我不确定应该是什么“元素”。

如果我只想要一行,则可以从MyRowComponenet中删除“ tr”,然后将其制成<tr my-row></tr>,但是由于我想要两行,因此这似乎是不可能的。<tbody>这不是一个选择,因为我只能在一个表中有一个。

我尝试使用<ng-component><ng-template>但是使用它们时出现了模糊的错误。

对于我的用例,不需要使用div而不是表。

谁能帮我吗?

编辑:请注意,使elementbe tr不起作用。由于它只是在您要创建的表的第一个单元格内创建了一个表。这是证明这一点的两个组件。

import { Component, Input } from '@angular/core';

@Component({
  selector: '[my-row]',
  template: `
  <tr>
    <td>{{ firstWord }}</td>
    <td>{{ secondWord }}</td>
  </tr>
  <tr *ngIf="secondRow">
    <td>fooooooooooooooo</td> …
Run Code Online (Sandbox Code Playgroud)

angular

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

训练神经网络在 scikit-learn 中计算“XOR”

我正在尝试学习如何使用 scikit-learn 的 MLPClassifier。对于一个非常简单的例子,我想我应该尝试让它学习如何计算 XOR 函数,因为我之前已经手动完成了这个作为练习。

然而,在我尝试拟合模型后,它只是吐出零。

xs = np.array([
    0, 0,
    0, 1,
    1, 0,
    1, 1
]).reshape(4, 2)

ys = np.array([0, 1, 1, 0]).reshape(4,)

model = sklearn.neural_network.MLPClassifier(
    activation='logistic', max_iter=10000, hidden_layer_sizes=(4,2))
model.fit(xs, ys)

print('score:', model.score(xs, ys)) # outputs 0.5
print('predictions:', model.predict(xs)) # outputs [0, 0, 0, 0]
print('expected:', np.array([0, 1, 1, 0]))
Run Code Online (Sandbox Code Playgroud)

我也将我的代码放在 github 上的 jupyter 笔记本中https://gist.github.com/zrbecker/6173ac01ed30be4eea9cc96e21f4896f

当我可以明确表明存在一个解决方案时,为什么 scikit-learn 无法找到解决方案?成本函数是否陷入局部最小值?参数是否发生某种正则化,迫使它们保持接近 0?我使用的参数相当大(即-30 到30)。

python numpy machine-learning scikit-learn

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

C#数组是否保证按顺序存储在内存中?

根据互联网上的许多消息来源,C#数组是按顺序存储的.也就是说,如果我有一个指向数组中第一个元素的指针int *start = &array[0],那么我可以array[i]通过执行来访问*(start + i).

但是,我正在查看存储在其中的C#语言规范,C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#\Specifications\1033我找不到任何可以保证这种情况的地方.

在实践中,这可能不是一个问题,如果说微软和Mono保持他们的实现同步,但我想知道是否有一个官方来源保证数组按顺序存储在内存中.

谢谢!

.net c#

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

python-ecdsa 签名大小是否正确?

在比特币维基上我发现比特币使用 ECDSA 算法和 Secp256k1 曲线。

相关链接:

在第一个链接上,它说私钥应该是 32 个字节,公钥应该是 64 个字节,签名通常在 71-73 个字节之间。它说签名可以很小的概率更小。

但是,当我运行以下 python3 代码时

>>> from ecdsa import SigningKey, SECP256k1
>>> private_key = SigningKey.generate(curve=SECP256k1)
>>> public_key = private_key.get_verifying_key()
>>> signature = private_key.sign(b'message')
>>> print((len(private_key.to_string()), len(public_key.to_string()), len(signature)))
Run Code Online (Sandbox Code Playgroud)

我得到 (32, 64, 64) 作为输出。我希望得到类似 (32, 64, 72) 的结果。

我认为正在发生以下情况之一:

  • 我误解了维基文章。
  • 我错误地使用了 python-ecdsa
  • 比特币维基不正确
  • python-ecdsa 没有正确实现

前两个是最有可能的。

谁能向我解释为什么我的期望与实际得到的不匹配?

python cryptography bitcoin ecdsa

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

二进制的二进制表示

我很无聊,想看看double的二进制表示是什么样的.但是,我发现窗户上有些奇怪.以下代码行说明

double number = 1;
unsigned long num = *(unsigned long *) &number;
cout << num << endl;
Run Code Online (Sandbox Code Playgroud)

在我的Macbook上,这给了我一个非零数字.在我的Windows机器上它给我0.

我期待它会给我一个非零数字,因为1.0作为double的二进制表示不应该全为零.但是,我不确定我要做的是否是明确定义的行为.

我的问题是,上面的代码是愚蠢和错误的吗?而且,有没有办法可以打印出双精度的二进制表示?

谢谢.

c++

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

在张量流中使用梯度下降优化器时获取变量的"nan"

我正在尝试做一些非常类似于tensorflow主页上的"入门"教程.但是,nan在使用本教程中使用的梯度下降训练器时,我一直在寻找变量.

任何人都可以帮我找出原因吗?

import tensorflow as tf
import random

def generate_data(sample_count, slope, intercept, epsilon, min_x, max_x):
    xs = [random.uniform(min_x, max_x) for _ in range(sample_count)]
    ys = [slope * x + intercept + random.uniform(-epsilon, epsilon) for x in xs]
    return xs, ys

# Create Data
sample_count = 1000
slope = 3
intercept = 0 
epsilon = 20
min_x = 0
max_x = 100

xs, ys = generate_data(sample_count, slope, intercept, epsilon, min_x, max_x)

# Linear Model
initial_m = 1.
initial_b = …
Run Code Online (Sandbox Code Playgroud)

tensorflow

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