这次是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的基本功。