博客
关于我
Py3 字符串水题
阅读量:367 次
发布时间:2019-03-04

本文共 2735 字,大约阅读时间需要 9 分钟。

Powered by:AB_IN 局外人

题目描述

勇士菜哭武获得了一把新的武器,武器有特殊的伤害计算方式。武器的伤害计算方式由若干个部分的和组成,用+号连接。每一部分可以是一个整数a,或者是一个公式ndx。其中a表示固定伤害a点;ndx表示掷n个x面骰子,伤害是所有骰子点数的和。总伤害是每一部分伤害的和。

比如2d6+1d70+3,表示掷两个6面骰子和一个70面骰子(不一定实际存在70面骰子,可以理解成1到70当中随机选择一个整数),再加上固定伤害3点。

他正准备挑选一把好武器,需要计算新武器的伤害期望值,想让你帮他计算一下。

输入描述

输入一个字符串,表示伤害计算公式。字符串长度不超过5000,对于每一个部分,1≤a, n, x≤1000。a,n,x都是整数。

输出描述

输出一个数,表示伤害的期望值。如果不是整数,小数点后位数保留最少,即最终结果只有可能是整数或者小数点后是.5的形式,如果不是整数,那么保留一位小数。

这里提供两个写法

while True:    try:        s=input().split("+")        ans=0        for i in s:            if i.find('d')!=-1:#这个就是判断i这个字符串里有没有d,有就返回1,没有返回-1                n,x=i.split("d")#n,x根据d分开                ans+=(int)(n)*(int(x)+1)*0.5#求期望值,应该是从1一直加到x,再除以x,可以化简            else:                ans+=int(i)        if ans%1==0:#判断是否为整数            print(int(ans))        else:            print(int(ans)+0.5)#根据题目要求加0.5    except:        break
while True:    try:        s=input().split("+")        ans=0        for i in range(len(s)):            if 'd' in s[i]:#从前往后判断是否‘d’在字符串里                n,x=s[i].split("d")                ans+=(int)(n)*(int(x)+1)*0.5            else:                ans+=int(s[i])        if ans*10%10==0:            print(int(ans))        else:            print("%.1f"%ans)#print(f'{ans:.1f}')    except:        break

while True:    try:        n=int(input())        if n==0:            break        tmp=input().split()        lst=["".join(sorted(list(i))) for i in tmp]        for i in lst:            if lst.count(i)>1:                while lst.count(i)>0:                    tmp.remove(tmp[lst.index(i)]);lst.remove(i)        tmp.sort()        if len(tmp)==0:            print("None",end="")        else:                for i in tmp:                print(i,end=" ")        print()    except:        break

记几个点:

1.sorted(list(i))这儿,返回排好的i的列表。如果用list(i).sort()没有返回值。

2. lst=['1','2','1','1'] "".join(lst)将列表的字符连接到一起成字符串'1211'。如果用str(lst)的话,返回的是

"['1','2','1','1']"
(如果lst=[1,2,1,1]时,还得加上一句lst=[str(i) for i in lst]lst=list(map(str,lst)),一个循环,一个映射。)

3.下标问题。

<1>如果一个循环要用到它的下标

for k,i in enumerate(lst):

此时k为下标,i为数字。

<2>如果单纯就是想要下标

k=lst.index(i)

此时k为下标,i为数字。

4.删相同数时

<1>可以写个while循环,remove直到它的count=0
<2>大名鼎鼎的filter
比如:要在列表里把1删了 lst=[1,2,1,1]

lst=[1,2,1,1]tmp=list(filter(lambda x: x!=1,lst))print(tmp)#[2]

所以!!!

更短的代码!

while True:    try:        n=int(input())        if n==0:            break        tmp=input().split()        lst=["".join(sorted(list(i))) for i in tmp]        tmp1=list(filter(lambda x: lst.count("".join(sorted(list(x))))==1 ,tmp))        tmp1.sort()        if len(tmp1)==0:            print("None",end="")        else:                for i in tmp1:                print(i,end=" ")        print()    except:        break

即从tmp里出来个原数 ,筛选出 lst里 (经过sort过的) (在lst里只有一次出现的)数。

完结。

转载地址:http://pryg.baihongyu.com/

你可能感兴趣的文章
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>