Python_3

Python_3

  • 7-1 又见A+B(2) (10 分)
  • 7-2 又见A+B(1) (10 分)
  • 7-3 输入输出练习(2) (10 分)
  • 7-4 Catalan数 (10 分)
  • 7-5 字符梯形 (10 分)
  • 7-6 删除列表中的重复值 (5 分)
  • 7-7 sdut-最大公约数和最小公倍数 (10 分)
  • 7-8 奇数的和 (10 分)
  • 7-9 不按常理出牌的列表 - 实验4 装番茄和啤酒的容器 - 《Python编程实验》 (10 分)
  • 7-10 三天打渔、两天晒网 - 实验7 简单的循环程序 - (10 分)
  • 都看到这了,请点个赞吧

7-1 又见A+B(2) (10 分)


求两个整数之和。

输入格式:
测试数据有多组,处理到文件尾。每组测试输入两个整数a、b。

输出格式:
对于每组测试,输出一行,包含一个整数,表示a、b之和。

输入样例:
1 2
3 4
5 6
输出样例:
3
7
11

仅供参考

while True:
    try:
        x,y=map(int,input().split())
        s=x+y
        print(s)
    except:
        break

7-2 又见A+B(1) (10 分)

求两个整数之和。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入两个整数a、b。

输出格式:
对于每组测试,输出一行,包含一个整数,表示a、b之和。

输入样例:
3
1 2
3 4
5 6
输出样例:
3
7
11

仅供参考

T=eval(input())
while T:
    try:
        x,y=map(int,input().split())
        s=x+y
        print(s)
        T-=1
    except:
        break

7-3 输入输出练习(2) (10 分)


测试数据有多组,处理到文件尾。每组测试求n个整数之和。

输入格式:
测试数据有多组,处理到文件尾。每组测试数据在一行上先输入数据个数n,然后再输入n个整数,数据之间以一个空格间隔。

输出格式:
对于每组测试,在一行上输出n个整数之和。

输入样例:
4 1 2 3 4
5 1 8 3 4 5
输出样例:
10
21

仅供参考

import sys

for line in sys.stdin:
    if line == '\n':
        break
    ls = list(line.split())
    del ls[0]
    l=[]
    for x in ls:
        l.append(eval(x))
    s = sum(l)
    print(s)


7-4 Catalan数 (10 分)


把n的Catalan(卡特兰)数表示为h(n),则有h(1)=1,h(n)=C(2n,n)/(n+1)(n>1)。C(n,m)表示组合数;例如,当n=5、m=2时,组合数C(5,3)=(5×4×3)/(3×2×1)=10。

输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个正整数n(1 ≤n ≤ 100)。

输出格式:
对于每组测试,在一行上输出n的Catalan数h(n)。

输入样例:
3
输出样例:
5

仅供参考
在python2下通过

import sys

for line in sys.stdin:
    n = int(line)
    if n < 1 or n > 100:
        break
    m = 2 * n
    u = d = 1
    for x in range(n):
        u *= m - x
        d *= n - x
    h = int(u / d / (n + 1))
    print(h)
    if line == '\n':
        break

7-5 字符梯形 (10 分)


用从m到n的数字字符排列出一个字符梯形。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入2个整数m、n(1≤m≤n≤9)。

输出格式:
对于每组测试数据,输出一个有n-m+1行的,由数字m…n排列而成的梯形,每行的长度依次为:m,m+1,m+2,……,n,每行的数字依次是m,m+1,m+2,……,n。

输入样例:
1
3 6
输出样例:
333
4444
55555
666666

仅供参考

T = int(input())
for t in range(T):
    m, n = map(int, input().split())
    for x in range(m, n + 1):
        for y in range(x):
            print(x, end="")
        print()

7-6 删除列表中的重复值 (5 分)


输入一个列表,删除其中的重复值,再输出。
要求
假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个。 不同元素在列表中的相对位置不应被改变。

输入格式:
[元素1, 元素2, ... , 元素n]

输出格式:
[元素1,元素2, ... , 元素k]

输入样例:
[4,3,2,3,2,4,True]
结尾无空行
输出样例:
[3, 2, 4, True]
结尾无空行

仅供参考

list1 = eval(input())
list1.reverse()                       
list2 = ['']
for i in list1:
    if i not in list2:
        list2.insert(0, i)            
list2.pop()                            
print(list2)

7-7 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
结尾无空行

仅供参考

import sys


def gongyue(a, b):
    while (b != 0):
        temp = a % b
        a = b
        b = temp
    return a


def gongbei(a, b):
    return a * b / gongyue(a, b)

ls1 = []
ls2 = []

while True:
   try:
        m, n = map(int, input().split())
        ls1.append(gongyue(m, n))
        ls2.append(int(gongbei(m, n)))
   except:
       break

for i in range(len(ls1)):
    if (i == len(ls1) - 1):
        print(ls1[i], ls2[i], sep=" ", end="")
    else:
        print(ls1[i], ls2[i], sep=" ")

7-8 奇数的和 (10 分)


输入n,求[1,n]范围内的所有奇数之和。

输入格式:
测试数据有多组。每组测试数据输入一个整数n(0<n<1000)。若n=0,则输入结束。

输出格式:
对于每组测试,求[1,n]中的奇数之和。

输入样例:
10
9
0
输出样例:
25
25

仅供参考

import sys

for line in sys.stdin:
    n = int(line)
    if n ==0 :
        break
    sum=0
    for i in range(1,n+1):
        if i%2==1:
            sum+=i
    print(sum)

7-9 不按常理出牌的列表 - 实验4 装番茄和啤酒的容器 - 《Python编程实验》 (10 分)


下述程序从键盘读入多个以逗号分隔的元素并将其组织在一个列表中,然后遍历列表删除其中重复的元素。具体地,假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个,不同元素在列表中的相对位置不应被改变。

v = list(eval(input()))
print("before:",v)

for x in v:
    cnt = v.count(x)
    if cnt >= 2:
        for i in range(cnt-1):
            v.remove(x)

print("after:",v)
上述程序的运行结果为(第一行为测试输入):

4, 3, 2, 3, 2, 4, True
before: [4, 3, 2, 3, 2, 4, True]
after: [3, 3, 2, 4, True]
对照上述执行结果的第2行及第3行,显然程序的执行结果不符合设定目标。原列表中的3保留了两个!


【错误分析】
程序在遍历循环(第4行)的内部执行了移除列表元素的操作(第8行)。一边遍历列表一边修改列表甚至删除列表元素可能使得遍历发生混乱,产生意料之外的结果。 


请修改上述程序,使其可以正常工作。

输入格式:
由逗号分隔的多个值

输出格式:
参考输出样例,注意不同元素在列表中的相对位置不应被改变

输入样例:
4, 3, 2, 3, 2, 4, True
结尾无空行
输出样例:
before: [4, 3, 2, 3, 2, 4, True]
after: [3, 2, 4, True]
结尾无空行

仅供参考

v = list(eval(input()))
print("before:",v)
v.reverse()                        
vv = ['']
for i in v:
    if i not in vv:
        vv.insert(0, i)            
vv.pop()                           

print("after:",vv)

7-10 三天打渔、两天晒网 - 实验7 简单的循环程序 - (10 分)


郭、王两位大侠同上终南山习武,两人最初的战力值均为100。王大侠骨骼清奇,天赋较高,每练功一天,战力增加2‰,郭大侠比较愚笨,每练功一天,战力增加1‰。如果休假一天不练,两人的战力均减少1‰。相较于王大侠,郭大侠更加勤奋,日日练功,从不休息,而王大侠,则三天打渔,两天晒网,也就是每5天的前三天练功,后两天休假。

请编写程序,计算N天之后,郭大侠和王大侠战力分别是多少?

输入格式:
整数N

输出格式:
郭的战力值,王的战力值

说明:均保留5位小数,以英文逗号分隔

输入样例:
5
结尾无空行
输出样例:
100.50100,100.40010
结尾无空行

仅供参考

N=int(input())
g=w=100
g=g*pow(1.001,N)
for i in range(N):
    if i%5<3:
        w=w*1.002
    if i%5>2:
        w=w*0.999
print("%.5f,%.5f"%(g,w),end="")

都看到这了,请点个赞吧

你可能感兴趣的:(Python,python)