【程序 1】
题目:有 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
count
=
0
for
a
in
range
(
1
,
5
)
:
for
b
in
range
(
1
,
5
)
:
for
c
in
range
(
1
,
5
)
:
if
a
!=
b
and
a
!=
c
and
b
!=
c
:
print
(
'%d%d%d'
%
(
a
,
b
,
c
)
)
count
+=
1
print
(
'一共有%s个'
%
count
)
【程序 2】
题目:企业发放的奖金根据利润提成。利润 (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 ,求应发放奖金总数?
mon
=
float
(
input
(
'请输入利润金额:'
)
)
mm
=
0.0
#奖金
if
mon
>
0
and
mon
<=
10
:
mm
=
mon
*
0.1
elif
mon
<
20
:
mm
=
1
+
(
mon
-
10
)
*
0.075
elif
mon
<
40
:
mm
=
1
+
0.75
+
(
mon
-
20
)
*
0.05
elif
mon
<
60
:
mm
=
1
+
0.75
+
1
+
(
mon
-
40
)
*
0.03
elif
mon
<=
100
:
mm
=
1
+
0.75
+
1
+
1.2
+
(
mon
-
60
)
+
0.015
elif
mon
>
100
:
mm
=
1
+
0.75
+
1
+
1.2
+
(
mon
-
100
)
*
0.01
else
:
print
(
'输入错误'
)
print
(
'您的奖金为:%s'
%
mm
)
【程序 3】
题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数, 请问该数是多少?
i
=
1
while
1
:
if
(
i
+
100
)
**
0.5
%
1
==
0
and
(
i
+
168
)
**
0.5
%
1
==
0
:
print
(
i
)
break
;
i
+=
1
【程序 4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
# 思路:先判断是否为闰年,这关系到 2 月份的天数。
# 之后再根据月份值把前几个月的天数累积加起来,最后再加上个“日”,就可以了。
dat
=
input
(
'请输入某年某月某日,格式为 yyyy-mm-dd :'
)
y
=
int
(
dat
[
0
:
4
]
)
#获取年份
m
=
int
(
dat
[
5
:
7
]
)
#获取月份
d
=
int
(
dat
[
8
:
]
)
#获取日
ly
=
False
if
y
%
100
==
0
:
#若年份能被100整除
if
y
%
400
==
0
:
#且能被400整除
ly
=
True
#则是闰年
else
:
ly
=
False
elif
y
%
4
==
0
:
#其它情况下,若能被4整除
ly
=
True
#则为闰年
else
:
ly
=
False
if
ly
==
True
:
#若为闰年,则2月份有29天
ms
=
[
31
,
29
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
]
else
:
ms
=
[
31
,
28
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
]
days
=
0
for
i
in
range
(
1
,
13
)
:
#从1到12逐一判断,以确定月份
if
i
==
m
:
for
j
in
range
(
i
-
1
)
:
#确定月份i之后,则将ms列表中的前i-1项相加
days
+=
ms
[
j
]
print
(
'%s是该年份的第%s天。'
%
(
dat
,
(
days
+
d
)
)
)
#最后再加上“日”,即是答案
# 方法二
import
datetime
y
=
int
(
input
(
'请输入4位数字的年份:'
)
)
#获取年份
m
=
int
(
input
(
'请输入月份:'
)
)
#获取月份
d
=
int
(
input
(
'请输入是哪一天:'
)
)
#获取“日”
targetDay
=
datetime
.
date
(
y
,
m
,
d
)
#将输入的日期格式化成标准的日期
print
(
targetDay
-
datetime
.
date
(
targetDay
.
year
-
1
,
12
,
31
)
)
#减去上一年最后一天,可得解
# 方法三
import
datetime
y
=
int
(
input
(
'请输入4位数字的年份:'
)
)
#获取年份
m
=
int
(
input
(
'请输入月份:'
)
)
#获取月份
d
=
int
(
input
(
'请输入是哪一天:'
)
)
#获取“日”
targetDay
=
datetime
.
date
(
y
,
m
,
d
)
#将输入的日期格式化成标准的日期
dayCount
=
targetDay
-
datetime
.
date
(
targetDay
.
year
-
1
,
12
,
31
)
#减去上一年最后一天
print
(
'%s是%s年的第%s天。'
%
(
targetDay
,
y
,
dayCount
.
days
)
)
【程序 5】
题目:输入三个整数 x,y,z,请把这三个数由小到大输出。
a
=
int
(
input
(
'请输入A的值:'
)
)
b
=
int
(
input
(
'请输入B的值:'
)
)
c
=
int
(
input
(
'请输入C的值:'
)
)
if
a
>
b
:
a
,
b
=
b
,
a
if
a
>
c
:
a
,
c
=
c
,
a
if
b
>
c
:
b
,
c
=
c
,
b
print
(
a
,
b
,
c
)
【程序 6】
题目:用*号输出字母 C 的图案。
def
printC
(
)
:
print
(
" ***** "
)
print
(
" ** * "
)
print
(
" ** "
)
print
(
" ** "
)
print
(
" ** * "
)
print
(
" ***** "
)
printC
(
)
【程序 7】
题目:输出特殊图案,请在 c 环境中运行,看一看, Very Beautiful!
a
=
176
b
=
219
print
(
'%c%c%c%c%c'
%
(
b
,
a
,
a
,
a
,
b
)
)
print
(
'%c%c%c%c%c'
%
(
a
,
b
,
a
,
b
,
a
)
)
print
(
'%c%c%c%c%c'
%
(
a
,
a
,
b
,
a
,
a
)
)
print
(
'%c%c%c%c%c'
%
(
a
,
b
,
a
,
b
,
a
)
)
print
(
'%c%c%c%c%c'
%
(
b
,
a
,
a
,
a
,
b
)
)
【程序 8】
题目:输出 9*9 口诀表。
for
i
in
range
(
1
,
10
)
:
for
j
in
range
(
1
,
i
+
1
)
:
print
(
f
'{j}*{i}={i*j}'
,
end
=
' '
)
print
(
)
【程序 9】
题目:要求输出国际象棋棋盘。
for
i
in
range
(
8
)
:
for
j
in
range
(
8
)
:
if
(
(
i
+
j
)
%
2
==
0
)
:
print
(
chr
(
219
)
*
2
,
end
=
""
)
#因为要连续打印一行,所以不能使用默认的print函数
else
:
print
(
" "
,
end
=
""
)
print
(
""
)
【程序 10】
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
#看不懂题
【程序 11】
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到 第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
N
=
int
(
input
(
"输入月份:"
)
)
r
=
[
1
,
1
,
1
]
for
f
in
range
(
4
,
N
+
1
)
:
n
=
r
[
f
-
2
]
+
r
[
f
-
3
]
r
.
append
(
n
)
print
(
r
)
【程序 12】
题目:判断 101-200 之间有多少个素数,并输出所有素数。
l
=
[
]
for
i
in
range
(
101
,
200
)
:
for
j
in
range
(
2
,
i
-
1
)
:
if
i
%
j
==
0
:
break
else
:
l
.
append
(
i
)
print
(
l
)
print
(
'总数为:%d'
%
len
(
l
)
)
【程序 13】
题目:打印出所有的“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字立
方和等于该数本身。例如: 153 是一个“水仙花数”,因为 153=1 的三次方+5的三次方 +3的三次方。
for
i
in
range
(
100
,
1000
)
:
a
=
int
(
i
/
100
)
b
=
int
(
(
i
-
(
a
*
100
)
)
/
10
)
c
=
int
(
i
%
10
)
if
i
==
(
a
**
3
+
b
**
3
+
c
**
3
)
:
print
(
i
)
【程序 14】
题目:将一个正整数分解质因数。例如:输入 90, 打印出 90=2* 3 * 3 * 5 。
#将一个正整数分解质因数。例如:输入 90, 打印出 90=2* 3 * 3 * 5 。
a
=
int
(
input
(
'请输入一个数:'
)
)
l
=
[
]
i
=
2
print
(
a
,
'='
,
end
=
''
)
if
a
<
1
:
print
(
'输入数字错误.'
)
else
:
while
1
:
if
a
%
i
==
0
:
print
(
i
,
'*'
,
end
=
''
)
l
.
append
(
i
)
a
=
a
//
i
i
=
2
elif
i
==
a
-
1
:
print
(
i
+
1
)
l
.
append
(
i
+
1
)
break
else
:
i
+=
1
【程序 15】
题目:利用条件运算符的嵌套来完成此题:学习成绩 >=90 分的同学用 A 表示,60-89 分 之间的用 B 表示,60 分以下的用 C表示。
a
=
int
(
input
(
'请输入您的成绩:'
)
)
if
a
>=
90
and
a
<=
100
:
print
(
'A'
)
elif
a
>
60
:
print
(
'B'
)
elif
a
>
0
:
print
(
'C'
)
else
:
print
(
'输出错误'
)
【程序 17】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
s
=
input
(
'请输入一个字符串:'
)
dic
=
{
'letter'
:
0
,
'integer'
:
0
,
'space'
:
0
,
'other'
:
0
}
for
i
in
s
:
if
i
>
'a'
and
i
<
'z'
or
i
>
'A'
and
i
<
'Z'
:
dic
[
'letter'
]
+=
1
elif
i
in
'0123456789'
:
dic
[
'integer'
]
+=
1
elif
i
==
' '
:
dic
[
'space'
]
+=
1
else
:
dic
[
'other'
]
+=
1
print
(
'统计字符串:'
,
dic
)
print
(
dic
)
for
i
in
dic
:
print
(
'%s='
%
i
,
dic
[
i
]
)
【程序 18】
题目:求 s=a + aa + aaa + aaaa + aa…a的值,其中 a 是一个数字。例如2+22+222+2222+22222(此时,共有 5 个数相加) ,几个数相加有键盘控制。
a
=
int
(
input
(
'请输入基数:'
)
)
b
=
int
(
input
(
'请输入个数:'
)
)
sum
=
0
for
i
in
range
(
b
)
:
sum
+=
a
a
=
a
+
a
*
10
print
(
sum
)
【程序 19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如 6=1+2+3。编 程找出 1000 以内的所有完数。
for
i
in
range
(
1
,
1001
)
:
sum
=
0
l
=
[
]
for
m
in
range
(
1
,
i
)
:
if
i
%
m
==
0
and
i
!=
m
:
sum
+=
m
l
.
append
(
m
)
if
sum
==
i
:
print
(
i
,
'its factors are'
,
l
)
l
=
[
]
【程序 20】
题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10 次落地时,共经过多少米?第 10 次反弹多高?
a
=
100
sum
=
100
for
i
in
range
(
1
,
10
)
:
sum
+=
a
a
/=
2
print
(
sum
)
【程序 21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一
天剩下的一半多一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘 了多少。
dl
=
1
df
=
0
for
i
in
range
(
10
)
:
df
=
2
*
(
dl
+
1
)
dl
=
df
print
(
"第一天摘了%d个桃子:"
,
df
)
【程序 22】
题目:两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已
抽签决定比赛名单。 有人向队员打听比赛的名单。 a 说他不和 x 比,c 说他不和 x,z 比, 请编程序找出三队赛手的名单。
import
itertools
for
i
in
itertools
.
permutations
(
'xyz'
)
:
if
i
[
0
]
!=
'x'
and
i
[
2
]
!=
'x'
and
i
[
2
]
!=
'z'
:
print
(
'a vs %s, b vs %s, c vs %s'
%
(
i
[
0
]
,
i
[
1
]
,
i
[
2
]
)
)
【程序 23】
题目:打印出如下图案(菱形)
nu
=
1
# 开始值
k
=
2
# 变量值
while
nu
>=
0
:
print
(
int
(
(
7
-
nu
)
/
2
)
*
' '
+
'*'
*
nu
)
nu
+=
k
if
nu
==
7
:
k
=
-
k
【程序 24】
题目:有一分数序列: 2/1 ,3/2 ,5/3 ,8/5 ,13/8 ,21/13… 求出这个数列的前 20 项 之和。
m
=
1
n
=
2
sum
=
0
for
i
in
range
(
20
)
:
sum
+=
n
/
m
k
=
n
n
+=
m
m
=
k
print
(
sum
)
【程序 25】
题目:求 1+2!+3!+…+20! 的和
def
num
(
n
)
:
if
n
==
1
:
return
1
return
n
*
num
(
n
-
1
)
sum
=
0
for
i
in
range
(
1
,
5
)
:
sum
+=
num
(
i
)
print
(
sum
)
【程序 26】
题目:利用递归方法求 5! 。
def
num
(
a
)
:
if
a
==
1
:
return
1
return
a
*
num
(
a
-
1
)
print
(
num
(
5
)
)
【程序 27】
题目:利用递归函数调用方式,将所输入的 5 个字符,以相反顺序打印出来。
string
=
input
(
"请输入一个字符串 :"
)
def
f
(
x
)
:
if
x
==
-
1
:
#当变量的长度是-1时,返回
return
''
else
:
#否则返回字符串的位置向后移1位,直到变量的长度为-1
return
string
[
x
]
+
f
(
x
-
1
)
print
(
f
(
len
(
string
)
-
1
)
)
【程序 28】
题目:有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。
问第 4 个人岁 数,他说比第 3 个人大 2 岁。
问第三个人,又说比第 2 人大两岁。
问第 2 个人,说比第1个人大两岁。
最后问第一个人,他说是 10 岁。请问第五个人多大?
def
age
(
s
)
:
if
s
==
1
:
return
2
else
:
return
2
+
age
(
s
-
1
)
print
(
age
(
4
)
+
10
)
【程序 29】
题目:给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
def
ben
(
num
)
:
if
num
//
10000
!=
0
:
print
(
'输入错误'
)
else
:
while
num
!=
0
:
n
=
num
%
10
l
.
append
(
n
)
num
//=
10
num
=
int
(
input
(
'请输入一个不多于 5 位的正整数:'
)
)
l
=
[
]
ben
(
num
)
print
(
l
)
【程序 30】
题目:一个数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位 与千位相同。
def
hui_wen
(
s
)
:
# 基线条件
if
len
(
s
)
<
2
:
# 字符串的长度小于2,则字符串一定是回文
return
True
elif
s
[
0
]
!=
s
[
-
1
]
:
# 第一个字符和最后一个字符不相等,不是回文字符串
return
False
# 递归条件
return
hui_wen
(
s
[
1
:
-
1
]
)
print
(
hui_wen
(
'abcdefgfedcba'
)
)
【程序 31】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
w
=
{
'm'
:
'Monday'
,
'tu'
:
'Tuesday'
,
'w'
:
'Wednesday'
,
'th'
:
'Thursday'
,
'f'
:
'Firday'
,
'sa'
:
'Saturday'
,
'su'
:
'Sunday'
,
't'
:
'Tuesday/Thursday'
,
's'
:
'Saturday/Sunday'
}
a
=
input
(
'请输入首字母或者2个字母:'
)
if
a
in
w
.
keys
(
)
:
print
(
w
[
a
]
)
else
:
print
(
'没有此星期'
)
【程序 32】
题目:Press any key to change color
略
【程序 33】
题目:学习 gotoxy() 与clrscr() 函数。
略
【程序 34】
题目:练习函数调用
def
hanshu
(
)
:
print
(
'调用函数'
)
hanshu
(
)
【程序 35】
题目:文本颜色设置
开头部分:
\033[显示方式;前景色;背景色m + 结尾部分:\033[0m
注意:
开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;但是,建议按照默认的格式规范书写。
对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[***开头,\033[0m结尾。
数值表示的参数含义:
**显示方式: **
0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、 5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
前景色:
30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
背景色:
40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
常见开头格式:
\033[0m 默认字体正常显示,不高亮
\033[32;0m 红色字体正常显示
\033[1;32;40m 显示方式: 高亮 字体前景色:绿色 背景色:黑色
\033[0;31;46m 显示方式: 正常 字体前景色:红色 背景色:青色
print
(
"\033[1;31;40m您输入的帐号或密码错误!\033[0m"
)
【程序 36】
题目:求 100 之内的素数
import
math
for
i
in
range
(
1
,
101
)
:
k
=
int
(
math
.
sqrt
(
i
)
)
for
j
in
range
(
2
,
i
)
:
if
i
%
j
==
0
:
break
if
j
>
k
:
print
(
i
)
break
【程序 37】
题目:对 10 个数进行排序
l
=
[
12
,
34
,
62
,
41
,
74
,
45
,
25
,
74
,
26
,
73
]
l
.
sort
(
)
print
(
l
)
【程序 38】
题目:求一个 3*3 矩阵对角线元素之和
sum
=
0
n
=
[
[
1
,
2
,
3
]
,
[
2
,
3
,
4
]
,
[
3
,
4
,
5
]
]
for
i
in
range
(
3
)
:
sum
+=
n
[
i
]
[
i
]
print
(
sum
)
【程序 39】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
l
=
[
12
,
25
,
26
,
34
,
41
,
45
,
62
,
73
,
74
]
m
=
44
for
i
in
range
(
1
,
len
(
l
)
)
:
if
m
<
l
[
i
]
:
l
.
insert
(
i
,
m
)
break
print
(
l
)
【程序 40】
题目:将一个数组逆序输出。
l
=
[
12
,
34
,
62
,
41
,
74
,
45
,
25
,
74
,
26
,
73
]
for
i
in
range
(
1
,
len
(
l
)
+
1
)
:
print
(
l
[
-
i
]
,
end
=
' '
)