作者Evenni (乐而不淫哀而不伤)
看板Perl
标题Re: [问题] 问题请教
时间Wed Jan 16 15:31:36 2008
use Cwd;
$dir=cwd;
open inf, "<$dir/RT2.txt";
open out, ">$dir/RT2_out.txt";
%h = ( W=> 11.0, F=> 10.5, L=> 9.6, I=> 8.4, M=> 5.8,
V=> 5.0, Y=> 4.0, A=> 0.8, T=> 0.4, P=> 0.2,
E=> 0.0, D=> -0.5, C=> -0.8, S=>-0.8, Q=> -0.9,
G=>-0.9, N=>-1.2, R=>-1.3, H=>-1.3, K=>-1.9 );
while(<inf>){
chomp;
/\[\d+\](.*)\[\d+\]/; $_=$1; #case1:如果你是要[134]WXYZ[123]中的文字
s/\W+|\d+/; #case2:如果你是要整行的文字部分
$sum+=$h{$_} for split//;
print out "$_ $sum\n";
$sum=0;
}
close inf;
close out;
※ 引述《muchmoa (...)》之铭言:
: 这次跟上次的很类似,
: 这次可以正确的抓出$seq,但是算出来的值却不对,
: 甚至还出现8.199999这种类似除不尽的值,
: 是在第一次split时出了问题吗?
: 麻烦大家在帮我看一下吧,谢谢
: RT2连结http://www.badongo.com/file/7330381
: use Cwd;
: $dir=cwd;
: open inf, "<$dir/RT2.txt";
: open out, ">$dir/RT2_out.txt";
: %h = ( W=> 11.0, F=> 10.5, L=> 9.6, I=> 8.4, M=> 5.8,
: V=> 5.0, Y=> 4.0, A=> 0.8, T=> 0.4, P=> 0.2,
: E=> 0.0, D=> -0.5, C=> -0.8, S=>-0.8, Q=> -0.9,
: G=>-0.9, N=>-1.2, R=>-1.3, H=>-1.3, K=>-1.9 );
: while(<inf>){
: chomp;
: @A=($a, $b, $seq)=split/\]|\[/;
: foreach $seq(@A){
: $sum+=$h{$_} for split//, $seq;
: }
: print out "$seq $sum\n";
: $sum=0;
: }
: close inf;
: close out;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.16.210