小编bcl*_*man的帖子

Java国际象棋游戏的OOP设计(与棋/棋盘互动产生麻烦)

我正在尝试用Java编写自己的国际象棋游戏。我已经开始编写类,并且我的高级想法如下:

我有一个与这些领域的计件班:

private String name;
private String color;
Run Code Online (Sandbox Code Playgroud)

最初,我将为每个零件设置一个x和y坐标,但这似乎更像是董事会的财产。带我去...

我有一个具有此类字段的Board类:

Piece[][] myBoard = new Piece[8][8];
Run Code Online (Sandbox Code Playgroud)

我不太确定我应该在哪里/如何跟踪零件的位置。到目前为止,我只有一个二维的Piece对象数组。但是,我认为这将带来一些挑战。例如,假设用户单击了一块,想要移动它。我需要弄清楚该移动是否有效,为此,我需要该棋子所在的当前方块。

如果每个零件都有x和y坐标,那么我将在两个位置(在Board类的2d数组中)和当前零件的x和y坐标处更新游戏的状态。好像不好

有什么建议么?

感谢您的帮助,Mariogs

java oop

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

标准ML:关于参考细胞的困惑

我正在阅读Harper的SML简介,对参考单元格有点困惑.在p.114,他给出了以下例子:

val r = ref 0
val s = ref 0
val _ = r := 3
val x = !s + !r
val t = r
val _ = t := 5
val y = !s + !r
val z = !t  !r
Run Code Online (Sandbox Code Playgroud)

"执行这些绑定后,x绑定到3,y绑定到5,z绑定到10".

这是我对他的代码的描述:

val r = ref 0 //allocates storage for r and sets to 0
val s = ref 0 //allocates storage for s and sets to 0
val _ = r := 3 //sets r …
Run Code Online (Sandbox Code Playgroud)

functional-programming sml

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

SML:可推广与非通用类型变量

我刚刚在Ch中遇到过这些.Ullman的ML编程元素中的 5个.他说:

"一个类型变量,例如'a有两个不同的含义.它可以表示"对于每个类型T,这个对象的实例用类型T代替'a.这种类型变量称为可推广的."

然后他说:

" 'a也可以表示我们选择的任何一种类型.但是,在选择了一种类型之后,即使我们重复使用原始类型变量描述其类型的对象,类型也不能改变'a.这种类型变量称为非泛化. "

有人能给出每种类型的例子吗?我很难绕过这个并理解这种区别似乎很重要(他建立在这些定义的基础上).

谢谢!

functional-programming sml

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

JUnit5:导入断言时遇到问题

我正在尝试使用 JUnit5 创建一些基本的单元测试。我去我的Analyzer.java班级并获得用于创建测试的弹出窗口。我点击了Create New Test,将测试库设置为 JUnit5。我检查了一堆方法来生成测试方法并点击确定。

所以现在我有一个AnalyzerTest.java文件,在顶部我有:

import static org.junit.jupiter.api.Assertions.*;
Run Code Online (Sandbox Code Playgroud)

不幸的是,Assertions是红色的(这是在 IntelliJ IDEA 中)。当我悬停时,它说“找不到符号断言”。同样,我有:

 @org.junit.jupiter.api.Test
Run Code Online (Sandbox Code Playgroud)

在每个测试方法之前以及当我悬停时,我得到“无法解析符号测试”

我只是想创建然后运行一些单元测试,但显然我做错了什么。

有任何想法吗?

谢谢!

java unit-testing intellij-idea

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

Pandas:Concat 意外添加了一行

我正在将 Pandas 与名为 的 DataFrame 一起使用df。我正在用它提取新功能,并将生成的两个新数据帧与pd.concat. 这是我的功能:

def get_processed_df(df, rare_cols, threshold=10):
    print("df at start", df.shape)

    df = df[pd.notnull(df["FullDescription"]) &  
            pd.notnull(df["Title"]) & 
            pd.notnull(df["SalaryNormalized"])]
    print("df after filtering nulls", df.shape)

    tfidf_desc = get_tfidf_df(df, 
                              "FullDescription", 
                              max_features=100, 
                              prefix="DESC", 
                              tokenize=tokenize)
    print("tfidf_desc shape: ", tfidf_desc.shape)

    tfidf_title = get_tfidf_df(df, 
                               "Title", 
                               max_features=100, 
                               prefix="TITLE", 
                               tokenize=tokenize)
    print("tfidf_title shape: ", tfidf_title.shape)

    df.drop("FullDescription", inplace=True, axis=1)
    df.drop("Title", inplace=True, axis=1)

    final_df = pd.concat([df, tfidf_desc, tfidf_title], axis=1)
    print("final df shape: ", final_df.shape)

    return final_df
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到以下输出:

df at start (10000, 12)
df after …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

Pipenv:指定安装工具的版本

我遇到了一个错误setuptools,应该是在 version 中修复的31.0.0。我pipenv用作虚拟环境管理器,所以我有一个PipfilePipfile.lock.

我已经指定:

setuptools = "==31.0.0"
Run Code Online (Sandbox Code Playgroud)

在我的 Pipfile

我跑了,pipenv install但没有看到任何东西出现在我的Pipfile.lock. 但是,如果我运行:

pipenv run import setuptools setuptools.__version__

我回来了:

40.0.0

知道我如何指定31.0.0以及为什么我当前的方法不正确吗?

谢谢!

python setuptools pipenv

5
推荐指数
0
解决办法
482
查看次数

Keras / Tensorflow:使用tf.data.Dataset API进行预测

我正在将Keras与Tensorflow后端结合使用来构建此问题的模型:https://www.kaggle.com/cfpb/us-consumer-finance-complaints (仅作练习)。

我使用tf.data.DatasetAPI 训练我的Keras模型。现在,我有一个Pandas DataFrame,df_testing其列为complaint(字符串)和label(也是字符串)。我想对这些新样本进行预测。我创建一个tf.data.Dataset对象,执行预处理,创建一个迭代器,并在模型上调用预测:

data = df_testing["complaint"].values
labels = df_testing["label"].values

dataset = tf.data.Dataset.from_tensor_slices((data))
dataset = dataset.map(lambda x: ({'reviews': x}))
dataset = dataset.batch(self.batch_size).repeat()
dataset = dataset.map(lambda x: self.preprocess_text(x, self.data_table))
dataset = dataset.map(lambda x: x['reviews'])
dataset = dataset.make_initializable_iterator()
Run Code Online (Sandbox Code Playgroud)

我的训练使用了tf.data.Dataset每个元素的形式,({'reviews': "movie was great"}, "positive")因此在这里我将其模仿为预测。另外,我的预处理只是将我的字符串变成Tensor整数a。

当我打电话时:

preds = model.predict(dataset)
Run Code Online (Sandbox Code Playgroud)

但有人告诉我我的predict电话失败了:

ValueError: When using iterators as input to a model, you should specify the …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow tensorflow-datasets

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

Python argparse:参数太少了

我正在尝试在Python中使用argparse库.我想让用户做类似的事情:

python my_script.py csv_name.csv [--dryrun]
Run Code Online (Sandbox Code Playgroud)

where --dryrun是可选参数.

然后我让用户输入API密钥和密钥.当我运行我的代码时,我过去输入API和密钥,然后我得到:

usage: my_script.py [-h] csv dryrun
salesforceImporter.py: error: too few arguments
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

def main():
    api_key = getpass.getpass(prompt='Enter API Key: ')
    secret_key = getpass.getpass(prompt='Enter Secret Key: ')

    parser = argparse.ArgumentParser()
    parser.add_argument("csv")
    parser.add_argument("dryrun")
    args = parser.parse_args()

    validate_csv_name(args.csv)

    is_dry_run = args.dryrun == '--dryrun'
Run Code Online (Sandbox Code Playgroud)

知道我哪里错了吗?

谢谢!

python argparse

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

Keras:文本预处理(停用词删除等)

我正在使用 Keras 执行多标签分类任务(Kaggle 上的有毒评论文本分类)。

我正在使用Tokenizer该类进行一些预处理,如下所示:

tokenizer = Tokenizer(num_words=10000)
tokenizer.fit_on_texts(train_sentences)
train_sentences_tokenized = tokenizer.texts_to_sequences(train_sentences)
max_len = 250
X_train = pad_sequences(train_sentences_tokenized, maxlen=max_len)
Run Code Online (Sandbox Code Playgroud)

这是一个好的开始,但我还没有去除停用词、词干词等。对于停用词去除,我在上述之前做了以下工作:

def filter_stop_words(train_sentences, stop_words):
    for i, sentence in enumerate(train_sentences):
        new_sent = [word for word in sentence.split() if word not in stop_words]
        train_sentences[i] = ' '.join(new_sent)
    return train_sentences

stop_words = set(stopwords.words("english"))
train_sentences = filter_stop_words(train_sentences, stop_words)
Run Code Online (Sandbox Code Playgroud)

在 Keras 中不应该有更简单的方法来做到这一点吗?希望也有词干能力,但文档没有表明有:

https://keras.io/preprocessing/text/

任何有关停用词删除和词干提取最佳实践的帮助都会很棒!

谢谢!

python keras

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

YAML:转储没有引号的 Python 列表

我有一个 Python 列表,my_list看起来像这样["test1", "test2", "test3"]。我只是想将它转储到一个不带引号的 YAML 文件中。所以所需的输出是:

test_1
test_2
test_3
Run Code Online (Sandbox Code Playgroud)

我试过了:

import yaml
with open("my_yaml.yaml", "w") as f:
    yaml.safe_dump(my_list, f)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这包括一行中的所有 3 个元素,并且引用了它们:

'test_1', 'test_2', 'test_3'

如何修改以获得所需的输出?

python yaml

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