Python实验二 程序流程控制

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

while(1):
    try:
        n, m = map(int, input().split())
        if n > 0 and m > 0 :
            print(1)
        elif n < 0 and m > 0 :
            print(2)
        elif n < 0 and m < 0 :
            print(3)
        elif n > 0 and m < 0 :
            print(4)
    except:
        break

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

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



7-3 sdut-运输计费问题

import math
n, m = map(float, input().split())
s = 1.0
if m >= 250 and m < 500 :
    s = 1.0 - 0.02
elif m >= 500 and m < 1000 :
    s = 1.0 - 0.05
elif m >= 1000 and m < 2000 :
    s = 1.0 - 0.08
elif m >= 2000 and m < 3000 :
    s = 1.0 - 0.10
elif m >= 3000 :
    s = 1.0 - 0.15

sum = float(n * m * s)
print("%d" %(round(sum)))

7-4 sdut-阶梯电价

import math
n, m = map(float, input().split())
sum = min(n*0.53, 50.0*0.53)
if n > 50.0 :
    sum += (n - 50.0) * (0.53 + m)
if n <= 0.0 :
    sum = 0.0
print("cost=%.2f"  %(sum))

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

x = float(input())
if x <= 15.0 :
    y = 4.0*x/3.0
else :
    y = 2.5*x-17.5
print("%.2f" %(y))

7-6 sdut-循环-乘法运算

x = int(input())
for i in range (1, x + 1) :
    now = i*x
    print("%d*%d=%d" %(i, x, now))

7-7 sdut-求π的近似值

import math
x = float(input())
cnt = float(2)
sum = float(1.0)
while(1) :
    if 1.0/(cnt*cnt) < x :
        break
    sum += 1/(cnt*cnt)
    cnt += 1
sum *= 6.0
sum = math.sqrt(sum)
print("%.6f" %(sum))


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

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)

n = int(input())
while(n > 0) :
    n -= 1
    a, b = map(int, input().split())
    print(a + b)

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


while 1 :
    n, m = map(int, input().split())
    if n == 0 and m == 0 :
        break
    print(n + m)

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

while 1:
    lis = [int(num) for num in input().split()]
    if lis[0] == 0 :
        break
    sum = 0
    for i in lis:
        sum += int(i)
    sum -= lis[0]
    print(sum)

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


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

7-13 sdut-九九乘法表

while 1 :
    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)

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项和

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-生成输入数的乘方表

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-水仙花数

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-最大公约数和最小公倍数

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-求满足条件的斐波那契数

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-冒泡排序中数据交换的次数

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)

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值