最近我接受了采访,他们在那里问我一个" 搜索 "问题.
问题是:
假设有的(正)的整数,其中的每个元素是一个数组
+1或-1比其相邻的元件.例:
Run Code Online (Sandbox Code Playgroud)array = [4,5,6,5,4,3,2,3,4,5,6,7,8];现在搜索
7并返回其位置.
我给出了这个答案:
将值存储在临时数组中,对它们进行排序,然后应用二进制搜索.
如果找到该元素,则返回其在临时数组中的位置.
(如果数字出现两次,则返回第一次出现)
但是,他们似乎并不满意这个答案.
什么是正确的答案?
通过完整类型的变量,我指的是您在即时窗口中获得的信息类型:
我想使用VBA动态确定类型信息.该函数TypeName()不能做我想要的,因为它返回变量的子类型,并且不区分例如保持范围的变量变量,保持范围的对象变量和保持范围的范围变量.
作为初步步骤,我编写了一个函数,用于检测变量是否传递给它.它的工作原理是利用传递引用语义.代码使用其参数执行的操作只能通过变量完成,因此如果传递的变量实际上不是变量,则会触发错误:
Function IsVariant(var As Variant) As Boolean
Dim temp As Variant
Dim isVar As Boolean
If IsObject(var) Then
Set temp = var
Else
temp = var
End If
On Error Resume Next
Set var = New Collection
var = "test"
If Err.Number > 0 Then
isVar = False
Else
isVar = True
End If
On Error GoTo 0
If IsObject(temp) Then
Set var = temp
Else
var = temp
End If
IsVariant …Run Code Online (Sandbox Code Playgroud) 我回答了这个问题,显然是对OP的满意,但仍然发现他们的问题令人费解.他们的问题涉及一个表达式,其中工作簿对象与字符串连接,触发Run-time Error '438': Object doesn't support this property or method.只需键入即可重现此类错误
?"Hello, " & ThisWorkbook
Run Code Online (Sandbox Code Playgroud)
在立即窗口中.
我的问题是-为什么会发生这种提高是错误,而不是错误13 -类型不匹配?一个合理的猜测是VBA尝试查找工作簿对象的默认属性,并且默认属性不存在.但是,如果是这样,我希望它是Microsoft的Visual Basic 6.0错误代码列表中的以下错误:Automation object doesn't have a default value (Error 443).
它主要是学术兴趣,但如果将没有默认属性的对象与字符串连接的结果总是错误438,这是触发错误438的唯一方法,而不是在将字符串与对象连接时可能出现的另一个错误,然后可能会使用以下代码:
Function HasDefault(O As Variant) As Boolean
Dim i As Long
If Not IsObject(O) Then Exit Function
On Error Resume Next
i = Len("Hello, " & O)
If Err.Number = 438 Then
HasDefault = False
Else
HasDefault = True
End If
End Function
Run Code Online (Sandbox Code Playgroud)
我已经在各种对象上对此进行了测试,对于那些我在其上测试过_Default …
一个常见的习语(可以在书籍,教程和许多Stack Overflow问题中找到)df用作数据帧的一种丢弃标识符.我已经完成了数百次看似没有任何不良影响,但后来遇到了以下代码:
library(tree)
df <- droplevels(iris[1:100,c(1,2,5)])
tr <- tree(Species ~ ., data = df)
plot(tr)
text(tr)
partition.tree(tr)
Run Code Online (Sandbox Code Playgroud)
这给出以下错误消息:
Error in as.data.frame.default(data, optional = TRUE) :
cannot coerce class ""function"" to a data.frame
Run Code Online (Sandbox Code Playgroud)
我通过反复试验发现,如果我简单地替换df上面df2的代码,代码就会按预期工作.确实,这是df F分布的密度函数的名称,但这似乎与此无关.这是一个错误的tree包,还是一个重要的警示故事,其道德是我应该避免使用df作为数据帧的名称,因为这样做引入了名称冲突?
我正在尝试编写C代码,它将打印出前100万个Fibonacci数字.
实际问题是我想得到10位F(1,000,000)
我理解序列是如何工作的,以及如何编写代码来实现它,但是F(1,000,000)非常大,我正在努力寻找一种方法来表示它.
这是我正在使用的代码:
#include<stdio.h>
int main()
{
unsigned long long n, first = 0, second = 1, next, c;
printf("Enter the number of terms\n");
scanf("%d",&n);
printf("First %d terms of Fibonacci series are :-\n",n);
for ( c = 0 ; c < n ; c++ )
{
if ( c <= 1 )
next = c;
else
{
next = first + second;
first = second;
second = next;
}
printf("%d\n",next);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在long …
似乎没有办法将输入表(从 html/xls/etc 文件)获取到 DataFrame 对象,因为它是 1 对 1 的,而没有 Pandas 内部应用的任何字段转换。
假设以下 html 表以 .xls 文件的扩展名保存,我们如何使用 DataFrame 对象在 Python 内存中获得该表的相同表示?
“test_file.xls”的内容:
<body>
<table>
<thead>
<tr>
<th class="tabHead" x:autofilter="all">Number</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tDetail">1.320,00</td>
</tr>
<tr>
<td class="tDetail">600,00</td>
</tr>
</tbody>
</table>
</body>
Run Code Online (Sandbox Code Playgroud)
(1)直接读取文件
处理代码:
import pandas
df = pandas.read_html('test_file.xls')
print(df[0])
print(df[0].dtypes)
Run Code Online (Sandbox Code Playgroud)
输出:
Number
0 1.32
1 60000.00
Number float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,这些数字是通过一些预定义的逻辑转换为 float64 的。我认为这个逻辑包括语言环境设置,也许熊猫内部的一些规则等。直接指定字符串转换器不允许获取初始值。
(2) 应用str函数作为每个维度的转换器
处理代码:
converters = {column_name: str for column_name in df[0].dtypes.index}
df = pandas.read_html(f, converters = …Run Code Online (Sandbox Code Playgroud) 以下是Excel中设置的示例,
[column1] [column2]
A1 =C3-C5
A2 =((C4-C6)/C6)
A3 =C4*C3
A4 =C6/C7
A5 =C6*C4*C3
Run Code Online (Sandbox Code Playgroud)
我需要在公式中提取使用过的引用
例如,
for "A1", I simply need to get the C3 and C5.
for A2, I need to get the C4 and C6.
Run Code Online (Sandbox Code Playgroud) 当我看到 SML/NJ 最近在110.79 版本中进行了一些重大更改时,我感到惊喜,这是朝着称为 Successor ML 的方向发展的一部分。这似乎是 SML/NJ 和 MLton 之间的合作项目,预示着 SML 的未来。
但是,当我尝试使用一些新功能时,我似乎遇到了一个奇怪的错误(在 64 位 Windows 7 上)。为了尝试一下,我在一个名为的文件中写了以下内容sml_successor_test.sml:
Control.succML := true;
val n = 123_456;
print (Int.toString n);
Run Code Online (Sandbox Code Playgroud)
当我尝试使用use "C:\Programs\sml_successor_test.sml";编译器将它加载到 REPL中时,在文件的第二行(它使用应该启用的新型数字文字)。但是——当我立即运行与use以前完全相同的命令时——它起作用了。
如果首先Control.succML := true;在 REPL 中使用,然后用于use加载文件(从文件中删除该行后),它确实可以工作。另一方面,如果我只是启动 SML,启用succML,然后val n = 123_456;直接在 REPL 中进行分配,它第一次失败但随后工作。
总而言之——在Control.succML := true评估和生效之间似乎存在一个奇怪的滞后,这种滞后发生在某些情况下而不是其他情况下。知道这背后是什么以及任何解决方法吗?
这是我尝试使用Pygame模块对Python 3.5中的Mandelbrot集进行编程.
import math, pygame
pygame.init()
def mapMandelbrot(c,r,dim,xRange,yRange):
x = (dim-c)/dim
y = (dim-r)/dim
#print([x,y])
x = x*(xRange[1]-xRange[0])
y = y*(yRange[1]-yRange[0])
x = xRange[0] + x
y = yRange[0] + y
return [x,y]
def checkDrawBox(surface):
for i in pygame.event.get():
if i.type == pygame.QUIT:
pygame.quit()
elif i.type == pygame.MOUSEBUTTONDOWN:
startXY = pygame.mouse.get_pos()
boxExit = False
while boxExit == False:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONUP:
boxExit = True
if boxExit == True:
return [startXY,pygame.mouse.get_pos()]
pygame.draw.rect(surface,[255,0,0],[startXY,[pygame.mouse.get_pos()[0]-startXY[0],pygame.mouse.get_pos()[1]-startXY[1]]],1)
pygame.display.update()
def setup():
dimensions …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用R中spread()的tidyr包中的函数来处理具有大约300万个观测值的数据帧.它返回以下错误消息:
Error : C stack usage 26498106 is too close to the limit
Run Code Online (Sandbox Code Playgroud)
当我跑步时Cstack_info(),它告诉我
> Cstack_info()
size current direction eval_depth
7969177 15272 1 2
Run Code Online (Sandbox Code Playgroud)
根据这个问题的答案中的建议,我尝试通过ulimit -s 32768在终端窗口中运行并从终端打开Rstudio来增加堆栈大小.但是,当我尝试这个时,输出Cstack_info()没有改变,当我运行我的代码时,我收到相同的错误消息.继同一个早期问题的另一个答案后,我尝试更新R和Rstudio,也无济于事.我在这做错了什么?
我在mac os x 10.12.2上运行R 3.3,内存为16 GB.