Linux运维工程师面试题第六套

这次是Python10道脚本,主要是从中感受到Python编程思想,有时候shell和python的编程要注意细节,但是两者有很大的相同之处。Enjoy it~

-------------------------------------------------------------------------------------------

1、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

【思路】设定a是range(1,5)的一个,b和c也是。互不相同且不重复,那就是a不等于b也不等于c,同时b也不等于c。

1
2
3
4
5
>>> for in range (1,5):
for in range (1,5):
for in range(1,5):
if (a!=b)and(b!=c)and(c!=a):
print (a,b,c)


2、输入某年某月某日,判断这一天是这一年的第几天?

【思路】YY=int(input("请输入一个年份"))    #硬性语言要求要加上int

    MM=int(input("请输入一个月份"))

    DD=int(input("请输入一个日期"))

    上来先读取三个数字,然后先判断 YY %4==0 还是 !=0,如果是等于0,那么2月份就是29天,不然就是28天。

    YY除以4是否有余数作为第一个判断,然后再将每一个月的天数累计相加对应每一个月,比如当YY %4=0的时候,MM=1,天数的起始值是31,MM=2,天数的起始值是60,以此类推,手动把12个月的天数先算出来,然后在加上DD的天数,就能得到总的天数。


3、输入三个整数x,y,z,请把这三个数由小到大输出。

【思路】列表的功能是可以排列的,.sort()是从小到大排列,.reverse()是从大到小排列。于是乎,先设定一个空列表,然后不断地往里面添加元素,最用.sort()一下即可。

1
2
3
4
5
6
7
8
9
AAA=[]
a=int(input("sign a number:"))
AAA.append(a)
b=int(input("sign the second number:"))
AAA.append(b)
c=int(input("sign the third number:"))
AAA.append(c)
AAA.sort()
print(AAA)

【注意】这个如果打算用笨招---用if把一种情况一种情况纷纷写出来的话是可以的,但是要注意,print(abc)是会出错误的,因为abc是一个新的变量了。


4、输出9*9乘法口诀表。

【思路】这个跟第一个题很相似。

1
2
3
4
for in range(10):
  for in range(10):
    AAA=i*j
    print(str(i)+"乘以"+str(j)+"等于"+str(AAA))

这里的难点就是如何把“数字”和“字符串”整合在一起输出。


5、显示当前时间,然后暂停10秒输出下10秒时间。

【思路】Python time.strftime() 函数是一个挺难记的函数,不过这个就是实用性的考题,不会有哪个公司蛋疼的拿出来当真考试用。

1
2
3
4
5
6
import time
AAA=(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
time.sleep(10)    # 中间休息10秒
BBB=(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
print(AAA)
print(BBB)


6、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

【思路】不用傻乎乎的if x in [1,2,3,4,5,6,7,8,9],然后判断是否是数字等等。用.isalpha()来判断是不是字母,用.isspace()来判断是不是空格,用.isdigit()来判断是不是数字。当然这个可以用正则来做,然后len一下就搞定,这里用的方法是.isdigit()。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
AAA=input("请输入一行字符")
x=0
y=0
z=0
for in AAA:
    if i.isalpha():
    x=x+1
    if i.isspace():
    y=y+1
    if i.isdigit():
    z=z+1
    print("字母的个数是"+str(x))
    print("空格的个数是"+str(y))
    print("数字的个数是"+str(z))


7、一球从100米高度*落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

【思路】若H=100,第一次弹起的高度L=H/2,第二次就是L=H/4,第三次L=H/8,分母是2的幂关系,同时共经过的距离就是H不断的加上这些L,这是一个无脑重复性任务,所以可以用for in语句。

1
2
3
4
5
6
7
H=100
L=H/2
for in range (2,11):
    H=H+L/2
    L=L/2
    print("第"+str(i)+"次总共经过了"+str(H)+"米")
    print("第"+str(i)+"次的球反弹了"+str(L)+"米")


8 、给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

【思路】对于列表来说,.sort()是正序,而.reverse()是逆序

1
2
3
4
5
6
7
8
9
10
11
I=[]
i=0
AAA=input("请输入一个正整数:")
for in AAA:
    i=i+1
    I.append(x)
     
print("这是一个"+str(i)+"位数")    #注意这个print的位置,如果不是顶头的话,会是什么呢?
I.sort()      
I.reverse()
print(I)


9、按相反的顺序输出列表的值。

【思路】先设定一个空列表,然后一个一个的.append进去,然后使用[::-1]就是相反顺序输出。

1
2
3
4
5
AA=[]
JJC=input("come:")
for in JJC:
    AA.append(i)
print(AA[::-1])


10、以下函数的输出结果是什么呢?

def hello_world():

    print ('hello world')


def three_hellos():

    for i in range(3):

        hello_world()

if __name__ == '__main__':

    three_hellos()

【思路】hello_world这个函数的效果就是输出"hello,world",但是在three_hellos套用了这个hello_world这个函数,而且在for in语句里,这里没有i,于是就是重复三次hello_world函数。

---------------------------------------分割线----------------------------------------------

这里尽可能的没有涉及到太多的数学题,本人个人很反感把python当成理论数学的计算工具,毕竟在实际工作里接触不到,这十个就是乐呵乐呵,重新体验一下python的基本功。



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1743535

上一篇:深入解析Mysql中事务的四大隔离级别及其所解决的读现象


下一篇:jMeter parallel controller 无法使用 CSV Data config 提供的变量?