- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章100 个 Python 小例子(练习题一)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
题目:
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:遍历全部可能,把有重复的剃掉.
1
2
3
4
5
6
7
8
|
total
=
0
for
i
in
range
(
1
,
5
):
for
j
in
range
(
1
,
5
):
for
k
in
range
(
1
,
5
):
if
((i!
=
j)
and
(j!
=
k)
and
(k!
=
i)):
print
(i,j,k)
total
+
=
1
print
(total)
|
简便方法:用itertools中的permutations即可.
1
2
3
4
5
6
7
|
import
itertools
sum2
=
0
a
=
[
1
,
2
,
3
,
4
]
for
i
in
itertools.permutations(a,
3
):
print
(i)
sum2
+
=
1
print
(sum2)
|
题目:
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
程序分析:分区间计算即可.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
profit
=
int
(
input
(
'Show me the money: '
))
bonus
=
0
thresholds
=
[
100000
,
100000
,
200000
,
200000
,
400000
]
rates
=
[
0.1
,
0.075
,
0.05
,
0.03
,
0.015
,
0.01
]
for
i
in
range
(
len
(thresholds)):
if
profit<
=
thresholds[i]:
bonus
+
=
profit
*
rates[i]
profit
=
0
break
else
:
bonus
+
=
thresholds[i]
*
rates[i]
profit
-
=
thresholds[i]
bonus
+
=
profit
*
rates[
-
1
]
print
(bonus)
|
题目:
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限
1
2
3
4
5
6
7
8
|
n
=
0
while
(n
+
1
)
*
*
2
-
n
*
n<
=
168
:
n
+
=
1
print
(n
+
1
)
-
-
-
-
-
-
-
-
-
-
85
|
思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。 至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可.
结合起来:
1
2
3
4
5
6
7
|
n
=
0
while
(n
+
1
)
*
*
2
-
n
*
n<
=
168
:
n
+
=
1
for
i
in
range
((n
+
1
)
*
*
2
):
if
i
*
*
0.5
=
=
int
(i
*
*
0.5
)
and
(i
+
168
)
*
*
0.5
=
=
int
((i
+
168
)
*
*
0.5
):
print
(i
-
100
)
|
题目:
输入某年某月某日,判断这一天是这一年的第几天?
程序分析:特殊情况,闰年时需考虑二月多加一天:
1
2
3
4
5
6
7
8
9
10
11
12
|
def
isLeapYear(y):
return
(y
%
400
=
=
0
or
(y
%
4
=
=
0
and
y
%
100
!
=
0
))
DofM
=
[
0
,
31
,
28
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
]
res
=
0
year
=
int
(
input
(
'Year:'
))
month
=
int
(
input
(
'Month:'
))
day
=
int
(
input
(
'day:'
))
if
isLeapYear(year):
DofM[
2
]
+
=
1
for
i
in
range
(month):
res
+
=
DofM[i]
print
(res
+
day)
|
题目:
输入三个整数x,y,z,请把这三个数由小到大输出.
程序分析:练练手就随便找个排序算法实现一下,偷懒就直接调函数.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
raw
=
[]
for
i
in
range
(
3
):
x
=
int
(
input
(
'int%d: '
%
(i)))
raw.append(x)
for
i
in
range
(
len
(raw)):
for
j
in
range
(i,
len
(raw)):
if
raw[i]>raw[j]:
raw[i],raw[j]
=
raw[j],raw[i]
print
(raw)
raw2
=
[]
for
i
in
range
(
3
):
x
=
int
(
input
(
'int%d: '
%
(i)))
raw2.append(x)
print
(
sorted
(raw2))
|
题目:
斐波那契数列.
程序分析:斐波那契数列(Fibonacci sequence),从1,1开始,后面每一项等于前面两项之和。图方便就递归实现,图性能就用循环.
1
2
3
4
5
6
7
8
9
10
11
12
|
# 递归实现
def
Fib(n):
return
1
if
n<
=
2
else
Fib(n
-
1
)
+
Fib(n
-
2
)
print
(Fib(
int
(
input
())))
# 朴素实现
target
=
int
(
input
())
res
=
0
a,b
=
1
,
1
for
i
in
range
(target
-
1
):
a,b
=
b,a
+
b
print
(a)
|
题目:
将一个列表的数据复制到另一个列表中.
程序分析:使用列表[:],拿不准可以调用copy模块.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import
copy
a
=
[
1
,
2
,
3
,
4
,[
'a'
,
'b'
]]
b
=
a
# 赋值
c
=
a[:]
# 浅拷贝
d
=
copy.copy(a)
# 浅拷贝
e
=
copy.deepcopy(a)
# 深拷贝
a.append(
5
)
a[
4
].append(
'c'
)
print
(
'a='
,a)
print
(
'b='
,b)
print
(
'c='
,c)
print
(
'd='
,d)
print
(
'e='
,e)
=
=
=
=
=
=
=
=
=
=
=
=
RESTART: F:\PyWorkspace\Python100\
100examples
\
007.py
=
=
=
=
=
=
=
=
=
=
=
=
a
=
[
1
,
2
,
3
,
4
, [
'a'
,
'b'
,
'c'
],
5
]
b
=
[
1
,
2
,
3
,
4
, [
'a'
,
'b'
,
'c'
],
5
]
c
=
[
1
,
2
,
3
,
4
, [
'a'
,
'b'
,
'c'
]]
d
=
[
1
,
2
,
3
,
4
, [
'a'
,
'b'
,
'c'
]]
e
=
[
1
,
2
,
3
,
4
, [
'a'
,
'b'
]]
|
题目:
输出 9*9 乘法口诀表.
程序分析:分行与列考虑,共9行9列,i控制行,j控制列.
1
2
3
4
|
for
i
in
range
(
1
,
10
):
for
j
in
range
(
1
,i
+
1
):
print
(
'%d*%d=%2ld '
%
(i,j,i
*
j),end
=
'')
print
()
|
题目:
暂停一秒输出.
程序分析:使用 time 模块的 sleep() 函数.
1
2
3
4
|
import
time
for
i
in
range
(
4
):
print
(
str
(
int
(time.time()))[
-
2
:])
time.sleep(
1
)
|
题目:
暂停一秒输出,并格式化当前时间.
程序分析:同009. 。
1
2
3
4
5
|
import
time
for
i
in
range
(
4
):
print
(time.strftime(
'%Y-%m-%d %H:%M:%S'
,time.localtime(time.time())))
time.sleep(
1
)
|
题目:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析:我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔.
1
2
3
4
5
6
7
8
9
10
11
12
|
month
=
int
(
input
(
'繁殖几个月?: '
))
month_1
=
1
month_2
=
0
month_3
=
0
month_elder
=
0
for
i
in
range
(month):
month_1,month_2,month_3,month_elder
=
month_elder
+
month_3,month_1,month_2,month_elder
+
month_3
print
(
'第%d个月共'
%
(i
+
1
),month_1
+
month_2
+
month_3
+
month_elder,
'对兔子'
)
print
(
'其中1月兔:'
,month_1)
print
(
'其中2月兔:'
,month_2)
print
(
'其中3月兔:'
,month_3)
print
(
'其中成年兔:'
,month_elder)
|
题目:
判断101-200之间有多少个素数,并输出所有素数.
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import
math
for
i
in
range
(
100
,
200
):
flag
=
0
for
j
in
range
(
2
,
round
(math.sqrt(i))
+
1
):
if
i
%
j
=
=
0
:
flag
=
1
break
if
flag:
continue
print
(i)
print
(
'\nSimplify the code with "else"\n'
)
for
i
in
range
(
100
,
200
):
for
j
in
range
(
2
,
round
(math.sqrt(i))
+
1
):
if
i
%
j
=
=
0
:
break
else
:
print
(i)
|
题目:
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方.
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位.
1
2
3
4
5
6
7
8
|
for
i
in
range
(
100
,
1000
):
s
=
str
(i)
one
=
int
(s[
-
1
])
ten
=
int
(s[
-
2
])
hun
=
int
(s[
-
3
])
if
i
=
=
one
*
*
3
+
ten
*
*
3
+
hun
*
*
3
:
print
(i)
|
题目:
将一个整数分解质因数。例如:输入90,打印出90=233*5.
程序分析:根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
target
=
int
(
input
(
'输入一个整数:'
))
print
(target,
'= '
,end
=
'')
if
target<
0
:
target
=
abs
(target)
print
(
'-1*'
,end
=
'')
flag
=
0
if
target<
=
1
:
print
(target)
flag
=
1
while
True
:
if
flag:
break
for
i
in
range
(
2
,
int
(target
+
1
)):
if
target
%
i
=
=
0
:
print
(
"%d"
%
i,end
=
'')
if
target
=
=
i:
flag
=
1
break
print
(
'*'
,end
=
'')
target
/
=
i
break
|
题目:
利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示.
程序分析:用条件判断即可.
1
2
3
4
5
6
7
8
|
points
=
int
(
input
(
'输入分数:'
))
if
points>
=
90
:
grade
=
'A'
elif
points<
60
:
grade
=
'C'
else
:
grade
=
'B'
print
(grade)
|
题目:
输出指定格式的日期.
程序分析:使用 datetime 模块.
1
2
3
4
5
6
7
|
import
datetime
print
(datetime.date.today())
print
(datetime.date(
2333
,
2
,
3
))
print
(datetime.date.today().strftime(
'%d/%m/%Y'
))
day
=
datetime.date(
1111
,
2
,
3
)
day
=
day.replace(year
=
day.year
+
22
)
print
(day)
|
题目:
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数.
程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n' .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
string
=
input
(
"输入字符串:"
)
alp
=
0
num
=
0
spa
=
0
oth
=
0
for
i
in
range
(
len
(string)):
if
string[i].isspace():
spa
+
=
1
elif
string[i].isdigit():
num
+
=
1
elif
string[i].isalpha():
alp
+
=
1
else
:
oth
+
=
1
print
(
'space: '
,spa)
print
(
'digit: '
,num)
print
(
'alpha: '
,alp)
print
(
'other: '
,oth)
|
题目:
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制.
程序分析:用字符串解决.
1
2
3
4
5
6
7
|
a
=
input
(
'被加数字:'
)
n
=
int
(
input
(
'加几次?:'
))
res
=
0
for
i
in
range
(n):
res
+
=
int
(a)
a
+
=
a[
0
]
print
(
'结果是:'
,res)
|
题目:
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数.
程序分析:将每一对因子加进集合,在这个过程中已经自动去重。最后的结果要求不计算其本身.
1
2
3
4
5
6
7
8
9
10
11
12
|
def
factor(num):
target
=
int
(num)
res
=
set
()
for
i
in
range
(
1
,num):
if
num
%
i
=
=
0
:
res.add(i)
res.add(num
/
i)
return
res
for
i
in
range
(
2
,
1001
):
if
i
=
=
sum
(factor(i))
-
i:
print
(i)
|
题目:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
1
2
3
4
5
6
7
|
high
=
200.
total
=
100
for
i
in
range
(
10
):
high
/
=
2
total
+
=
high
print
(high
/
2
)
print
(
'总长:'
,total)
|
题目:
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单.
程序分析:找到条件下不重复的三个对手即可.
1
2
3
4
5
6
7
8
9
10
|
a
=
set
([
'x'
,
'y'
,
'z'
])
b
=
set
([
'x'
,
'y'
,
'z'
])
c
=
set
([
'x'
,
'y'
,
'z'
])
c
-
=
set
((
'x'
,
'z'
))
a
-
=
set
(
'x'
)
for
i
in
a:
for
j
in
b:
for
k
in
c:
if
len
(
set
((i,j,k)))
=
=
3
:
print
(
'a:%s,b:%s,c:%s'
%
(i,j,k))
|
题目:
打印出如下图案(菱形)
* *** ***** ******* ***** *** * 。
程序分析:递归调用即可.
1
2
3
4
5
6
7
|
def
draw(num):
a
=
"*"
*
(
2
*
(
4
-
num)
+
1
)
print
(a.center(
9
,
' '
))
if
num!
=
1
:
draw(num
-
1
)
print
(a.center(
9
,
' '
))
draw(
4
)
|
题目:
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.
程序分析:就是斐波那契数列的后一项除以前一项.
1
2
3
4
5
6
7
|
a
=
2.0
b
=
1.0
s
=
0
for
n
in
range
(
1
,
21
):
s
+
=
a
/
b
a,b
=
a
+
b,a
print
(s)
|
题目:
求1+2!+3!+...+20!的和.
程序分析:1+2!+3!+...+20!=1+2(1+3(1+4(...20(1)))) 。
1
2
3
4
|
res
=
1
for
i
in
range
(
20
,
1
,
-
1
):
res
=
i
*
res
+
1
print
(res)
|
题目:
利用递归方法求5!.
程序分析:递归调用即可.
1
2
3
|
def
factorial(n):
return
n
*
factorial(n
-
1
)
if
n>
1
else
1
print
(factorial(
5
))
|
题目:
利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来.
程序分析:递归真是蠢方法.
1
2
3
4
5
6
|
def
rec(string):
if
len
(string)!
=
1
:
rec(string[
1
:])
print
(string[
0
],end
=
'')
rec(
input
(
'string here:'
))
|
题目:
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:就一等差数列.
1
2
3
4
5
|
def
age(n):
if
n
=
=
1
:
return
10
return
2
+
age(n
-
1
)
print
(age(
5
))
|
题目:
给一个不多于5位的正整数,要求:1、求它是几位数,2、逆序打印出各位数字.
程序分析:学会分解出每一位数,用字符串的方法总是比较省事.
1
2
3
4
|
n
=
int
(
input
(
'输入一个正整数:'
))
n
=
str
(n)
print
(
'%d位数'
%
len
(n))
print
(n[::
-
1
])
|
题目:
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同.
程序分析:用字符串比较方便,就算输入的不是数字都ok.
1
2
3
4
5
6
7
8
9
10
11
12
|
n
=
input
(
"随便你输入啥啦:"
)
a
=
0
b
=
len
(n)
-
1
flag
=
True
while
a<b:
if
n[a]!
=
n[b]:
print
(
'不是回文串'
)
flag
=
False
break
a,b
=
a
+
1
,b
-
1
if
flag:
print
(
'是回文串'
)
|
到此这篇关于100 个 Python 小例子(练习题一)的文章就介绍到这了,更多相关Python 小例子内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://zhuanlan.zhihu.com/p/260175468 。
最后此篇关于100 个 Python 小例子(练习题一)的文章就讲到这里了,如果你想了解更多关于100 个 Python 小例子(练习题一)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!