每日练习(python3) 2

牛客题目:

        游游希望你构造一个长度为n的、仅由'y'、'o'、'u'三种字符组成的字符串,需要保证该字符串包含恰好k个"you"子串。你能帮帮她吗? 如果无法构造,请输出-1。 否则输出一个长度为n的合法的字符串。

解析题意:

        字符串构造问题。

代码:

#方法一
n,k=map(int,input().split())
ans=''
if n<3*k:
    print(-1)
else:
    ans+='you'*k
    ans+='u'*(n-3*k)
print(ans)
#方法二

n,k=map(int,input().split())
if n<k*3:
    print(-1)
else:
    print("you"*k+"u"*(n-k*3))

代码分析:

  1. 从用户输入中读取两个整数 n 和 k,使用 map(int, input().split()) 来完成这一任务。其中,input() 函数获取用户输入的字符串,split() 函数将字符串按空格分割为多个部分,map(int, ...) 将分割后的每个部分转换为整数。
  2. 判断 n 是否小于 3*k。如果是,则输出 -1;否则,继续下一步操作。
  3. 接收最后结果

知识点:

  1. map函数的用法如下:
map(function, iterable, ...)
  • function:这是一个将被应用到每个可迭代对象的元素上的函数。在这个代码中,这个函数是int,表示将每个元素转换为整数。
  • iterable:这是一个可以迭代的对象,比如列表或元组。在这个代码中,这个对象是用户输入的字符串,该字符串被split()方法分割成一个单词列表。

举例:

numbers = [1,2,3,4,]
def doubler(n):
    return n*2

result = map(doubler,numbers)
print(result)
print(list(result))

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值