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

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

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

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

>>> for a in range (1,5):for b in range (1,5):for c 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()一下即可。

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乘法口诀表。

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

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

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

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

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

import timeAAA=(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()。

AAA=input("请输入一行字符")x=0y=0z=0for i 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语句。

H=100L=H/2for i 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()是逆序

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

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

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

AA=[]JJC=input("come:")for i 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的基本功。