小编Jav*_*ier的帖子

将编程语言翻译成另一种人类语言有多难?

让我解释.假设我想向只讲西班牙语的人教Python.如您所知,在大多数编程语言中,所有关键字都是英文的.创建一个程序可以找到给定源代码中的所有关键字并进行翻译,这有多复杂?我是否需要使用解析器和东西,或者几个正则表达式和字符串函数是否足够?

如果它依赖于源编程语言,那么Python和Javascript将是最重要的.

我的意思是"它有多复杂"是否足以拥有一个关键字列表,并解析源代码以找到不在引号中的关键字?或者是否有足够的语法怪异,需要更复杂的东西?

parsing localization

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

我可以在扩展Python时使用C++功能吗?

Python手册说您可以在C和C++中为Python创建模块.使用C++时,您可以利用类和模板之类的东西吗?它不会与其他库和解释器产生不兼容性吗?

c c++ python python-c-api python-c-extension

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

对Python进行C扩展,需要另一个扩展

我有几个Python函数,我用它来使Pygame的游戏开发更容易.我把它们放在我的Python路径中名为helper.py的文件中,所以我可以从我制作的任何游戏中导入它们.我想,作为一个学习Python扩展的练习,将这个模块转换为C.我的第一个问题是我需要使用Pygame中的函数,我不确定这是否可行.Pygame安装了一些头文件,但它们似乎没有C函数的Python版本.也许我错过了什么.

我怎么解决这个问题?作为一种解决方法,该函数当前接受一个函数参数并调用它,但它不是理想的解决方案.

顺便说一句,使用Windows XP,Python 2.6和Pygame 1.9.1.

c python pygame

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

Eclipse/PyDev中的函数参数

当我在打字时,如何显示功能参数帮助框?通过查看像这样的问题,似乎我必须要点击Ctrl+ SPACECtrl+ Shift+ SPACE,但这些似乎都不起作用.键入时会显示参数(,但随后它们会消失.

BTW,一个相关的问题:似乎当我输入类的名称时,不会显示参数框.我必须.__init__在类名后面输入以查看帮助框.这是这样还是我错过了什么?

eclipse pydev

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

如何在C中将文本文件复制到字符串?

我需要将文本文件的内容复制到动态分配的字符数组中.

我的问题是获取文件内容的大小; 谷歌揭示我需要使用fseekftell,但为此文件显然需要以二进制模式打开,这只会给垃圾.

编辑:我尝试在文本模式下打开,但我得到奇怪的数字.这是代码(为了清楚起见,我省略了简单的错误检查):

long f_size;
char* code;
size_t code_s, result;
FILE* fp = fopen(argv[0], "r");
fseek(fp, 0, SEEK_END);
f_size = ftell(fp); /* This returns 29696, but file is 85 bytes */
fseek(fp, 0, SEEK_SET);
code_s = sizeof(char) * f_size;
code = malloc(code_s);
result = fread(code, 1, f_size, fp); /* This returns 1045, it should be the same as f_size */
Run Code Online (Sandbox Code Playgroud)

c copy file

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

编译器警告

假设我有这个(C++或C)代码:

vector<int> my_vector;
for (int i = 0; i < my_vector.size(); i++) {
    my_vector[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)

我不在乎它是否做得对.重要的部分是for循环声明.编译器为此提供了有符号/无符号的不匹配,因为size()返回unsigned int而不是signed符号.i改为无签名有多重要?我将循环计数器声称为习惯中的int,但如果这是一个潜在的错误,我会强迫自己摆脱这种习惯.

c++ unsigned signed compiler-warnings

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

使用Python C API时检查返回值有多重要?

似乎每次我调用一个返回PyObject*的函数时,我都要添加四行错误检查.例:

py_fullname = PyObject_CallMethod(os, "path.join", "ss", folder, filename);
if (!py_fullname) {
    Py_DECREF(pygame);
    Py_DECREF(os);
    return NULL;
}
image = PyObject_CallMethodObjArgs(pygame, "image.load", py_fullname, NULL);
Py_DECREF(py_fullname);
if (!image) {
    Py_DECREF(pygame);
    Py_DECREF(os);
    return NULL;
}
image = PyObject_CallMethodObjArgs(image, "convert", NULL);
if (!image) {
    Py_DECREF(pygame);
    Py_DECREF(os);
    return NULL;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?有一个更好的方法吗?这有一个额外的问题,我可能会忘记我应该的所有东西Py_DECREF().

c python memory-management

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

使用Pygame进行多线程处理

我在编写一个使用线程的简单Pygame应用程序时遇到了一些麻烦.请记住,这是我写过的第一个多线程代码.

这是情况.我正在写一个简单的应用程序,它会在屏幕上绘制一些时髦的线条.我的问题是,当我绘制线条时,应用程序无法处理输入,因此我不能(例如)关闭窗口直到线条完成.这是我的原始代码:

import time
import pygame
from pygame.locals import *

SIZE = 800

def main():
    screen = pygame.display.set_mode((SIZE, SIZE))
    for interval in xrange(50, 1, -5):
        screen.fill((0, 0, 0))
        for i in xrange(0, SIZE, interval):
            pygame.draw.aaline(screen, (255, 255, 255), (i+interval, 0), (0, SIZE-i))
            pygame.draw.aaline(screen, (255, 255, 255), (i, 0), (SIZE, i+interval))
            pygame.draw.aaline(screen, (255, 255, 255), (SIZE, i), (SIZE-i-interval, SIZE))
            pygame.draw.aaline(screen, (255, 255, 255), (SIZE-i, SIZE), (0, SIZE-i-interval))
            pygame.display.update()
            time.sleep(0.03)
        time.sleep(3)
    while True:
        for evt in pygame.event.get():
            if evt.type == QUIT:
                return …
Run Code Online (Sandbox Code Playgroud)

python multithreading pygame

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

我对K&R练习1-22的解决方案有什么问题?

C程序设计语言的练习1-22 如下:

编写一个程序,在输入的第n列之前出现的最后一个非空白字符之后,将长输入行"折叠"成两条或更多条较短的行.确保您的程序在非常长的行中执行智能操作,并且如果指定列之前没有空格或制表符.

这是代码:

#include <ctype.h>
#include <stdio.h>

#define MAXLINE 500
#define FOLD_LENGTH 15

/* _getline:  read a line into s, return length  */ 
size_t _getline(char s[], int lim) 
{ 
    int c; 
    size_t i;

    for (i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i) 
        s[i] = c; 
    if (c == '\n') { 
        s[i] = c; 
        ++i; 
    } 
    s[i] = '\0'; 
    return i; 
}

int main()
{
    int c;
    char line[MAXLINE];
    char temp;
    unsigned last_space_idx = 0, i, …
Run Code Online (Sandbox Code Playgroud)

c kernighan-and-ritchie

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

正则表达式可以实现吗?

像这样的东西:

/[abcd]/[efgh]/
Run Code Online (Sandbox Code Playgroud)

这个想法a将被替换为e,bwith f,cwith g等等.

理想情况下,这应该与语言无关.如果那是不可能的,我有一个替代解决方案(因为这个正则表达式是由一些代码生成的,我可以为每个可能的替换创建一个).

regex replace

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