7-1 sdut-sel-10 直角坐标系象限判断
X是一个喜欢数学的小孩,现在刚刚学了坐标系。象限划分示意图如下:
他想知道点(X,Y)在第几象限内。输入数据保证点不在坐标轴及原点上。
输入格式:
多组输入。
每组输入两个整数X,Y,代表点(X,Y),中间用空格隔开。
输出格式:
输出一个整数代表点在第几象限内。
输入样例:
在这里给出一组输入。例如:
2 3
-2 -3
输出样例:
在这里给出相应的输出。例如:
1
3
代码:
try:
while True:
x, y = map(int, input().split())
if x > 0 and y > 0:
print(1)
elif x < 0 and y > 0:
print(2)
elif x < 0 and y < 0:
print(3)
else:
print(4)
except EOFError:
pass
7-2 sdut-计算分段函数
计算下列分段函数g(x)的值:
输入格式:
在一行中输入实数x。
输出格式:
在一行中按“g(x) = result”的格式输出,其中x与result都保留3位小数。
输入样例1:
500
输出样例1:
g(500.000) = 0.001
输入样例2:
0
输出样例2:
g(0.000) = 0.000
代码:
num = float(input())
if num == 0:
print("g(0.000) = 0.000")
else:
print("g(%.3f) = %.3f" % (num, 1.0 / (2.0 * num)))
7-3 sdut-sel-2 汽车超速罚款(选择结构)
许多社区都有“雷达”标志,告诉司机他们的速度是多少,希望他们能够慢下来。
你将输出一个“雷达”标志的信息,根据司机驾驶车速的情况向他(她)显示信息。
在此,郑重地提醒各位小伙伴们:在道路上驾驶机动车一定要遵守交通规则,注意交通安全!道路千万条,安全第一条!!!
输入格式:
在一行内输入2个整数。第一个表示速度的限制,第二个表示司机的开车速度。
输出格式:
如果司机没有超速,输出应该是: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.
代码:
a, b = map(int, input().split())
if a >= b:
print("Congratulations, you are within the speed limit!")
else:
if 1 <= b - a <= 20:
print("You are speeding and your fine is 100.")
elif 21 <= b - a <= 30:
print("You are speeding and your fine is 270.")
else:
print("You are speeding and your fine is 500.")
7-4 sdut-运输计费问题
某运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:
其中,基本运输费用为:每吨每公里1元。
现请你帮助该运输公司设计计费程序,计算运输费用。
输入格式:
每次运输的载重(吨)、里程(公里),中间有一个空格。
输出格式:
输出其运输费用,精确到元。
输入样例1:
1 200
输出样例1:
200
输入样例2:
10 2500
输出样例2:
22500
代码:
a, b = map(float,input().split())
if a > 0:
if 0 <= b < 250:
print(round(a * b * 1.0))
elif 250 <= b < 500:
print(round(a * b * 0.98))
elif 500 <= b < 1000:
print(round(a * b * 0.95))
elif 1000 <= b < 2000:
print(round(a * b * 0.92))
elif 2000 <= b < 3000:
print(round(a * b * 0.90))
elif 3000 <= b:
print(round(a * b * 0.85))
else:
print(0)
else:
print(0)
7-5 sdut-阶梯电价
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:
月用电量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
代码:
a, b = map(float, input().split())
if 0 < a <= 50.0:
print("cost=%.2f" % (a * 0.53))
elif a > 50.0:
price = 50 * 0.53 + (a - 50) * (0.53 + b)
print("cost=%.2f" % price)
else:
print("cost=0.00")
7-6 sdut-分段计算居民水费
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费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.0 * x / 3.0
else:
y = 2.5 * x - 17.5
print("%.2f" % y)
7-7 sdut-循环-乘法运算
接收一个正整数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
代码:
n = int(input())
for i in range(1, n + 1):
print("%d*%d=%d" % (i, n, i * n))
7-8 sdut-求π的近似值
用公式求π的近似值:
当求和项小于误差时,求和结束。
输入格式:
在一行输入误差范围。
输出格式:
在一行输出π的近似值(保留6位小数)。
输入样例:
在这里给出一组输入。例如:
0.00000001
输出样例:
3.141497
代码:
from math import *
k = float(input())
m, i, h = 0, 1, 1
while h > k:
h = 1 / (i ** 2)
m += h
i += 1
print("%.6f" % sqrt(m * 6))
7-9 sdut-求误差小于输入值的e的近似值
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。ei代表前i项求和。输入误差范围error,当
,则表示e的近似值满足误差范围。
输入格式:
在一行输入误差范围,误差小于等于0.01。
输出格式:
在一行输出e的近似值(保留6位小数)。
输入样例1:
0.01
输出样例1:
2.716667
输入样例2:
0.001
输出样例2:
2.718254
代码:
n = float(input())
a, b = 1, 2
i = m = 1
while b - a > n:
i += 1
m *= i
a, b = b, b + 1 / m
print("%.6f" % b)
7-10 求6+66+666+6666+66666
输入2个正整数m和n。 求和:m+mm+mmm+mmmm+ ... +mmm……mmm
(n个m)
例如:输入:6和5,则求和:6+66+666+6666+66666
并输出。
输入格式:
第一行表示正整数m;(0<=m<=9)
第二行输入正整数n。(0<=m<=1000)
输出格式:
在一行内输出按照要求计算的累加和。
输入样例:
在这里给出一组输入。例如:
6
2
输出样例:
在这里给出相应的输出。例如:
72
代码:
c = input()
n = int(input())
sum = 0
for i in range(1, n + 1):
s = c * i
sum += int(s)
print(sum)
7-11 sdut-入门-1 A+B for Input-Output Practice(I)
你的任务是计算a + b。
太容易了? !当然!我专门为PTA初学者设计了这个问题。
你一定发现有些问题与这个问题有着相同的标题,是的,所有这些问题都是为了相同的目标而设计的。
输入格式:
输入将由一系列(若干行)整数a和b组成。
每行有一对整数,用一个空格分隔。
输出格式:
对于每一对输入整数a和b,您应该在一行中输出a和b的和,并在输入的每一行中输出一行。
输入样例:
在这里给出一组输入。例如:
1 5
10 20
输出样例:
在这里给出相应的输出。例如:
6
30
代码:
try:
while True:
a, b = map(int, input().split())
print(a + b)
except EOFError:
pass
7-12 sdut-入门-2 A+B for Input-Output Practice (II)
你的任务是计算 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-13 sdut-入门-3 A+B for Input-Output Practice (III)
你的任务是计算a + b。
输入格式:
输入包含多个测试用例。
每个测试用例包含一对整数a和b,每行有一对整数。
一个包含0 0的测试用例终止输入,并且这个测试用例不存在。
输出格式:
对于每一对输入整数a和b,您应该在一行中输出a和b的和。
输入样例:
在这里给出一组输入。例如:
1 5
10 20
0 0
输出样例:
在这里给出相应的输出。例如:
6
30
代码:
try:
while True:
a, b = map(int, input().split())
if a == 0 and b == 0:
break
else:
print(a + b)
except EOFError:
pass
7-14 sdut-入门-4 A+B for Input-Output Practice (IV)
你的任务是计算一些整数的和。
输入格式:
输入包含多个测试用例。
每个测试用例包含一个整数N,然后在同一行中跟随N个整数。以0开始的测试用例终止输入,并且这个测试用例不被处理。
输出格式:
对于每一组输入整数,您应该在一行中输出它们的和,输入的每一行都有一行输出。
输入样例:
在这里给出一组输入。例如:
4 1 2 3 4
5 1 2 3 4 5
0
输出样例:
在这里给出相应的输出。例如:
10
15
代码:
try:
while True:
ls = [int(num) for num in input().split()]
if ls[0] != 0:
print(sum(ls[1:ls[0] + 1:]))
else:
break
except EOFError:
pass
7-15 sdut-入门-5 A+B for Input-Output Practice (V)
你的任务是计算一些整数的和。
输入格式:
输入包含一个整数N在第一行,然后N行。
每一行以一个整数M开始,然后在同一行中跟随M个整数。
输出格式:
对于每一组输入整数,您应该在一行中输出它们的和,输入的每一行都有一行输出。
输入样例:
在这里给出一组输入。例如:
2
4 1 2 3 4
5 1 2 3 4 5
输出样例:
在这里给出相应的输出。例如:
10
15
代码:
n = int(input())
for i in range(n):
ls = [int(num) for num in input().split()]
if ls[0] != 0:
print(sum(ls[1:ls[0] + 1]))
else:
break
7-16 sdut-入门-6 A+B for Input-Output Practice (VI)
你的任务是计算一些整数的和。
输入格式:
输入包含多个测试用例,一个用例一行。每一种情况都以一个整数N开始,然后在同一行中跟随N个整数。
输出格式:
对于每个测试用例,您应该在一行中输出N个整数的和,并在输入的每一行中输出一行。。
输入样例:
在这里给出一组输入。例如:
4 1 2 3 4
5 1 2 3 4 5
输出样例:
在这里给出相应的输出。例如:
10
15
代码:
try:
while True:
ls = [int(num) for num in input().split()]
print(sum(ls[1:ls[0] + 1:]))
except EOFError:
pass
7-17 sdut-入门-7 A+B for Input-Output Practice (VII)
你的任务是计算a + b。
输入格式:
输入将由一系列整数a和b组成,用一个空格分隔,每行有一对整数。
输出格式:
对于每一对输入整数a和b,应该输出a和b的和,后面跟着一个空行。
输入样例:
在这里给出一组输入。例如:
1 5
10 20
输出样例:
在这里给出相应的输出。例如:
6
30
代码:
try:
while True:
a, b = map(int, input().split())
print(a + b)
print()
except EOFError:
pass
7-18 sdut-入门-8 A+B for Input-Output Practice(VIII)
你的任务是计算一些整数的和。
输入格式:
输入包含一个整数N在第一行,然后N行。
每一行以一个整数M开始,然后在同一行中跟随M个整数。
输出格式:
对于每一组输入整数,您应该在一行中输出它们的和,并且必须注意输出之间有一个空行。
输入样例:
在这里给出一组输入。例如:
3
4 1 2 3 4
5 1 2 3 4 5
3 1 2 3
输出样例:
在这里给出相应的输出。例如:
10
15
6
代码:
n = int(input())
for i in range(n):
ls = [int(num) for num in input().split()]
print(sum(ls[1:ls[0] + 1]))
print()
7-19 sdut-九九乘法表
九九乘法表是数学学习的基础,今天我们就来看看乘法表的相关问题。《九九乘法歌诀》,又常称为“小九九”,如下图所示。你的任务是写一个程序,对于给定的一个正整数 n ,输出“九九乘法表”的前 n 行。例如,输入 n 为 9,你的程序的输出将为下图:
输入格式:
输入包含多组测试数据,以 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
代码:
try:
while True:
n = int(input())
for row in range(1, n + 1):
for col in range(1, row + 1):
if col < row:
print("%d*%d=%d" % (col, row, col * row), end=" ")
else:
print("%d*%d=%d" % (col, row, col * row), end="")
print()
except EOFError:
pass
7-20 sdut-平方数(I)
飞飞特别喜欢平方数,可是他数学并不好,你能帮他计算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
代码:
def issquare(x) -> bool:
root = int(x ** 0.5)
return x == root ** 2
n = int(input())
for i in range(n):
a, b = map(int, input().split())
if a > b:
a, b = b, a
sum = 0
for j in range(a, b + 1):
if issquare(j) is True:
sum += j
print(sum)
7-21 sdut-求交错序列前N项和
编写程序,计算交错序列 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())
ls = [i / (2 * i - 1) if i % 2 == 1 else -i / (2 * i - 1) for i in range(1, n + 1)]
print("%.3f" % sum(ls))
7-22 sdut-生成输入数的乘方表
输入一个非负数和正整数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, b = map(float, input().split())
for i in range(0, int(b) + 1):
print("%.1f**%d=%.2f" % (a, i, a ** i))
7-23 sdut-判断素数
判断一个给定的正整数是否素数。
输入格式:
输入在第一行给出一个正整数N(≤ 10)。
随后N行,每行给出一个小于1000000 的需要判断的正整数。
输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出:Yes;否则输出No。
输入样例:
3
11
111
10
输出样例:
Yes
No
No
代码:
'''
def IsPrime(n): # 利用数论优化的素数判断
if n == 2 or n == 3:
return True
if n % 6 != 1 and n % 6 != 5:
return False
for i in range(5, int(n ** 0.5) + 1, 6):
if n % i == 0 or n % (i + 2) == 0:
return False
return True
'''
def IsPrime(n): # 常用的素数判断
if n == 0 or n == 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
n = int(input())
for i in range(n):
num = int(input())
if IsPrime(num) is True:
print("Yes")
else:
print("No")
7-24 sdut-水仙花数
水仙花数是指一个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
代码:
n = int(input())
for i in range(10 ** (n - 1), 10 ** n):
s = str(i)
num_sum = sum([int(each) ** n for each in s])
if num_sum == i:
print(i)
7-25 sdut-最大公约数和最小公倍数
给定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
代码:
from math import *
try:
while True:
a, b = map(int, input().split())
print("%d %d" % (gcd(a, b), a * b / gcd(a, b)))
except EOFError:
pass
7-26 sdut-求分数序列前N项和
计算序列 2/1+3/2+5/3+8/5+...
的前N项之和。
说明:该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
在一行中给出一个正整数N。
输出格式:
在一行中输出求得的和的值,精确到小数点后两位。
(题目保证计算结果不超过双精度范围。)
输入样例:
20
输出样例:
32.66
代码:
n = int(input())
a, b, sum = 1, 1, 0
for i in range(n):
s = a
a = a + b
b = s
sum += a / b
print("%.2f" % sum)
7-27 sdut-求满足条件的斐波那契数
斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。
输入格式:
在一行输人一个正整数n(n>=10)。
输出格式:
在一行输出大于n的最小斐波那契数。
输入样例:
10
输出样例:
13
代码:
n = int(input())
Fib, i = [5, 8], 2
while True:
if max(Fib) < n:
Fib.append(Fib[i - 1] + Fib[i - 2])
i += 1
else:
print(max(Fib))
break
7-28 sdut-冒泡排序中数据交换的次数
听说过冒泡排序么?一种很暴力的排序方法。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。
输入格式:
第一行为一个正整数 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
代码:
def bubbleSort(arr):
n, cnt = len(arr), 0
for i in range(n - 1):
for j in range(n - 1 - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
cnt += 1
return cnt
n = int(input())
for i in range(n):
ls = [int(num) for num in input().split()]
del ls[0]
print(bubbleSort(ls))
7-29 sdut-单链表数据的拆分
输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表:
第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。
两个子链表中数据的相对次序与原链表一致。
输入格式:
第一行输入整数N;
第二行依次输入N个整数,中间用空格隔开。
输出格式:
第1行分别输出偶数链表与奇数链表的元素个数;
第2行依次输出偶数子链表的所有数据;
第3行依次输出奇数子链表的所有数据。
输入样例:
10
1 3 22 8 15 999 9 44 6 1001
输出样例:
4 6
22 8 44 6
1 3 15 999 9 1001
代码:文章来源:https://www.toymoban.com/news/detail-470965.html
n = int(input())
ls = [int(num) for num in input().split()]
ls1 = [int(n1) for n1 in ls if n1 % 2 == 0]
ls2 = [int(n2) for n2 in ls if n2 % 2 != 0]
print(len(ls1), len(ls2))
print(*ls1, sep=' ')
print(*ls2, sep=' ')
因为这学期刚学Python,就当是做个笔记了,代码虽然都能过,但可能不是特别好,有不当的地方欢迎指正,感谢大家的耐心阅读
212丨acc丨2022.10.25文章来源地址https://www.toymoban.com/news/detail-470965.html
到了这里,关于SDUT—Python程序设计实验三(流程控制)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!