SDUT-python实验二编程题

7-1 sdut-sel-10 直角坐标系象限判断   分数 10

X是一个喜欢数学的小孩,现在刚刚学了坐标系。象限划分示意图如下:

00.jpg

他想知道点(X,Y)在第几象限内。输入数据保证点不在坐标轴及原点上。

输入格式:

多组输入。

每组输入两个整数X,Y,代表点(X,Y),中间用空格隔开。

输出格式:

输出一个整数代表点在第几象限内。

输入样例:

在这里给出一组输入。例如:

2 3
-2 -3

输出样例:

在这里给出相应的输出。例如:

1
3
while True:
    try:
        x,y=map(int,input().split())
        if x>0 and y>0:
            print(1)
        elif x<0 & y>0:
            print(2)
        elif x<0 and y<0:
            print(3)
        else:
            print(4)
    except :
        break

7-2 sdut-sel-2 汽车超速罚款(选择结构)   分数 10

许多社区都有“雷达”标志,告诉司机他们的速度是多少,希望他们能够慢下来。
你将根据输入的最高限速和司机实际开车速度(单位:km/h),通过计算是否超速的情况,输出一个“雷达”标志的信息。

11.jpg

提示:要输出的信息,建议从题目中复制,确保精确匹配。

郑重地提醒各位小伙伴们:在道路上驾驶机动车一定要遵守交通规则,注意交通安全!道路千万条,安全第一条!!!

输入格式:

在一行内输入2个整数。第一个表示最高限速,第二个表示司机的开车速度。(单位:km/h)

输出格式:

如果司机没有超速,输出:Congratulations, you are within the speed limit!
如果司机超速行驶,输出:You are speeding and your fine is F.(其中,F为上表中描述的罚款数额)

输入样例1:

40 39

输出样例1:

Congratulations, you are within the speed limit!

输入样例2:

100 131

输出样例2:

You are speeding and your fine is 500.

输入样例3:

100 120

输出样例3:

You are speeding and your fine is 100.
m,n=map(int,input().split())
if m>=n:
    print("Congratulations, you are within the speed limit!")
else:
    if n-m >= 1 and n-m <= 20:
        print("You are speeding and your fine is 100.")
    elif n-m >= 21 and n-m <= 30:
        print("You are speeding and your fine is 270.")
    elif n-m >= 31:
        print("You are speeding and your fine is 500.")

7-3 sdut-运输计费问题   分数 10

某运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:

99.jpg

其中,基本运输费用为:每吨每公里1元。

现请你帮助该运输公司设计计费程序,计算运输费用。

输入格式:

每次运输的载重(吨)、里程(公里),中间有一个空格。

输出格式:

输出其运输费用,精确到元。

输入样例1:

1.9  200.3

输出样例1:

381

输入样例2:

10  2500

输出样例2:

22500
m,n=map(float,input().split())
s = 1.0
if n<250 :
    s = 1.0
elif n >= 250 and n < 500:
    s=1.0-0.02
elif n >= 500 and n < 1000:
    s=1.0-0.05
elif n >= 1000 and n < 2000:
    s=1.0-0.08
elif n >= 2000 and n < 3000:
    s=1.0-0.1
elif n >= 3000:
    s=1.0-0.15
print("%d" %(round(m*n*s)))

7-4 sdut-阶梯电价   分数 10

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:

月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;

超过50千瓦时的,超出部分的用电量,电价上调 X 元/千瓦时。

请编写程序计算电费。

输入格式:

在一行中,输入某用户的月用电量(单位:千瓦时)和电价上调的X值(单位:元),中间用空格分开。

输出格式:

在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost=应付电费值”。

输入样例1:

10 0.05

输出样例1:

cost=5.30

输入样例2:

100 0.05

输出样例2:

cost=55.50

输入样例3:

-100 0.05

输出样例2:

cost=0.00
w,x=map(float,input().split())
if w>=0 and w<=50:
    c=w*0.53
elif w<0:
    c=0.00
else:
    c=26.5+(w-50)*(x+0.53)
print("cost=%.2f" %(c))

7-5 sdut-分段计算居民水费   分数 10

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关,请编写程序实现水费的计算。

(1)当x不超过15吨时,y=4x/3;

(2)超过后,y=2.5x−17.5。

输入格式:

在一行中给出非负实数x。

输出格式:

在一行输出应交的水费,精确到小数点后2位。

输入样例1:

12

输出样例1:

16.00

输入样例2:

16

输出样例2:

22.50
x=float(input())
if x<=15:
    y=4*x/3
else:
    y=2.5*x-17.5
print("%.2f" %(y))

7-6 sdut-循环-乘法运算   分数 10

接收一个正整数N,然后打印输出:N个等式,形如:i(1->N)N=iN 格式的数据。

输入格式:

只有一个正整数N(N<=100)。

输出格式:

输出共N行数据,形式如:i (1->N)*N=? 格式的表达式。

输入样例1:

4

输出样例1:

1*4=4
2*4=8
3*4=12
4*4=16

输入样例2:

5

输出样例2:

1*5=5
2*5=10
3*5=15
4*5=20
5*5=25
x = int(input())
for i in range(1,x+1):
    n=i*x
    print("%d*%d=%d" %(i,x,n))

7-7 sdut-求π的近似值   分数 10

用公式求π的近似值:

99.jpg

当求和项小于误差时,求和结束。

输入格式:

在一行输入误差范围。

输出格式:

在一行输出π的近似值(保留6位小数)。

输入样例:

在这里给出一组输入。例如:

0.00000001

输出样例:

3.141497
import math
x=float(input())
c=float(2.0)
sum=float(1.0)
while True:
    if 1.0/(c*c)<x:
        break
    sum += 1.0/(c*c)
    c += 1
sum=math.sqrt(sum*6)
print("%.6f" %(sum))

7-8 sdut-求误差小于输入值的e的近似值   分数 10

自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。ei代表前i项求和。输入误差范围error,当
 

99.jpg

,则表示e的近似值满足误差范围。

输入格式:

在一行输入误差范围,误差小于等于0.01。

输出格式:

在一行输出e的近似值(保留6位小数)。

输入样例1:

0.01

输出样例1:

2.716667

输入样例2:

0.001

输出样例2:

2.718254
import math
x = float(input())
y = int(1)
pre = int(1)
sum = float(2)
while(1) :
    pre *= y
    y += 1
    sum += (1.0/(pre*y))
    if 1.0/(pre*y) < x :
        break;
print("%.6f" %(sum))

7-9 sdut-入门-2 A+B for Input-Output Practice (II)   分数 10

你的任务是计算 a + b.

输入格式:

首先为待计算加和的个数N。接下来有N行数据。

每行有2个整数a和b,中间用空格分隔。

输出格式:

对于每一对输入整数a和b,在一行内它们的加和。

输入样例:

在这里给出一组输入。例如:

2
1 5
10 20

输出样例:

在这里给出相应的输出。例如:

6
30
N=int(input())
for i in range(N):
    a,b=map(int,input().split())
    print(a+b)

7-10 sdut0-入门-3 A+B for Input-Output Practice (III)   分数 10

你的任务是计算a + b。

输入格式:

输入包含多个测试用例。

每个测试用例包含一对整数a和b,每行有一对整数。

一个包含0 0的测试用例终止输入,并且这个测试用例不存在。

输出格式:

对于每一对输入整数a和b,您应该在一行中输出a和b的和。

输入样例:

在这里给出一组输入。例如:

1 5
10 20
0 0

输出样例:

在这里给出相应的输出。例如:

6
30
while True:
    try:
        a,b=map(int,input().split())
        if a==0 and b==0:
            break
        else:
            print(a+b)
    except:
        break

7-11 sdut-入门-4 A+B for Input-Output Practice (IV)   分数 10

你的任务是计算一些整数的和。

输入格式:

输入包含多个测试用例。

每个测试用例包含一个整数N,然后在同一行中跟随N个整数。以0开始的测试用例终止输入,并且这个测试用例不被处理。

输出格式:

对于每一组输入整数,您应该在一行中输出它们的和,输入的每一行都有一行输出。

输入样例:

在这里给出一组输入。例如:

4 1 2 3 4
5 1 2 3 4 5
0

输出样例:

在这里给出相应的输出。例如:

10
15
while True:
    list = [int(num) for num in input().split()]
    if list[0] == 0:
        break
    sum = 0
    for i in list:
        sum += int(i)
    sum -= list[0]
    print(sum)

7-12 sdut-入门-5 A+B for Input-Output Practice (V)   分数 10

你的任务是计算一些整数的和。

输入格式:

输入包含一个整数N在第一行,然后N行。

每一行以一个整数M开始,然后在同一行中跟随M个整数。

输出格式:

对于每一组输入整数,您应该在一行中输出它们的和,输入的每一行都有一行输出。

输入样例:

在这里给出一组输入。例如:

2
4 1 2 3 4
5 1 2 3 4 5

输出样例:

在这里给出相应的输出。例如:

10
15
n = int(input())
while n>0:
    n -= 1
    list = [int(num) for num in input().split()]
    if list[0] == 0:
        break
    sum = 0
    for i in list:
        sum += int(i)
    sum -= list[0]
    print(sum)

7-13 sdut-九九乘法表   分数 10

九九乘法表是数学学习的基础,今天我们就来看看乘法表的相关问题。《九九乘法歌诀》,又常称为“小九九”,如下图所示。你的任务是写一个程序,对于给定的一个正整数 n ,输出“九九乘法表”的前 n 行。例如,输入 n 为 9,你的程序的输出将为下图:

99.jpg

输入格式:

输入包含多组测试数据,以 EOF 结束。每组测试数据只包含一个正整数 n (0 < n < 10)。

输出格式:

对于每组测试数据,输出上图所示“九九乘法表”的前 n 行。

输入样例:

2
3

输出样例:

在这里给出相应的输出。例如:

1*1=1
1*2=2 2*2=4
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
while True:
    try:
        n = int(input())
        for i in range(1, n+1):
            for j in range(1,i):
                print("%d*%d=%d"%(j,i,i*j), end = ' ')
            print("%d*%d=%d"%(i,i,i*i), end = '\n')
    except:
        break

7-14 sdut-平方数(I)   分数 10

飞飞特别喜欢平方数,可是他数学并不好,你能帮他计算n与m之间所有平方数之和吗?

提示:若一个整数的开方还是整数,它就是平方数。例如:4、9、16、25是平方数。

输入格式:

第一行 T 代表数据的组数。

接下来有 T 行,每行两个整数n,m (0 <= n, m <= 100000000), n、m数值大小不确定。

输出格式:

对于每行输入,输出一个整数,代表所求区间内平方数之和。

输入样例:

3
1 4
3 10
17 20

输出样例:

在这里给出相应的输出。例如:

5
13
0
import math
def pingfang(n) :
    n = int(n)
    if math.floor(math.sqrt(n)) == math.ceil(math.sqrt(n)):
        return 1
    return 0
 
t = int(input())
while t > 0 :
    t -= 1
    n, m = map(int, input().split())
    n, m = min(n, m), max(n, m)
    sum = 0
    for i in range(n, m + 1) :
        if pingfang(i) == 1 :
            sum += i
 
    print(sum)

7-15 sdut-求交错序列前N项和   分数 10

编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

输入格式:

在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,结果保留三位小数。

提示:在Python中输出数值格式化的方式可以有多种,如:

print("{:.3f}".format(sum))  #方式1,其中:sum为变量
print("%.3f" %(sum) )         #方式2,其中:sum为变量

输入样例:

5

输出样例:

0.917
n = int(input())
m = 1.0
sum = 0.0
for i in range(1,n+1):
    if i & 1:
        sum += float(i/m)
    else:
        sum -= float(i/m)
    m += 2.0
print("%.3f" %(sum))

7-16 sdut-生成输入数的乘方表   分数 10

输入一个非负数和正整数n,3<=n<=9,生成一张输入数的乘方表,并输出。

输入格式:

在一行输入一个非负数和正整数n,中间有一个空格。

输出格式:

按照幂的递增顺序输出n+1行,计算结果保留2位小数。

输入样例1:

2.5  3

输出样例1:

2.5**0=1.00
2.5**1=2.50
2.5**2=6.25
2.5**3=15.62

输入样例2:

1 5

输出样例2:

1.0**0=1.00
1.0**1=1.00
1.0**2=1.00
1.0**3=1.00
1.0**4=1.00
1.0**5=1.00
a,n = input().split()
n = int(n)
a = float(a)

ans = 1

print(a,end = "")
print("**0=1.00")

for i in range(1,n+1):
    ans = ans*a
    print(a,end = "")
    print("**",end = "")
    print(i,end = "")
    print("=",end = "")
    print("{0:.2f}".format(ans))

7-17 sdut-水仙花数   分数 10

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。

请计算所有N位水仙花数。

输入格式:

在一行内,给出一个正整数N(3≤N≤5)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

153
370
371
407
def shuixian(n, x) :
    m = n
    sum = 0
    while(m > 0) :
        now = 1
        for i in range(0, x) :
            now *= m%10
        m //= 10
        sum += now
    if sum == n :
        return 1
    return 0
 
n = int(input())
l = int(1)
for i in range (0, n) :
    l *= 10
r = int(l)
l //= 10
for i in range (l, r + 1) :
    if(shuixian(i, n)) :
        print(i)

7-18 sdut-最大公约数和最小公倍数   分数 10

给定2个正整数,求它们的最大公约数和最小公倍数,并输出。

输入格式:

输入有若干组。

每组数据,在一行中给出两个正整数M和N(≤1000),中间有1个空格。

输出格式:

对于每组输入,在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1个空格分隔。

输入样例:

18 12
20 15
39 26
5 76
45 25
1993 343

输出样例:

在这里给出相应的输出。例如:

6 36
5 60
13 78
1 380
5 225
1 683599
def gcd(a, b):
    a = int(a)
    b = int(b)
    if b :
        return gcd(b, a%b)
    return a
 
def lcm(a, b):
    a = int(a)
    b = int(b)
    return a*b/gcd(a, b)
 
while 1:
    try :
        n, m = map(int, input().split())
        print(int(gcd(n, m)), int(lcm(n, m)))
    except:
        break

7-19 sdut-求满足条件的斐波那契数   分数 10

斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。

输入格式:

在一行输人一个正整数n(n>=10)。

输出格式:

在一行输出大于n的最小斐波那契数。

输入样例:

10

输出样例:

13
n = int(input())
a = 1
b = 1
while 1:
    if(a + b > n) :
        print(a + b)
        break
    x = a
    y = b
    a = y
    b = x + y

7-20 sdut-冒泡排序中数据交换的次数   分数 10

听说过冒泡排序么?一种很暴力的排序方法。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。

输入格式:

第一行为一个正整数 T ,表示有 T 组测试数据。

接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N <= 100。

输出格式:

输出共 T 行。

每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数。

输入样例:

3
5 1 2 3 4 5
4 5 3 7 1
2 2 1

输出样例:

0
4
1
n = int(input())
while n:
    n -= 1
    lis = [int(num) for num in input().split()]
    del lis[0]
    cnt = 0
    for i in range(len(lis) - 1) :
        for j in range (len(lis) - 1 - i) :
            if(lis[j] > lis[j + 1]) :
                lis[j], lis[j + 1] = lis[j + 1], lis[j]
                cnt += 1
    print(cnt)

  • 25
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值