String 在字符串中获取最大和最小的单词
当我运行这些代码时,输出是(“,”),但是它应该是(“我”,“爱”)!!!,而且没有错误。我该怎么做才能修复它 sen=“我喜欢狗”String 在字符串中获取最大和最小的单词,string,julia,String,Julia,当我运行这些代码时,输出是(“,”),但是它应该是(“我”,“爱”)!!!,而且没有错误。我该怎么做才能修复它 sen=“我喜欢狗” 函数最长单词(sen) x=“” maxw=“” minw=“” minl=1 最大长度=长度(sen) p=0 对于i=1:长度(sen) if(sen[i]!=“”) x=[x[1]…,sen[i]…] 其他的 p=长度(x) 如果pmaxl maxl=p maxw=x 终止 x=“” 终止 终止 返回minw,maxw 终止 您的代码思想不错,但也有一些错误
函数最长单词(sen)
x=“”
maxw=“”
minw=“”
minl=1
最大长度=长度(sen)
p=0
对于i=1:长度(sen)
if(sen[i]!=“”)
x=[x[1]…,sen[i]…]
其他的
p=长度(x)
如果pmaxl
maxl=p
maxw=x
终止
x=“”
终止
终止
返回minw,maxw
终止
您的代码思想不错,但也有一些错误。
您可以通过调试一点来了解出了什么问题。最简单的方法是使用@show
,它打印出变量的值。当代码不能像您期望的那样工作时,这是第一件要做的事情——只需通过打印所有内容来询问它在做什么
如果你把
if(sen[i]!=" ")
x=[x[1]...,sen[i]...]
@show x
并使用
Longest_word("I love dogs")
您将看到它没有做您希望它做的事情,这(我相信)是将第I个字母添加到字符串x中
请注意,像sen[i]一样访问的第i个字母是字符而不是字符串。
您可以尝试使用将其转换为字符串
string(sen[i])
但在Julia的最新版本中,这提供了一个Unicode字符串,而不是ASCII字符串
事实上,最好不要使用
for i in 1:length(sen)
但是迭代字符串中的字符(如果字符串是Unicode,这也会起作用):
然后您可以将字符串x
初始化为
x = UTF8String("")
并用
x = string(x, c)
尝试一下这些可能性,看看它们是否有帮助
另外,maxl和minl最初的定义是错误的——它们应该是相反的。此外,变量的名称对于理解应该发生什么也没有多大帮助。字符串应初始化为空字符串,“
,而不是带有空格的字符串,”
@daycaster是正确的,似乎有一个min1
应该是minl
然而,事实上有一种更简单的方法来解决这个问题,即使用split
函数,将字符串分割成单词
如果您还有问题,请告诉我们
以下是一个符合您想法的工作版本:
function longest_word(sentence)
x = UTF8String("")
maxw = ""
minw = ""
maxl = 0 # counterintuitive! start the "wrong" way round
minl = length(sentence)
for i in 1:length(sentence) # or: for c in sentence
if sentence[i] != ' ' # or: if c != ' '
x = string(x, sentence[i]) # or: x = string(x, c)
else
p = length(x)
if p < minl
minl = p
minw = x
end
if p > maxl
maxl = p
maxw = x
end
x = ""
end
end
return minw, maxw
end
函数最长的单词(句子)
x=UTF8String(“”)
maxw=“”
minw=“”
maxl=0#违反直觉!从“错误”的方向开始
minl=长度(句子)
对于1中的i:长度(句子)#或:对于句子中的c
如果句子[i]!=''或者:如果c!=''
x=字符串(x,句子[i])#或:x=字符串(x,c)
其他的
p=长度(x)
如果pmaxl
maxl=p
maxw=x
终止
x=“”
终止
终止
返回minw,maxw
终止
请注意,如果最长的单词位于字符串末尾,则此函数不起作用。对于这种情况,您如何修改它?正如@David提到的,使用
split
功能可以实现另一种可能更好的解决方案:
function longest_word(sentence)
sp=split(sentence)
len=map(length,sp)
return (sp[indmin(len)],sp[indmax(len)])
end
你的问题是什么?对吗?我想你可以做得更好…嗨,塔格里德。我们很想帮助你,但你需要明确你的问题:你想做什么?你期望的行为是什么?什么不起作用?这样我们就能更好地帮助你。请看一些其他问题,看看它们是如何写的。干得好!你也可以鼓励海报观看一些你的酷视频…:)
function longest_word(sentence)
x = UTF8String("")
maxw = ""
minw = ""
maxl = 0 # counterintuitive! start the "wrong" way round
minl = length(sentence)
for i in 1:length(sentence) # or: for c in sentence
if sentence[i] != ' ' # or: if c != ' '
x = string(x, sentence[i]) # or: x = string(x, c)
else
p = length(x)
if p < minl
minl = p
minw = x
end
if p > maxl
maxl = p
maxw = x
end
x = ""
end
end
return minw, maxw
end
function longest_word(sentence)
sp=split(sentence)
len=map(length,sp)
return (sp[indmin(len)],sp[indmax(len)])
end