小编Zel*_*ahl的帖子

Pytest:如何使用输入调用测试函数?

我有一个用Python编写的控制台程序.它使用以下命令询问用户问题:

some_input = input('Answer the question:', ...)
Run Code Online (Sandbox Code Playgroud)

我将如何测试中,含有一个呼叫的功能input使用pytest?我不想强迫测试人员多次输入文本只完成一次测试运行.

python testing unit-testing input pytest

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

scikit-learn LogisticRegression.predict_proba的返回值

该LogisticRegression.predict_proba功能究竟返回了什么?

在我的例子中,我得到这样的结果:

[[  4.65761066e-03   9.95342389e-01]
 [  9.75851270e-01   2.41487300e-02]
 [  9.99983374e-01   1.66258341e-05]]
Run Code Online (Sandbox Code Playgroud)

从其他计算中,我知道,使用sigmoid函数,第二列是概率.该文件说,第一列是n_samples,但那是不可能的,因为我的样品的评价,这是文字和数字没有.文档还说,第二列是n_classes.这当然不可能,因为我只有两个类(即+1和-1),并且该函数应该是关于计算真正属于类的样本的概率,而不是类本身.

真正的第一列是什么?它为什么存在?

python machine-learning probability scikit-learn logistic-regression

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

如何在Rust中过滤自定义结构的向量?

我试图筛选Vec<Vocabulary>这里Vocabulary是一个自定义的struct,它本身包含一个struct VocabularyMetadata和Vec<Word>:

#[derive(Serialize, Deserialize)]
pub struct Vocabulary {
    pub metadata: VocabularyMetadata,
    pub words: Vec<Word>
}
Run Code Online (Sandbox Code Playgroud)

这用于处理Web应用程序中的路由,其中​​路由如下所示:/word/<vocabulary_id>/<word_id>.

这里是我当前的代码试图filter在Vec<Vocabulary>:

let the_vocabulary: Vec<Vocabulary> = vocabulary_context.vocabularies.iter()
    .filter(|voc| voc.metadata.identifier == vocabulary_id)
    .collect::<Vec<Vocabulary>>();
Run Code Online (Sandbox Code Playgroud)

这不起作用.我得到的错误是:

 the trait `std::iter::FromIterator<&app_structs::Vocabulary>` is not implemented for `std::vec::Vec<app_structs::Vocabulary>` [E0277]
Run Code Online (Sandbox Code Playgroud)

我不知道如何实施任何FromIterator,也不知道为什么这是必要的.在同一个Web应用程序中的另一个路径中,我执行以下相同的文件,其工作原理:

let result: Vec<String> = vocabulary_context.vocabularies.iter()
    .filter(|voc| voc.metadata.identifier.as_str().contains(vocabulary_id))
    .map(encode_to_string)
    .collect::<Vec<String>>();
    result.join("\n\n")  // returning
Run Code Online (Sandbox Code Playgroud)

所以它似乎String实现了FromIterator.

但是,我没有得到,为什么我不能简单地Vec从the filter或collect方法中获取元素. …

struct filtering vector rust

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

Spyder IDE中的Markdown

我正在Spyder IDE中进行实验并了解到,可以使用#%%分隔符定义单元格.现在我找不到它,但是可以使用降价,就像在Jupyter笔记本中一样吗?

python markdown spyder jupyter-notebook

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

为什么Python枚举慢?

今天我尝试将我的一些"最终"值(我的班级成员)从一个类外包给一个Enum.我运行了我编写的单元测试并注意到,测试需要比以前更长的时间才能完成.当我把这些"最终"值重新放回课堂时,一切都恢复了原来的速度.这里是我在Enum中访问它们时的一个例子:

class SpecialCharacters(Enum):

    TONE_NUMBERS = ["0", "1", "2", "3", "4"]
Run Code Online (Sandbox Code Playgroud)

像这样访问它:

SpecialCharacters.TONE_NUMBERS.value
Run Code Online (Sandbox Code Playgroud)

它们在类中时访问值的示例:

self.TONE_NUMBERS
Run Code Online (Sandbox Code Playgroud)

所以我想知道为什么当我将值放入Enum时,我的测试需要花费3倍(!)的时间.它应该是对另一个班级成员的简单调用,但我认为这不会产生如此大的差异.

(将它们外包的目标是它们可用于其他类,而其他类不必访问与它们无关的类.)

我的python版本是3.4.

performance enums python-3.x

7
推荐指数
2
解决办法
1467
查看次数

tkinter - 如何设置Text的字体?

我想找到一个最好的字体来显示utf-8字符tk.Text.

我让python使用这段代码打印tk已知的所有姓氏:

print(font.families(root=self.parent))
Run Code Online (Sandbox Code Playgroud)

以及使用此代码的所有已知名称:

print(font.names(root=self.parent))
Run Code Online (Sandbox Code Playgroud)

然而,族的输出是一个字体列表,其名称由一个或多个单词组成.用这样的单词设置一个很容易:

text = tk.Text(master=self.frame)
text.configure(font='helvetica 12')
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用由多个单词组成的字体名称时,我收到一个错误:

_tkinter.TclError: expected integer but got <second word of the family name>
Run Code Online (Sandbox Code Playgroud)

我不能设计它,因为它是一个tk而不是一个ttk小部件,所以很遗憾我做不到:

style.configure('My.TText', fontsize=12, font='<family name with multiple words>')
Run Code Online (Sandbox Code Playgroud)

我还试图简单地删除姓氏的空格,如下所示:

text.configure(font='fangsongti')
Run Code Online (Sandbox Code Playgroud)

但这会导致tkinter使用一些后备字体.我检查了它的名字,如:

text.configure(font='fangsongtisdngfjsbrgkrkjgbkl')
print(text.cget('font'))
Run Code Online (Sandbox Code Playgroud)

这导致打印出我作为姓氏输入的确切字符串.因此它只接受所有内容,除了多个措辞名称.

我找到了一些看起来不错的字体,但只有一定的尺寸,我不确定它们是否适用于大多数系统:

# helvetica 12
# gothic 13
# mincho 13
Run Code Online (Sandbox Code Playgroud)

如何设置名称由多个单词组成的字体?如果我不能,具有一个措辞名称的字体适合显示utf-8字符,例如普通字体大小的中文(但不是唯一!)字符,并且在大多数系统上都可用?

python fonts text tkinter widget

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

Python Pandas防止单元格换行

使用以下功能,我已经设法防止笔记本计算机中的输出被截断:

pd.set_option('display.max_colwidth', 200)
pd.set_option('display.max_columns', 0)
Run Code Online (Sandbox Code Playgroud)

但是,它仍然会破坏某些单元格中的长行(不会截断!)。我如何防止它这样做?

(我不在乎总表有多宽,因为我可以简单地滚动笔记本单元的输出...)

python pandas

7
推荐指数
2
解决办法
4139
查看次数

如何从std :: borrow :: Cow <str>获取&str或String?

我有一个Cow:

use std::borrow::Cow;  // Cow = clone on write
let example = Cow::from("def")
Run Code Online (Sandbox Code Playgroud)

我想def退出它,以便将它追加到另一个String:

let mut alphabet: String = "ab".to_string();
alphabet.push_str("c");
// here I would like to do:
alphabet.push_str(example);
Run Code Online (Sandbox Code Playgroud)

这不起作用,我没有看到适当的方法Cow来获取&str或String退出.

string concatenation rust

7
推荐指数
2
解决办法
2650
查看次数

舞台的 JavaFx USE_COMPUTED_SIZE 不使用 FXML

在 JavaFX Scene Builder 中,我可以为 aControl或的最小、最大和首选宽度和高度选择一个值Container。有预定义的值,如USE_COMPUTED_SIZE.

我得出的结论是,我不喜欢在当前项目中使用 FXML,原因有几个,现在我想知道在不使用 FXML 时如何设置这些值。

我该怎么做呢?

我试过以下代码:

initializeControls();
addControls();


setMinHeight(Control.USE_COMPUTED_SIZE);
setMinWidth(Control.USE_COMPUTED_SIZE);

addActionListeners();
addFocusChangeListeners();
Run Code Online (Sandbox Code Playgroud)

但是,在尝试创建舞台时会导致异常:

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: The width and height must be >= 0. Got: width=-1; height=-1
at com.sun.glass.ui.Window.setMinimumSize(Window.java:984)
at com.sun.javafx.tk.quantum.WindowStage.setMinimumSize(WindowStage.java:291)
at javafx.stage.Stage.impl_visibleChanging(Stage.java:1154)
at javafx.stage.Window$9.invalidated(Window.java:743)
at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:109)
at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:143)
at javafx.stage.Window.setShowing(Window.java:841)
at javafx.stage.Window.show(Window.java:856)
at javafx.stage.Stage.show(Stage.java:255)
at dictionary.MainApp.trainVocablesButtonActionPerformed(MainApp.java:281)
at dictionary.MainApp.lambda$addActionListeners$2(MainApp.java:240)
at dictionary.MainApp$$Lambda$281/81350454.handle(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) …
Run Code Online (Sandbox Code Playgroud)

java height user-interface javafx width

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

如何创建 Cabal 沙盒

我想为 Haskell 的教程程序构建一个环境,因为我想尝试学习这门语言。所以我阅读了 Cabal 并且已经在我的机器上安装了它,因为我有时会更新 pandoc。我遵循了一些教程,其中指出您应该运行:

$ cabal sandbox init
$ cabal install --only-dependencies
$ cabal build
Run Code Online (Sandbox Code Playgroud)

要设置环境。但是,如果我尝试这样做,我会收到以下消息:

$ cabal sandbox init
Writing a default package environment file to
/home/xiaolong/development/Haskell/cabal.sandbox.config
Using an existing sandbox located at
/home/xiaolong/development/Haskell/.cabal-sandbox
Run Code Online (Sandbox Code Playgroud)

(ls命令输出)

$ ls
cabal.sandbox.config
Run Code Online (Sandbox Code Playgroud)

进而:

$ cabal install --only-dependencies
cabal: Error reading local package.
Couldn't find .cabal file in: .
Run Code Online (Sandbox Code Playgroud)

嗯?突然需要一个.cabal文件?这让我很困惑。我需要采取哪些步骤来获得一个环境,在该环境中我可以简单地安装软件包,然后使用该环境运行我选择的任何教程的代码?

这是另一个建议所描述的工作流程的教程。有什么我失踪了。

(我的印象是,cabal 沙箱与 python virtualenvs 相当,在某种程度上很有用,不需要在系统范围内安装软件包,而是可以将它们安装在一个目录中,然后使用该环境运行程式。)

haskell sandbox virtualenv cabal

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