小编Unk*_*own的帖子

Bash basename语法

我正在尝试编写一个带有参数基本名称的脚本,然后检查该参数中是否有扩展名.如果有,则打印扩展名.

这是我的代码:

file=basename $1
ext=${file%*}
echo ${file#"$stub"}
echo $basename $1
Run Code Online (Sandbox Code Playgroud)

我正在回显最终的$ basename $ 1以检查basename的输出是什么.

一些测试显示:

testfile.sh one.two
./testfile: line 2: one.two: command not found
one.two

testfile.sh ../tester
./testfile: line 2: ../tester: No such file or directory
../tester
Run Code Online (Sandbox Code Playgroud)

所以$ basename $ 1都不起作用.我知道这是一个语法错误,所以有人可以解释我做错了什么吗?

编辑:

我现在解决了我的问题:

file=$(basename "$1" )
stub=${file%.*}
echo ${file#"$stub"}
Run Code Online (Sandbox Code Playgroud)

这减少了我对基名的论证,谢谢大家.

bash

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

递归函数和列表追加/扩展

这是一个非常简单的代码,代替了一个更大的问题,但我希望我可以解决它的问题.我将从第一个问题开始.

def testrecurse(z,target):
    x=[]
    if z<target:
        z*=2
        x.append(z)
        x.extend(testrecurse(z,target))
    return x
Run Code Online (Sandbox Code Playgroud)

这是一个测试功能,可以帮助我的大脑进行递归.它需要一个数字,然后显示两个乘法的所有乘法,直到达到目标数.所以,如果我输入:

testrecurse(1,1000)
Run Code Online (Sandbox Code Playgroud)

我收到:

[2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
Run Code Online (Sandbox Code Playgroud)

太棒了!输出看起来很干净.但这是我的问题,我很难在我的输出中追加或添加第一个值.这就是我想要输出的样子.

[1,2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
Run Code Online (Sandbox Code Playgroud)

我试过改变

x=[] to x=[z]
Run Code Online (Sandbox Code Playgroud)

但后来我收到了:

[1, 2, 2, 4, 4, 8, 8, 16, 16, 32, 32, 64, 64, 128, 128, 256, 256, 512, 512, 1024, 1024]
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,我是新来的递归,它让我头疼.

python recursion function list extend

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

使用 grep 检测重复字符

我正在尝试编写一个 grep (或egrep)命令,该命令将查找并打印“words.txt”中连续三次包含相同小写字母的任何行。该字母的三次出现可以连续出现(如“mooo”),也可以由一个或多个空格分隔(如“xx x”),但不由任何其他字符分隔。

Words.txt 包含:

The monster said "grrr"!
He lived in an igloo only in the winter.
He looked like an aardvark.
Run Code Online (Sandbox Code Playgroud)

我认为该命令应该如下所示:

grep -E '\b[^ ]*[[:alpha:]]{3}[^ ]*\b' 'words.txt'
Run Code Online (Sandbox Code Playgroud)

虽然我知道这是错误的,但我对语法了解不够,无法弄清楚。使用 grep,有人可以帮助我吗?

linux bash grep

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

C中的运算符:不大于等于.

只是一个快速的问题:

我试图测试变量是否不大于或等于另一个变量.

我把它编码为:

if (f!>=i){
print ("True");}
Run Code Online (Sandbox Code Playgroud)

但是我的c编译器无法识别它.我在网上找不到,有可能吗?

c operators

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

字母和递归

我差不多完成了我的程序,但我犯了一个微妙的错误.我的程序应该接受一个字,并且通过一次更改一个字母,最终应该以指定的步数达到目标字.我一直在尝试寻找相似之处,例如:如果找到了这个词,并且目标词丢失了,这就是我的程序将以4个步骤输出的方式:

['find','fine','line','lone','lose]
Run Code Online (Sandbox Code Playgroud)

这实际上是我想要的输出.但是如果你考虑一些更强硬的单词,比如Java和work,那么输出应该是6个步骤.

['java', 'lava', 'lave', 'wave', 'wove', 'wore', 'work']
Run Code Online (Sandbox Code Playgroud)

所以我的错误是我没有意识到你可以通过使用目标词或原始词中不存在的字母来达到目标​​词.

这是我的原始代码:

import string
def changeling(word,target,steps):
    alpha=string.ascii_lowercase
    x=word##word and target has been changed to keep the coding readable.
    z=target
    if steps==0 and word!= target:##if the target can't be reached, return nothing.
        return []
    if x==z:##if target has been reached.
        return [z]


    if len(word)!=len(target):##if the word and target word aren't the same length print error.
        print "error"
        return None
    i=1
    if lookup
    if lookup(z[0]+x[1:]) is True and z[0]+x[1:]!=x :##check every letter …
Run Code Online (Sandbox Code Playgroud)

python recursion list append alphabet

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

在Python中搜索二叉搜索树的两边

我有一个Python BST,每个节点保存3条数据。这些数据是 ID、标记和名称。

我想做的是搜索名称,但节点是基于 ID 的,这就是我的搜索方式。该函数应该输出特定名称的 ID。

def findName(tree,name):
    if tree==None:
        return None
    elif tree['name']==name:
        return tree['id']
    if tree['left']!=None:
        return findName(tree['left'],name)
    if tree['right']!=None:
        return findName(tree['right'],name) 
Run Code Online (Sandbox Code Playgroud)

不幸的是,我只会搜索树的左侧,而不是右侧,如果我先搜索右侧,则相反。

我该如何搜索双方呢?

python binary-search-tree

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

无误的负整数,cos,罪.

在java中,我试图对带有cos和sin的数字进行操作,但我仍然得到负面变量,有人可以解释为什么吗?

这是我的代码:

double velocity_x=22*Math.sin(10);

double velocity_y=22*Math.cos(10);
Run Code Online (Sandbox Code Playgroud)

它们分别返回velocity_x = -11.968464439566135

和velocity_y = -18.459573639681953

我究竟做错了什么?

java trigonometry

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

查找具有超过特定文件大小的特定扩展名的文件

我在bash中使用find命令时遇到问题.我正在尝试查找以.c结尾且文件大小超过2000字节的文件.我以为会是:

find $HOME -type f -size +2000c .c$
Run Code Online (Sandbox Code Playgroud)

但显然这是不正确的.

我究竟做错了什么?

linux bash find

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

C和循环中的数组

int main()
{
int marks[3];
int counter=0;
for (i in marks){
     printf(marks[i];
         counter=counter+1;
}
return 0

}
Run Code Online (Sandbox Code Playgroud)

虽然我认识Python,但对C来说还是新手.我不知道语法,但我正在尝试创建和数组,然后打印数组中的每个变量.我究竟做错了什么?

c arrays

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

Looping through an Array in C with no output

Here is my code:

int main()
{
int tiles[9];
int counter=0;
int i=1;
while (counter<8)
{
    tiles[counter]=i;
    counter=counter+1;
    i=i+1;
    }
int running_total=0;
int current_number;
printf(tiles);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

But I get no output, what is my problem? I'm new to C so I appreciate any comments/criticism.

Edit: I do get an output, but it's a smily face...

c arrays loops

0
推荐指数
1
解决办法
60
查看次数