约德尔测试

题目描述
									

兰博和提莫闲聊之后,回归到了他们的正题,约德尔人的未来。

说起约德尔人的未来,黑默丁格曾经提出了一个约德尔测试,将约德尔人的历史的每个阶段都用一个字符表达出来。(包括可写字符,不包括空格。)。然后将这个字符串转化为一个01串。转化规则是如果这个字符如果是字母或者数字,这个字符变为1,其它变为0。然后将这个01串和黑默丁格观测星空得到的01串做比较,得到一个相似率。相似率越高,则约德尔的未来越光明。

请问:相似率为多少?

输入

每组输入数据为两行,第一行为有关约德尔人历史的字符串,第二行是黑默丁格观测星空得到的字符串。

(两个字符串的长度相等,字符串长度不小于1且不超过1000。)

样例输入

@!%12dgsa

010111100

输出

输出一行,在这一行输出相似率。用百分数表示。(相似率为相同字符的个数/总个数,精确到百分号小数点后两位。printf("%%");输出一个%。)

样例输出

66.67%

时间限制 C/C++语言:1000MS 其它语言:3000MS
内存限制 C/C++语言:65536KB 其它语言:589824KB
第一个方法:
#coding=utf-8

import sys
from decimal import Decimal

s=[]
while True:
    line=sys.stdin.readline().strip()
    if not line:
        break
    s.append(line)

target_char=list(s[0])
estimate_int=list(s[1])
trans_target=[]
for i in target_char:
    if i.isdigit() or i.isalpha():
        trans_target.append(1)
    else:
        trans_target.append(0)
sim_num=0
for x,y in zip(trans_target,estimate_int):
    if x==int(y):
        sim_num+=1
# print "转换的01数字"
# print trans_target
# print "预测的01数字"
# print [int(x) for x in estimate_int]
# print "similarity"
result=float(sim_num*100)/len(trans_target)

result=Decimal(str(result)).quantize(Decimal('0.00'))
# print result
print str(result)+"%"
# print str(round(float(sim_num)/len(trans_target),4)*100)+"%"
# except :
# 	pass
	# pass
	# for value in line.split():
	# 	print value

# print 

第二个方法:
aa=raw_input('')
bb=raw_input('')
# print aa
trans_aa=[]
for i in aa:
    trans_aa.append(1 if i.isalpha() or i.isdigit() else 0 )
sim_num=0
for x,y in zip(trans_aa,bb):
    if x==int(y):
        sim_num+=1

print str(('%.2f') % (float(sim_num)*100/len(trans_aa)))+"%"


语言:Python2.7

问题点:1.保留两位小数,用到demical 或者('%.2f') https://www.cnblogs.com/Raymon-Geng/p/5784290.html

             2.怎么读取两行数据,如果使用sys.stdin.readline,因为默认会带换行符,所以要strip('\n')进行截取;或者直接用strip('');raw_input也是可以的。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值