Py学习  »  Steve  »  全部回复
回复总数  11
3 年前
回复了 Steve 创建的主题 » 将Redis客户端导入Typescript应用程序时出错

如果删除任何类型的代码,代码将在节点14上工作。我的包裹。json使用:

"@tsconfig/node14": "^1.0.1",
"redis": "^4.0.4"
class RedisCache {
    //private client: any;

    async init() {

        const client = createClient();

        client.on('error', (err) => console.log('Redis Client Error', err));

        await client.connect();

        await client.set('key', 'value');
        const value = await client.get('key');
        console.log("In class");
        console.log(value);
    }
}

const reditCache = new RedisCache();
reditCache.init();
3 年前
回复了 Steve 创建的主题 » 如何在Python中获得与在Excel中使用SLOPE相同的结果?

干得好。

import numpy as np
from sklearn.linear_model import LinearRegression

x = np.array([5.12,26.81,58.82,100.04,148.08]).reshape((-1, 1))
y = np.array([-0.10266667,0.02666667,0.016 ,0.06666667,0.08266667])

model = LinearRegression().fit(x, y)

print(model.coef_)

# methods and attributes available
print(dir(model))

在excel中, SLOPE 参数的顺序是y,x。我在这里使用了这些名称,所以它会更明显。

这个 reshape 只是制造 x a所需列表的列表。 y 只是需要一张清单。 model 有许多其他可用的方法和属性。看见 dir(model) .

3 年前
回复了 Steve 创建的主题 » for循环中的Python打印格式

我想这就是你想要的。

print("")
encryptString = input("Please enter string to encrypt:")
print("")
offSetValue = int(input("Please enter offset value (1-94):"))
print("")

print("Encrypted string:") 
for character in encryptString:
    x = ord(character)
    y = x + offSetValue
    z = chr(y)      
    print(z, end="")

print()

你想要 print("Encrypted string:") 在循环和使用之前 end 而不是 sep . 九月 用于分隔打印中的多个参数。 终止 是在打印内容的末尾添加的终止字符。这里我们以空字符串结束。默认的 终止 是新线人物, \n .这就是为什么你看到所有的东西都印在新的一行上。

6 年前
回复了 Steve 创建的主题 » 在Python中将数据压缩成最小的文本量

更新:我刚刚看到你改变了你的问题,澄清你关心的是字符长度而不是字节长度。这是一个非常奇怪的约束。我以前从没听说过。我不知道该怎么办。但如果这是你的需要,你想要可预测的阻塞行为,那么我认为你的问题很简单。只需选择可以表示最可能唯一字符的兼容字符编码,然后将二进制文件的块映射到该字符集上,使每个块都是它所能达到的最长的,并且所包含的比特数少于字符编码中可表示的字符数。然后,每个这样的块变成一个字符。因为这个约束有点奇怪,所以我不知道是否有库可以这样做。

更新2:出于对上述内容的好奇,我在谷歌上找到了这个: https://qntm.org/unicodings . 如果你的工具和沟通渠道能够处理UFT-16或UTF-32,那么你可能会在寻求使用它的时候有所收获。如果是这样的话,我希望这篇文章能为您提供您正在寻找的解决方案。我认为本文仍然在针对字节长度和字符长度进行优化,因此这可能无法提供最佳解决方案,但它只能提供帮助(每个字符32个潜在位,而不是7或8)。我找不到任何寻求优化字符计数单独,但也许UTF-32方案,如Base65536是你的答案。退房 https://github.com/qntm/base65536 .

如果你关心的是字节长度,并且你想坚持使用通常所说的“可打印字符”或“纯可打印文本”,那么这里是我最初的答案。。。

Base85非常接近将任意二进制编码为“纯文本”时的最佳效果,如果您希望“纯文本”编码能够在逻辑上分解为有意义的、可预测的块,则它是最佳效果。理论上,您可以使用在高ASCII范围内使用可打印字符的字符集,但经验表明,许多工具和通信通道如果不能处理直接二进制字符,则不能很好地处理高ASCII。尝试每4个二进制字节使用额外的5位,或者使用256位高ASCII而不是128位ASCII,不会节省太多额外的空间。

对于任何BaseXX编码,该算法接受传入的二进制位,并使用它可以使用的XX个可打印字符对它们进行尽可能紧密的编码。Base85将比Base64更紧凑,因为它使用的可打印字符(85)比Base64使用的可打印字符(64个字符)多。

结果是,85个字符是你需要编码4个字节,正好5个可打印字符。许多人会选择增加大约10%的额外长度,以获得这样一个事实,即每4个编码字节将导致正好5个ASCII字符。这只是一个25%的通货膨胀的大小二进制。这对它省下的所有头痛来说一点也不坏。因此,Base85背后的动机。

Base64用于生成更长但问题更少的编码。不使用给各种文本文档(如HTML、XML、JSON等)带来麻烦的字符。这样,Base64在几乎任何上下文中都是有用的,而无需任何转义。你必须更加小心使用Base85,因为它不会抛出这些有问题的字符。为了提高编码/解码效率,它使用范围33(!)通过117(u),从33开始,而不是32,只是为了避免经常出现问题的空格字符。上面不使用的“u”字没什么特别的。

这就是二进制编码方面的故事。另一个问题是,在将二进制表示编码为ASCII之前,您可以做些什么来减小所表示内容的大小。你选择使用 pickle.dumps() zlib.compress() . 如果这些是你最好的选择,那就留给另一个讨论吧。。。

6 年前
回复了 Steve 创建的主题 » 错误1728(HY000):无法从mysql.db加载。桌子可能坏了

需要使用以下命令修复mysql.db表:

mysql> REPAIR TABLE mysql.db;

你可以找到一个类似的问题和解释 here

6 年前
回复了 Steve 创建的主题 » Python math在命令行中是正确的,而py文件中却是错误的?

您的代码有两个问题:

1) 正如用户2357112所说,您需要在两个减法前后加上括号,这样减法就在除法之前完成了。

str(root[1]-origin[i][0]) 应该是 str(root[1]-origin[i][1])

def N_queens_validator(n):

    if len(set(n))!=len(n):
        return print(f'{n} =>False same row')

    else:
        origin=[(ind,val) for ind,val in enumerate(n)]
        a=origin[:]
        for m in range (len(n)):
            root=a.pop(0)
            for i in range(m+1,len(n)):
                result=(root[0]-origin[i][0])/(root[1]-origin[i][1])
                print(str(root[0]-origin[i][0])+'/'+str(root[1]-origin[i][1])+' the result is: '+str(result))
                if abs(result)==1:
                    return print(f'{n} =>False same diagonal')
        return print(f'{n} =>True')

N_queens_validator([8, 6, 4, 2, 7, 1, 3, 5])

结果:

-1/2 the result is: -0.5
-2/4 the result is: -0.5
-3/6 the result is: -0.5
-4/1 the result is: -4.0
-5/7 the result is: -0.7142857142857143
-6/5 the result is: -1.2
-7/3 the result is: -2.3333333333333335
-1/2 the result is: -0.5
-2/4 the result is: -0.5
-3/-1 the result is: 3.0
-4/5 the result is: -0.8
-5/3 the result is: -1.6666666666666667
-6/1 the result is: -6.0
-1/2 the result is: -0.5
-2/-3 the result is: 0.6666666666666666
-3/3 the result is: -1.0
[8, 6, 4, 2, 7, 1, 3, 5] =>False same diagonal

原来我不应该将max_rows设置为max_columns display设置为-1。而不是

pd.set_option("display.max_rows",-1)
pd.set_option("display.max_columns",-1)

最好给出整数值,比如

pd.set_option("display.max_rows",1000)
pd.set_option("display.max_columns",100)

以前没有这样的问题。所以,我不确定这里的实际问题是什么。我想把这个放在这里,以防别人也有同样的问题。

5 年前
回复了 Steve 创建的主题 » 无法在C中连接到mySQL#

首先,您需要下载MySql data connector for.NET。你可以在这里找到它 https://dev.mysql.com/downloads/connector/net/ . 接下来,在安装之后,需要向项目中添加对MySql库的引用。见 here how to do it

或者您可以简单地使用NuGet包管理器自动下载和安装连接器。

在任何情况下,在正确安装并引用库之后,您应该将 using MySql.Data.MySqlClient; 现在可以使用连接到MySql并处理其数据所需的类了。

所以你的代码应该是

using MySql.Data.MySqlClient;

... other code ....

private void Button1_Click(object sender, EventArgs e)
{

    try
    {
        string connetionString = @"Server=localhost;Database=my_projects;User ID=root;Password=123456";
        using(MySqlConnection cnn = new MySqlConnection(connetionString))
        {
            cnn.Open();
            MessageBox.Show("Connection Open  !");
        }
    }
    catch(Exception ex)
    {
        MessageBox.Show("Cannot open connection: Reason:" + ex.Message);
    }

}

请记住,到数据库的连接包含非托管资源,您应该始终添加 using statement 围绕着这些东西。

6 年前
回复了 Steve 创建的主题 » 命令行中的python modulenotfounderror

如果您的模块与您的可执行文件包含在同一个目录中(如您所示),则如下所示:

文件结构:

f1.py
m1
  __init__.py
  C1.py

C1.Py

class C1:
    def test(self):
        print("Hi!")

F1.Py

#!/usr/bin/env python

from m1.C1 import C1

C1().test()

执行:

> python f1.py
Hi!

你的模块目录中有初始化文件,对吧?如果没有,那可能就是你在这件事上遇到麻烦的原因。

6 年前
回复了 Steve 创建的主题 » 处理python字典中缺少的键

我认为你的逻辑有一个根本问题。你正在遍历所有实例并为其中的每个实例建立映射 EC2FIN . 但是每次通过循环,在处理一个特定的实例时,您都在循环 EC2FIN ,包括以前循环迭代添加的数据。我打赌你不是真的想这么做。我打赌你真的想显示你正在处理的实例的属性。

这是你问题的关键:

attributes = ['Instance ID', 'Type',
    'State', 'Private IP', 'Launch Time' ]
for instance_id, instance in ec2info.items():

所以在这里,你迭代所有的地图 EC2FIN ,但您正在应用一组特定于当前正在处理的实例的“属性”。一般来说,根据你自己的代码,不是所有的地图 EC2FIN 所有的钥匙都是一样的,你得到的是错误。

6 年前
回复了 Steve 创建的主题 » python slapy响应站

这个函数永远不会做任何事情,因为 如果 有条件的:

if response.url is 'http://www.ccdy.cn/zhuanti/' and response.url is 'http://www.ccdy.cn/difang/':

将永远是错误的,因此它永远不会进入 如果 代码块。也许你想要一个或那里而不是一个和?

…或者也许你的压痕错了,或者至少是我弄错了。在任何情况下, 如果 没有任何意义,因为很明显它总是错误的。