这次是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 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()一下即可。
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 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() 函数是一个挺难记的函数,不过这个就是实用性的考题,不会有哪个公司蛋疼的拿出来当真考试用。
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 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语句。
1
2
3
4
5
6
7
|
H = 100
L = H / 2
for 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()是逆序
1
2
3
4
5
6
7
8
9
10
11
|
I = []
i = 0
AAA = input ( "请输入一个正整数:" )
for x 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 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的基本功。