Python个人题解

嘛 拿了周赛第一 用python写的 所以来补一份python的题解

A题

原题链接:https://ac.nowcoder.com/acm/contest/119365/A

本题的题目非常友好,将判断逻辑写的很清楚

整题使用if-elif-else结构完成。

代码如下:

n = int(input())
'''
首先使用input获取输入的数据
用输入的数据定义变量n(也就是要判断的年数)
这里可以拆成两行:
n = input()
n = int(n)
'''
if n % 400 == 0:
    print("yes")
elif n % 4 == 0 and n % 100 != 0:
    print("yes")
else:
    print("no")  #这一段代码完全是翻译了题目描述,将是/不是闰年与输出yes或者no等价             

B题

原题链接:https://ac.nowcoder.com/acm/contest/119365/B

本题使用python的解法非常简单:

print("     **")
print("     **")
print("************")
print("************")
print("    *  *")
print("    *  *")

如果硬要说难点的话 大概是认清楚这个符号是* 以及数清楚空格的数量。

C题

原题链接:https://ac.nowcoder.com/acm/contest/119365/C

这题是签到题了。

a = int(input()) #邪修可以不写int(),反正没做运算orz
print(a)

不过多解释啦,考验最基本的输入输出的运用。

D题

原题链接:https://ac.nowcoder.com/acm/contest/119365/D

同样是签到题。

考点硬要说的话是.split()的运用 (如何分割同一行内的输入)

还是直接贴出来代码啦

a,b = map(int,input().split())
'''
这里map的作用是对a和b一起处理,如果不太能理解的可以将第一行换为以下三行:
a,b = input().split()
a = int(a)
b = int(b)
'''
print(a+b) #这里也可以定义其他变量为a+b,输出这个变量,随意就好

E题

原题链接:https://ac.nowcoder.com/acm/contest/119365/E

大概是重头戏了吧!

首先给不太熟悉代码的同学提供一个邪修的解决办法:

a = int(input())  #!!!看这里 注意 一定要加上int() 不然是过不去的!!!
                  #输入里有脏东西orz(比如+5.0)
if a == 1:
    print(1)
elif a == 2:
    print(3)
elif a == 3:
    print(9)
elif a == 4:
    print(33)
elif a == 5:
    print(153)
elif a == 6:
    print(873)
elif a == 7:
    print(5913)
elif a == 8:
    print(46233)
elif a == 9:
    print(409113)
else:
    print(4037913)

这是枚举法 依照数据大小以及计算量来看 枚举法的做法对于本题其实是可以接受的。

接下来大概就是大家都很感兴趣的算法问题了。

先贴代码再解释:

n = int(input())
a = 0
b = 1
for i in range(1,n+1):   #使用for循环进行遍历 从1到n 用n+1的意义是(1,n+1)的区间默认为左闭右开
    b *= i               #这里等价于b = b*i
    a += b               #这里等价于a = a+b
print(a)

是不是看完还一头雾水orz

这里来进行一个细致的讲解

首先理解一下for循环外的部分

a初始是0 是用来记录最终的和的

b初始是1 是逐个计算阶乘的

那么再来看里面

b = b*i 由于处于循环内 i会遍历每一个数 所以可以分别算出所有阶乘

a = a+b 将每一个阶乘都累加到变量a里

最后输出变量a

那么这题就完成啦

F题

原题链接 : https://ac.nowcoder.com/acm/contest/119365/F

主要考验审题和对转译符的运用

先贴代码:

print("printf(\"Hello, world!\\n\");")

具体到本题的话 是在引号和反斜杠前使用转译符

审题清晰的话还是不难的!

那么这期周赛的Python题解就到这里啦

谢谢您愿意看到这里orz

全部评论

相关推荐

昨天 21:38
门头沟学院 Java
个人比较喜欢这种一天面完三面的面试,确实比起别家每面一面然后排序一周要好很多。具体几个体验的点:1.估计是统一的面试,会议室不太好约,面试官都是在工位面的,一面的时候,面试官那边特别嘈杂,很影响回答思路,反馈后,也是辛苦面试官,他每提一个问题就闭麦了。2.本来以为秋招都结束了,10多天没看八股,八股这东西真的就是“唯手熟尔”,一面有些问题回答不全,被面试官评价“基础有待加深”。3.滴滴最喜欢问的问题是“让你从现在的角度看,你过往的实习经历里有哪些做得不好的地方,如果现在让你做,你会怎么做?”,二面和三面都问到了,感觉确实有点偏压力面的意思,然后之前没准备过,二面被问懵了,三面再问就对答如流了。4.滴滴的面试风格和jd很像,时间不长也就30-40分钟,也没有手撕,感觉八股也是问得比较中规中矩,也没有场景题,相对是很友好的。面经如下:一面:实习经历http请求的过程http为啥需要三次握手介绍一下http 2.0,为什么是基于udp的实现介绍一下你了解的不同jdk版本的差异多线程之间怎么共享变量事务注解失效的场景给几个sql语句判断有没有命中索引redis为什么要避免大key二面:介绍一下hashmap说说hashmap的一个线程安全问题说说线程池的核心参数怎么设置这些参数实习经历介绍实习经历里有哪些做得不好的地方rocketMq分布式事务的原理mq重试机制的底层实现三面:实习经历redis为什么快redis底层 hashmap的扩容实习经历里有哪些做得不好的地方喜欢做什么类型的业务
查看20道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务