我在python中写了一个愚蠢的程序给朋友打印"我们是那些说'Ni'的骑士!".然后睡3秒钟,然后打印"Ni!" 使用random模块的uniform()方法以随机间隔进行20次.这是我的代码:
from time import sleep
import random
def knights_of_ni():
generator = random.Random()
print "We are the knights who say 'ni'."
sleep(3)
for i in range(0,20):
print "Ni!"
sleep(generator.uniform(0,2))
Run Code Online (Sandbox Code Playgroud)
我试着在解释键入导入此模块from silly import knights_of_ni() 和 import silly,然后调用与任何功能knights_of_ni()或silly.knights_of_ni()(),但我总是得到相同的异常:
NameError: global name 'time' is not defined
Run Code Online (Sandbox Code Playgroud)
导致此错误的原因是什么?我如何修复我的代码?
编辑:坦率地说,我不确定我遇到了什么问题.我第二天早上运行了代码并且工作得很好.我发誓昨晚代码产生了错误...无论如何,感谢您的洞察力.
这是我第一次使用JNI,也是我第一次在C中写一些行.
我想要做的很简单.我只是尝试使用C例程切换byte []的endiannes.
在java中,它是这样完成的:
public void switchEndianness(byte[] array){
byte byte1;
byte byte2;
for(int i = 0; i < array.length ; i+=2){
byte1 = array[i];
byte2 = array[i+1];
array[i] = byte2;
array[i+1] = byte1;
}
}Run Code Online (Sandbox Code Playgroud)
所以为了使用JNI做到这一点,我试图在JNICALL中使用相同的例程,但是它没有编译.到目前为止我写的是这样的:
JNIEXPORT void JNICALL Java_CEndianness_switchEndianness(JNIEnv *env, jobject obj, jbyteArray array, jint offset, jint length){
char byte1;
char byte2;
int i;
for(i = offset; i < length ; i+=2){
byte1 = array[i];
byte2 = array[i+1];
array[i] = byte2;
array[i+1] = byte1;
}
}Run Code Online (Sandbox Code Playgroud)
我不知道如何使用jbyteArray类型的数据.是否可以将jbyte存储在char中?另一个问题是..当这个例程结束时... java中的byte []会被修改吗?或者它只在C调用内修改? …
要在WPF中实现基于选项卡的环境,我们需要将表单转换为用户控件,但是在执行此操作时,将Loaded调用用户控件的事件两次.
在互联网上搜索时,其他人也指出了这个问题.我们怎样才能确保只调用一次加载的事件?因为当它被多次调用时,我们的控件的初始化会多次发生.
我遇到了一个奇怪的问题.我有两个文件ac和bc如下:bc:
#include <stdlib.h>
int *foo() {
int *x;
x = (int *) malloc(sizeof(int));
*x = 4;
return x;
}
Run Code Online (Sandbox Code Playgroud)
我使用gcc编译bc到b.so:$ gcc -o b.so -shared -fpic
AC:
#include <stdio.h>
#include <dlfcn.h>
int main() {
void *hdl;
hdl = dlopen("./b.so", RTLD_LAZY);
int *((*fn)(void));
int *x;
x = (*fn)();
fn = dlsym(hdl, "foo");
printf("%d", *x);
}
Run Code Online (Sandbox Code Playgroud)
我用gcc编译ac:
$ gcc -fpic -ldl ac
现在当我运行它:
$ ./a.out分段错误
我哪里错了?这在bc中的函数不返回指针时有效.
而且,我尝试使用dlerror()检查错误,但它没有报告.
我觉得我已经做了很多次这种情况,而且它通常都有效,所以我显然错过了一些东西.
这是我的服务器端ASP.NET按钮:
<asp:Button ID="btnFoo" runat="server" Text="Foo" CssClass="button foo" OnClientClick="foo_Click();" />
Run Code Online (Sandbox Code Playgroud)
哪个在客户端上呈现为:
<input type="submit" name="reallylongclientid" value="Foo" onclick="foo_Click();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(reallylongclientidandpostbackoptions, false, false))" id="reallylongclientid" class="button foo">
Run Code Online (Sandbox Code Playgroud)
没有惊喜.
这是我的JavaScript函数中的惊喜:
function foo_Click() {
return false;
}
Run Code Online (Sandbox Code Playgroud)
好的,所以还有更多的东西,但我减少它来证明一点.
当我单击该按钮时,它调用客户端函数,并返回false.
但它仍然会回发给服务器,为什么?
我基本上想在点击按钮时这样做:
当然,我可以将其更改为客户端按钮(输入类型="按钮")并在我想要时手动启动回发,但我不应该这样做.或者我应该?
我想创建一个geom_path(),其箭头指向路径中的下一个位置.
我可以毫无问题地获得绘图的路径,例如:
df <- (x=1:12, y=20:31, z=1:12)
p <- ggplot(df, aes(x=x, y=y))
p + geom_point() + geom_path()
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是绘制从路径中的一个元素指向下一个元素的箭头.
如果您可以告诉我如何平滑从路径中的一个元素到下一个元素的线条,则需要额外的标记.
Windows服务在调试版本和发布版本之间获得多少性能提升(如果有的话)以及为什么?
如何从孩子的基类访问装饰器?
我(错误地)假设了ffg.会工作:
class baseclass(object):
def __init__(self):
print 'hey this is the base'
def _deco(func):
def wrapper(*arg):
res = func(*arg)
print 'I\'m a decorator. This is fabulous, but that colour, so last season sweetiedarling'
return res
return wrapper
@_deco
def basefunc(self):
print 'I\'m a base function'
Run Code Online (Sandbox Code Playgroud)
这个类工作正常,但后来我创建了一个继承自这个的子类:
class otherclass(baseclass):
def __init__(self):
super(otherclass, self).__init__()
print 'other class'
@_deco
def meh(self):
print 'I\'m a function'
Run Code Online (Sandbox Code Playgroud)
这甚至不能正确导入,更不用说运行了.@_deco未定义.尝试baseclass._deco抛出一个未绑定的方法_deco()错误,这并不奇怪.
任何想法如何做到这一点,我真的想把装饰器封装在课堂上,但我没有嫁给这个想法,我需要在基础和子类中调用它.
我是GVim的新手,我在Ubuntu 10.4操作系统上使用GVim.我现在正在学习Ruby,我想为它添加Intellisense.我的问题是:是否可以为GVIM添加一组API,不仅适用于Ruby,还可能适用于Perl,Java,C++等?谢谢,
对于没有经验的人来说,Brainfuck是一种图灵完备的语言,只有8个命令,所有这些命令在C中都有文字等价物:
bf c
----------------------
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr=getchar();
[ while (*ptr) {
] }
Run Code Online (Sandbox Code Playgroud)
在任何带有软件包管理器的Linux发行版上,你应该能够找到并安装这个软件包beef,一个Brainfuck解释器,这样你就可以在家里玩了.
如上所示,Brainfuck只有一个控制结构,[…]它转换为C:
while (*ptr) { … }
Run Code Online (Sandbox Code Playgroud)
这让您可以IF VAR = 0 THEN GOTO 10从BASIC获得所有控制权.以下将调用,getchar()直到它返回0:
, # *ptr = getchar();
[ # while (*ptr) {
>, # *(++ptr) = getchar();
] # }
Run Code Online (Sandbox Code Playgroud)
但是,如果我只想读取换行符\n?在让我的大脑围绕如何适应这种简单的工作方式遇到一些困难之后if我想出了以下内容:
, # *ptr = getchar(); /* store …Run Code Online (Sandbox Code Playgroud)