洛谷P1098——Python做法,字符串分割,大小写转换,ascall码,倒序处理,列表转化字符串,字符串拼接

题目:

洛谷P1098

NOIP 2007 提高第二题

涉及到的一些字符串知识点:

字符串分割:split()

ascall码字符转换:ord()  chr()

大小写转换:lower()  upper()

倒序处理: 步长-1 : [::-1]

列表转化为字符串:"".join(list) 即列表各元素以""为间隔拼接

p1, p2, p3 = [int(x) for x in input().split()]  # 输入str->int
string = input().split("-")    # 以-为分隔符,分割,注意:"---" "-123"这种->"'','',''", "'','123'"

for i in range(len(string)-1) :
	if string[i] == "" or string[i+1] == "":   # 若该-左或右无字母或数字
		filler = "-"
	else:
		a = string[i][-1]   # 左边字符串最后一个字符 和 右边第一个
		b = string[i+1][0]
		if ord(a)+1 < ord(b) :  # ascall是否符合
			o1 = ord(a)
			o2 = ord(b)
			filler = ""
			if (97<=o1<=122 and 97<=o2<=122) or (48<=o1<=57 and 48<=o2<=57):   # 是否左右同时为小写字母或数字
				if p1 == 1:
					for j in range(o1+1, o2):
						filler += chr(j).lower()*p2   # 字符串拼接、大小写转换
				elif p1 == 2:
					for j in range(o1+1, o2):
						filler += chr(j).upper()*p2
				elif p1 == 3:
					filler += (o2-o1-1) * p2 * "*"

				if p3 == 2:
					filler = filler[::-1]   # 步长为-1,即倒序
			else:
				filler = "-"
		elif ord(a)+1 == ord(b):
			filler = ""
		else:
			filler = "-"
	string[i] += filler

ans = "".join(string)    # 列表->字符串
print(ans)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值