-
在商场购买某商品时,若所花的钱x在下述范围内,所付钱y按对应的折扣支付:
y
=
{
x
x
<
1000
0.9
x
1000
≤
x
<
2000
0.8
x
2000
≤
x
<
3000
0.7
x
x
≥
3000
\begin{array}{l} y=\left\{\begin{array}{cc} x & x<1000 \\ 0.9 x & 1000 \leq x<2000 \\ 0.8 x & 2000 \leq x<3000 \\ 0.7 x & x \geq 3000 \end{array}\right. \end{array}
y=????????x0.9x0.8x0.7x?x<10001000≤x<20002000≤x<3000x≥3000??
x=eval(input("请输入所花钱x:"))
if x>=3000:
y=0.7*x
elif x>=2000:
y=0.8*x
elif x>=1000:
y=0.9*x
else:
y=x
print("实际应付金额{:.2f}元".format(y))
-
编写计算分段函数的程序:
y
=
{
sin
?
x
+
x
2
+
1
,
x
>
5
e
x
+
log
?
5
x
+
x
5
,
0
<
x
≤
5
cos
?
x
?
x
3
+
3
x
,
x
≤
0
y=\left\{\begin{array}{ll} \sin x+\sqrt{x^{2}+1}, & x>5 \\ e^{x}+\log _{5}{x}+\sqrt[5]{x}, & 0<x \leq 5 \\ \cos x-x^{3}+3 x, & x \leq 0 \end{array}\right.
y=????sinx+x2+1
?,ex+log5?x+5x
?,cosx?x3+3x,?x>50<x≤5x≤0?
输入x的值,输出函数y的值。
import math
x=eval(input("请输入x的值:"))
if x>=5:
y=math.sin(x)+math.sqrt(x**2+1)
elif x>=0:
y=math.exp(x)+math.log(x,5)+x**(1/5)
else:
y=math.cos(x)-x**3+3*x
print("分段函数y的值是:",y)
import math
x=eval(input("请输入x的值:"))
if x>5:
y=math.sin(x)+math.sqrt(x**2+1)
elif x>0 and x<=5:
y=math.exp(x)+math.log(x,5)+x**(1/5)
else:
y=math.cos(x)-x**3+3*x
print("分段函数y的值是:",y)
import math
x=eval(input("请输入x的值:"))
if x>5:
y=math.sin(x)+math.sqrt(x**2+1)
elif 0<x<=5:
y=math.exp(x)+math.log(x,5)+x**(1/5)
else:
y=math.cos(x)-x**3+3*x
print("分段函数y的值是:",y)
-
编写程序,实现分段函数计算,如下表所示。当x=7,输出y的值。
x
x
x |
y
y
y |
---|
x
<
0
x<0
x<0 |
0
0
0 |
0
?
x
<
5
0\leqslant x<5
0?x<5 |
x
x
x |
5
?
x
<
10
5\leqslant x<10
5?x<10 |
3
x
?
5
3x-5
3x?5 |
10
?
x
<
20
10\leqslant x<20
10?x<20 |
0.5
x
?
2
0.5x-2
0.5x?2 |
20
?
x
20\leqslant x
20?x |
0
0
0 |
x = input('Please input x:')
x = eval(x)
if x<0 or x>=20:
print(0)
elif 0<=x<5:
print(x)
elif 5<=x<10:
print(3*x-5)
elif 10<=x<20:
print(0.5*x-2)
-
从键盘上任意输入一个自然数,判断数是否素数。如输入11,则显示:11是素数
n=eval(input("请输入一个自然数:"))
tag=True
for i in range(2,n):
if n%i==0:
tag=False
break
m="是素数" if tag else "不是素数"
print(n,m)
-
一元二次方程求解
编
程
求
解
一
元
二
次
方
程
a
x
2
+
b
x
+
c
=
0
,
方
程
中
的
a
,
b
,
c
系
数
从
键
盘
输
入
(
提
示
:
分
支
嵌
套
)
编程求解一元二次方程a x^2+b x+c=0,方程中的a,b,c系数从键盘输入(提示:分支嵌套)
编程求解一元二次方程ax2+bx+c=0,方程中的a,b,c系数从键盘输入(提示:分支嵌套)
注
解
:
注解:
注解:
?
大
部
分
情
况
下
是
根
据
求
根
公
式
来
求
解
,
即
:
大部分情况下是根据求根公式来求解,即:
大部分情况下是根据求根公式来求解,即:
?
x
=
?
b
±
b
2
?
4
a
c
2
a
x=\frac{-b \pm \sqrt{b^{2}-4 a c}}{2 a}
x=2a?b±b2?4ac
??
?
判
别
式
:
判别式:
判别式:
?
利
用
一
元
二
次
方
程
的
判
别
式
(
Δ
=
b
2
?
4
a
c
)
可
以
判
断
方
程
的
根
的
情
况
。
可
以
判
别
方
程
根
的
情
况
。
利用一元二次方程的判别式(\Delta=b^{2}-4 a c) 可以判断方程的根的情况。可以判别方程根的情况。
利用一元二次方程的判别式(Δ=b2?4ac)可以判断方程的根的情况。可以判别方程根的情况。
?
一
元
二
次
方
程
a
x
2
+
b
x
+
c
=
0
(
a
=?
0
)
的
根
与
根
的
判
别
式
,
有
如
下
关
系
:
一元二次方程a x^2+b x+c=0(a\not=0)的根与根的判别式,有如下关系:
一元二次方程ax2+bx+c=0(a?=0)的根与根的判别式,有如下关系:
?
(
1
)
当
Δ
>
0
时
,
方
程
有
两
个
不
相
等
的
实
数
根
;
(1)当 \Delta>0 时, 方程有两个不相等的实数根;
(1)当Δ>0时,方程有两个不相等的实数根;
?
(
2
)
当
Δ
=
0
时
,
方
程
有
两
个
相
等
的
实
数
根
;
(2)当 \Delta=0 时, 方程有两个相等的实数根;
(2)当Δ=0时,方程有两个相等的实数根;
?
(
3
)
当
Δ
<
0
时
,
方
程
无
实
数
根
,
但
有
2
个
共
轭
复
根
。
(3)当 \Delta<0 时, 方程无实数根, 但有 2 个共轭复根。
(3)当Δ<0时,方程无实数根,但有2个共轭复根。
import math
a=eval(input("A="))
b=eval(input("B="))
c=eval(input("C="))
delta=b**2-4*a*c
if a==0:
if b==0:
print("方程无意义!!")
else:
x=-c/b
print("方程有单根:",x)
else:
if delta>0:
q=math.sqrt(delta)/(2*a)
p=-b/(2*a)
x1=p+q
x2=p-q
print("两个不相等的实根",x1,x2)
elif delta==0:
p=-b/(2*a)
print("两个相等的实根:",p)
else:
print("方程无解!")
-
编程产生菲波拉契数列20项,例如:0 1 1 2 3 5 8 13 21 ……
x0,x1=0,1
for n in range(0,20):
print(x0,end=" ")
x2=x1+x0
x0=x1
x1=x2
x0,x1=0,1
for n in range(0,20):
print(x0,end=" ")
x0,x1=x1,x0+x1
-
猴子摘桃
猴子第一天摘了若干个桃子,当天吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,见只剩下一个桃子,问第一天共摘了多少个桃子?
x=1
for d in range(0,9):
x=(x+1)*2
print(x)
x0=1
for d in range(0,9):
x1=(x0+1)*2
x0=x1
print(x0)
-
韩信点兵
韩信点兵的典故:韩信带1500名士兵去打仗,战死四五百人,3人一排多出2人,5人一排多出4人,7人一排多出6人,编程计算剩下
士兵的人数。
for i in range(1000,1101):
if i%3==2 and i%5==4 and i%7==6:
print('剩下士兵共有{}人'.format(i))
for i in range(1100,1001,-1):
if i%3==2 and i%5==4 and i%7==6:
print('剩下士兵共有{}人'.format(i))
i=1000
while i<=1100:
if i%3==2 and i%5==4 and i%7==6:
print('剩下士兵共有{}人'.format(i))
i=i+1
i=1100
while i>=1000:
if i%3==2 and i%5==4 and i%7==6:
print('剩下士兵共有{}人'.format(i))
i=i-1
-
编程分别计算100以内(含100)奇数与偶数的和。
s1,s2=0,0
for i in range(1,101):
if i%2==0:
s2=s2+i
else:
s1=s1+i
print("奇数的和是:{},偶数的和是:{}".format(s1,s2))
-
编程计算前30项的和:s=1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+…+n)
t,sum=0,0
for i in range(1,31):
t = t + i
sum = sum + t
print("多项式前30项的和是:",sum)
-
给钱问题
一个富翁试图与陌生人做一笔换钱生意,换钱规则为:陌生人每天给富翁10万元钱,直到满一个月(30天);而富翁第一天给陌生人1分钱,第2天给2分钱,第3天给4分钱,…,富翁每天给穷人的钱是前一天的两倍,直到满一个月,分别显示富翁给陌生人的钱和陌生人给富翁的钱各是多少?
x0=0.01
s =0
for i in range(1,31):
s=s+100000
x1=2 * x0
x0=x1
print("富翁赚的钱{:.2f},陌生人赚的钱{:.2f}".format(s,x0))
-
闰年
编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。
x = input('Please input an integer of 4 digits meaning the year:')
x = eval(x)
if x%400==0 or (x%4==0 and not x%100==0):
print('Yes')
else:
print('No')
-
小球自由落体问题
一小球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
s=100
h0=100
for i in range(1,10):
h1=h0/2
s=s+2*h1
h0=h1
print("小球一共经过了{:.2f}米,第10次的高度{:.2f}米".format(s,h0))
-
求阶乘
从键盘输入任意一个正整数,编程计算该数的阶乘 如:输入5,阶乘结果120 。
n=eval(input("请输入一个正整数:"))
p=1
for i in range(1,n+1):
p=p*i
print("n! =",p)
-
99乘法表
输出如下格式的99乘法表。
1
×
1
=
1
1\times1=1
1×1=1 | | | | | | | | |
---|
2
×
1
=
2
2\times1=2
2×1=2 |
2
×
2
=
4
2\times2=4
2×2=4 | | | | | | | |
3
×
1
=
3
3\times1=3
3×1=3 |
3
×
2
=
6
3\times2=6
3×2=6 |
3
×
3
=
9
3\times3=9
3×3=9 | | | | | | |
4
×
1
=
4
4\times1=4
4×1=4 |
4
×
2
=
8
4\times2=8
4×2=8 |
4
×
3
=
12
4\times3=12
4×3=12 |
4
×
4
=
16
4\times4=16
4×4=16 | | | | | |
5
×
1
=
5
5\times1=5
5×1=5 |
5
×
2
=
10
5\times2=10
5×2=10 |
5
×
3
=
15
5\times3=15
5×3=15 |
5
×
4
=
20
5\times4=20
5×4=20 |
5
×
5
=
25
5\times5=25
5×5=25 | | | | |
6
×
1
=
6
6\times1=6
6×1=6 |
6
×
2
=
12
6\times2=12
6×2=12 |
6
×
3
=
18
6\times3=18
6×3=18 |
6
×
4
=
24
6\times4=24
6×4=24 |
6
×
5
=
30
6\times5=30
6×5=30 |
6
×
6
=
36
6\times6=36
6×6=36 | | | |
7
×
1
=
7
7\times1=7
7×1=7 |
7
×
2
=
14
7\times2=14
7×2=14 |
7
×
3
=
21
7\times3=21
7×3=21 |
7
×
4
=
28
7\times4=28
7×4=28 |
7
×
5
=
35
7\times5=35
7×5=35 |
7
×
6
=
42
7\times6=42
7×6=42 |
7
×
7
=
49
7\times7=49
7×7=49 | | |
8
×
1
=
8
8\times1=8
8×1=8 |
8
×
2
=
16
8\times2=16
8×2=16 |
8
×
3
=
24
8\times3=24
8×3=24 |
8
×
4
=
32
8\times4=32
8×4=32 |
8
×
5
=
40
8\times5=40
8×5=40 |
8
×
6
=
48
8\times6=48
8×6=48 |
8
×
7
=
56
8\times7=56
8×7=56 |
8
×
8
=
64
8\times8=64
8×8=64 | |
9
×
1
=
9
9\times1=9
9×1=9 |
9
×
2
=
18
9\times2=18
9×2=18 |
9
×
3
=
27
9\times3=27
9×3=27 |
9
×
4
=
36
9\times4=36
9×4=36 |
9
×
5
=
45
9\times5=45
9×5=45 |
9
×
6
=
54
9\times6=54
9×6=54 |
9
×
7
=
63
9\times7=63
9×7=63 |
9
×
8
=
72
9\times8=72
9×8=72 |
9
×
9
=
81
9\times9=81
9×9=81 |
for i in range(1,10):
for j in range(1,i+1):
print("{}*{}={:2d}" .format (i,j,i*j),end=" ")
print()
-
百元百鸡
使用循环方法求解百钱买百鸡问题,假设公鸡5元一只,母鸡3元一只,小鸡1元一只,现在100元钱想买100只鸡,编程计算买鸡的方案,有多少种买法。
s=0
for x in range(1,20):
for y in range(1,33):
z = 100 - x - y
if 5*x + 3*y + z/3 == 100:
print('公鸡:%d 母鸡:%d 小鸡:%d'%(x, y, z))
s=s+1
print('有以上{}种卖法'.format(s))
-
使用列表生成式方法求解百钱买百鸡问题。
假设大鸡5元一只,中鸡3元一只,小鸡1元三只,现有100元钱想买100只鸡,有多少种买法?
l=[(i,j,k) for i in range(0,100) for j in range(0,100) for k in range(0,100) if i+j+k==100 and 5*i+3*j+k/3==100]
for i in l:
print(i)
-
绘制六边形
用turtle库绘制红色线条的六边形,线条大小5像素,每边长度80。
import turtle
turtle.pensize(5)
turtle.pencolor("red")
for i in range(6):
turtle.fd(80)
turtle.left(60)
输出效果:
-
绘制平行四边形
用turtle库绘制平行四边形,相邻两边长度分别为150和80,对角120度和60度,线条粗6像素,颜色为绿色。
import turtle
turtle.pensize(6)
turtle.pencolor("green")
turtle.fd(150)
turtle.left(60)
turtle.fd(80)
turtle.left(120)
turtle.fd(150)
turtle.left(60)
turtle.fd(80)
import turtle
turtle.pensize(6)
turtle.pencolor("green")
turtle.fd(150)
for i in range(1,4):
if i%2==1:
turtle.left(60)
turtle.fd(80)
else:
turtle.left(120)
turtle.fd(150)
输出效果:
-
编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:
without,hello,bag,world
则输出为:
bag,hello,without,world
x=input("x=")
l=x.split(",")
l.sort()
print(",".join(l))
-
编写一个程序来计算输入中单词的频率。 按字母顺序对键进行排序后输出。
假设为程序提供了以下输入:
New to Python or choosing between Python 2 and Python 3 Read Python 2 or Python 3
然后,输出应该是:
2:2
3:2
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1
x=input("x=")
l=x.split()
d={}
for i in l:
d[i]=d.get(i,0)+1
l2=sorted(d)
for i in l2:
print("{}:{}".format(i,d[i]))
-
编程:输入一段英文文本,统计该文本中单词的出现次数。比如"How are you.how are you"的统计结果是{“how”:2,“are”:2,“you”:2},要求用函数调用的方法实现。
def wordnum(s):
for c in ".,/?:":
s=s.replace(c,' ')
words=s.lower().split()
dic_s={}
for word in words:
dic_s[word]=dic_s.get(word,0)+1
return dic_s
s=input("请输入英文文本:")
dic_s=wordnum(s)
print(dic_s)
-
依次输入三个整数放在一个列表中,请把这三个数由小到大输出。
l=[]
for i in range(3):
x=int(input("x="))
l.append(x)
l.sort()
for i in l:
print(i,end=" ")
-
使用给定的整数n,编写一个程序生成一个包含(i, i*i)的字典,该字典包含1到n之间的整数(两者都包含)。然后程序应该打印字典。
假设向程序提供以下输入:8
则输出为:
{1:1,2:4,3:9,4:16,5:25,6:36,,7:49,8:64}
n=eval(input("n="))
d={}
for i in range(1,n+1):
d[i]=i*i
print(d)
-
使用列表生成式随机产生10个两位的正整数,存入列表ls中,输出ls中的这10个随机数,然后对这10个随机数求平均值,并输出统计高于平均值的数有多少个。
from random import *
ls=[randint(10,99) for i in range(10)]
print(ls)
pj=sum(ls)/10
n=0
for i in ls:
if i>pj:
n=n+1
print(n)
-
编写一个程序,它将找到1000到3000之间的所有这些数字(均包括在内),这样数字的每个数字都是偶数。 获得的数字应以逗号分隔的顺序打印在一行上。
values = []
for i in range(1000, 3001):
s = str(i)
if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0):
values.append(s)
print (",".join(values))
-
编写一个程序,输出2000到3200(含2000和3200)之间所有是7的倍数,但不是5的倍数的整数。要求:用列表保存符合条件的整数,输出结果各整数之间用逗号分隔,并输出在一行上。
l=[]
for i in range(2000,3201):
if i%7==0 and i%5!=0:
l.append(str(i))
print(",".join(l))
-
编写一个程序,接收一系列单个空格分隔的单词作为输入,在删除所有重复的单词并按字母升序排序后打印这些单词。
假设向程序提供以下输入:
hello world and practice makes perfect and hello world again
则输出为:
again and hello makes perfect practice world
x=input("x=")
l=x.split()
s=set(l)
l2=list(s)
l2.sort()
for i in l2:
print(i,end=" ")
-
编写一个接收句子并计算字母和数字的程序。假设为程序提供了以下输入:
Hello world! 123
然后,输出应该是:
字母 10
数字 3
d={'字母':0,'数字':0}
x=input("x=")
for i in x:
if i.isdigit():
d['数字']=d['数字']+1
elif i.isalpha():
d['字母']=d['字母']+1
for k,v in d.items():
print("{} {}".format(k,v))
-
使用列表生成式来求列表中的每个奇数。 该列表由一系列逗号分隔的数字输入。
假设为程序提供了以下输入:
[1,2,3,4,5,6,7,8,9]
然后,输出应该是:
[1, 3, 5, 7, 9]
l=eval(input("l="))
l2=[i for i in l if i%2==1]
print(l2)
-
定义函数,将一个四位数的整数的每个数字分离出来,并将四位数返回。主程序要求输入整数,并输出这四个数字。
def fenli(n):
n1=int(n/1000)
n2=int(n/100%10)
n3=int(n/10%10)
n4=n%10
return (n1,n2,n3,n4)
n=int(input("请输入一个四位数的整数:"))
if len(str(n))!=4:
print("请输入一个四位数!")
else:
a,b,c,d=fenli(n)
print(a,b,c,d)
-
已知字符串a=“aAsmr3idd4bgs7Slsf9eAF”,要求编写程序,将字符串中的数字取出,并输出成一个新的字符串。要求用函数实现数字的提取,并返回字符串。
def desp(s):
dig_s=""
for ch in s:
if ch.isdigit():
dig_s+=ch
return dig_s
s=input("请输入字符串:")
print("该字符串中的数字构成的字符串为:",desp(s))
-
编写一个函数,实现摄氏温度和华氏温度之间的换算,换算公式为F=9C/5+32,要求输入单位是摄氏度的值,能够显示相应的华氏温度值,反之亦然。
def converse(t,n):
if n==1:
return 9*t/5+32
else:
return (t-32)*5/9
t=eval(input("请输入温度值:"))
n=int(input("请输入1或2,输入1表示输入的是摄氏温度,2表示华氏温度:"))
if n==1:
print("华氏温度值为:",converse(t,1))
else:
print("摄氏温度为:",converse(t,2))
-
对列表nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]进行排序,将0放到最后。
nums = [0, 7, 0, 1, 2, 1, 5, 1, 7, 8, 0, 67, 1, 3, 4]
print(sorted(nums,key=lambda x:1 if x==0 else 0))
-
用递归方法求数列“1,1,1,3,5,9,17,31……”的前20项(要求每行输出5个数)
def fun(n):
if n in (1,2,3):
return 1
else:
return fun(n-1)+fun(n-2)+fun(n-3)
for i in range(1,21):
print("{:>8}".format(fun(i)),end=' ' if i%5!=0 else '\n')
-
用函数调用的方法求:
C
m
n
=
m
!
n
!
×
(
m
?
n
)
!
C_{m}^{n}=\frac{m !}{n ! \times(m-n) !}
Cmn?=n!×(m?n)!m!?
def fac(n):
if n==1 or n==0:
return 1
else:
return n*fac(n-1)
m=int(input("请输入正整数m:"))
n=int(input("请输入正整数n:"))
if m<n:
m,n=n,m
else:
f=fac(m)/(fac(n)*fac(m-n))
print("f=",f)
-
编写函数showMsg(n,name),它可以输出n行字符串“Happy Birthday ***",如果“***”为小明,则输出n行“Happy Birthday 小明”。
def showMsg(n,name):
s="Happy Birthday" +name+"\n"
print(n * s)
showMsg(10,"小明")
-
编写函数avg(lst),参数lst是一个列表,它可以返回列表元素的整数平均值return int(sum(lst)/len(lst)),调用avg(lst)函数求每个学生的平均成绩。已知成绩列表s={‘小李’:[77,54,57],‘小张’:[89,66,78],‘小陈’:[90,93,80],‘小杨’:[69,58,93]}。 输出结果:{‘小李’:62,‘小张’:77,‘小陈’:87,‘小杨’:73}。
def avg(lst):
return int(sum(lst)/len(lst))
score_dict={'小李':[77,54,57],'小张':[89,66,78],'小陈':[90,93,80],'小杨':[69,58,93]}
avg_dict={}
for key,value in score_dict.items():
avg_dict[key]=avg(value)
print(avg_dict)
-
编写一个函数, 接收字符串参数(其中字符串中包含大小写字母及其他字符), 返回一个元组,元组的第一个值为大写字母的个数, 第二个值为小写字母个数。
def Fun(str):
upper = lower = 0
for i in str:
if i.isupper():
upper += 1
elif i.islower():
lower += 1
else:
continue
return upper,lower
print(Fun('Hello World!'))
-
从键盘上任意输入三个数x,y,z,然后比较它们的大小并进行由小到大的排序输出。
x,y,z=eval(input("输入 x,y,z,分别用逗号分隔:"))
if x>y:
x,y=y,x
if y>z:
y,z=z,y
if x>y:
x,y=y,x
print("排序后:",x,y,z)
-
求两个整数m,n的最大公约数,m和n由键盘输入。
m,n=eval(input("请输入两个自然数,用逗号分隔:"))
r=m%n
while r!=0:
m=n
n=r
r=m%n
print("最大的公约数:",n)
-
编写一个程序,该程序接受控制台以逗号分隔的数字序列,并生成包含每个数字的列表和元组。假设向程序提供以下输入:
34岁,67年,55岁,33岁,12日,98年
则输出为:
[‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’]
(‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’)
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入,方法可以将列表转换为元组。
import re
values=input('请输入数字序列:')
k=re.findall(r'[0-9]+',values)
t=tuple(k)
print(k)
print(t)