PtaPython练习

一、3位水仙花数计算

1、题目

3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

输入2个正整数m和n(100<=m

请按照从小到大的顺序输出m和n之间的所有的3位水仙花数,请用一个“逗号+空格”分隔输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

注意:这是一个OJ题目,输出格式要严格一致,最后一位水仙花数后没有逗号。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

输入格式:

第一行输入第一个数m

第二行输入第二个数n

输出格式:

示例:634, 412‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

(注意,这两个数字不是水仙花数)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

输入样例:

100
999

输出样例:

153, 370, 371, 407

 2、代码

x = int(input())
y = int(input())
bool1 = True
while x <= y:
    i = x
    n = i
    while i > 0:
        j = i % 10
        n -= j ** 3
        i //= 10
    if n == 0:
        if bool1:
            print(x, end='')
        else:
            print(",", x, end='')
        bool1 = False
    x += 1

二、求1到n之间的奇数之和

1、题目

求1到正整数n之间的奇数之和,输出结果后换行。

输入格式:

输入一个正整数。

输出格式:

输出结果后换行。

输入样例1:

100

输出样例1:

2500

输入样例2:

99

输出样例2:

2500

2、代码

n = int(input())
s = 0
for i in range(n+1):
    if i%2!=0:
        s+=i
print(s)

三、最大公约数

1、题目

求两个正整数m,n的最大公约数(Greatest Common Divisor,简称GCD)。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入2个整数m,n(0

输出格式:

对于每组测试,输出m,n的最大公约数。

输入样例:

2
63 36
20 15

输出样例:

9
5

2、代码

import math

n = int(input())
while n != 0:
    s = input()
    x = int(s.split(" ")[0])
    y = int(s.split(" ")[1])
    print(math.gcd(x, y))
    n-=1

四、Python-列表:将一个列表拆分成两个列表并按升序输出

1、题目 

输入一个由若干正整数组成的列表,将其中的奇数和偶函分别存入另外两个列表中,并将这两个列表按升序输出。

输入格式:

输入一个由若干正整数组成的列表。

输出格式:

按升序输出这两个分别由奇数和偶数构成的列表。

输入样例:

[2,5,8,4,3,7,12,20]

输出样例:

[3, 5, 7]
[2, 4, 8, 12, 20]

2、代码

str = input()
str = str[1:-1]
arr = [int(n) for n in str.split(",")]

arr1 = []
arr2 = []

for i in range(len(arr)):
    if arr[i]%2==0:
        arr2.append(arr[i])
    else:
        arr1.append(arr[i])
arr1.sort()
arr2.sort()
print(arr1)
print(arr2)

五、python字典-将字典的键和值分别存入两个列表并输出

1、题目

输入一个字典,将字典的键和值分别存入两个列表并输出。

输入格式:

以字典形式输入,见输入样例。

输出格式:

分行以列表形式输出字典的键和值,见输出样例。

输入样例:

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

{'a':3, 'c': 6, 'd':1, 'e': 10}

输出样例:

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

['a', 'c', 'd', 'e']
[3, 6, 1, 10]

2、代码

str = input()
dic = {}
dic = eval(str)
list1 = []
list2 = []
list1.extend(dic)
list2.extend(dic.values())
print(list1)
print(list2)

六、含8的数字的个数

1、题目

现代人对数字越来越讲究,都喜欢含有8的数字。现要你编程计算a至b之间的含有数字8的数的个数(比如181,88,8,28这些数都含有数字8,而21,45,49等没有含有数字8)。

输入格式:

在一行中输入两个正整数a和b,用一个空格隔开。0

输出格式:

输出a和b之间含有8的数的个数。包括a和b。

输入样例:

1 30

输出样例:

3

 2、代码

import operator
str1 = input()
arr = [int(n) for n in str1.split(" ")]
n = arr[0]
m = arr[1]
temp = 0
for i in range(n,m+1):
    s = str(i)
    if operator.contains(s,"8"):
        temp += 1
print(temp)

七、统计字符串中数字字符的个数

输入一个字符串,统计其中数字字符('0'……'9')的个数。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

输出所统计的数字字符的个数。

输入样例:

It's 512?

输出样例:

3

2、代码

s = input()
temp  =0
for i in range(len(s)):
    if s[i].isdigit():
        temp += 1
print(temp)

八、从1到n之间所有奇数的阶乘值

已知求阶乘的函数如下,利用这个函数,编程计算并输出1到n之间所有奇数阶乘值。

其中n由用户从键盘输入

long  Fact(int  n)
{
    int  i;
    long result = 1;
    for (i=2; i<=n; i++)
        result *= i;
    return result;
}

输入格式:

用户从键盘输入正整数n的值(不超过12)。

输出格式:

按输出样例的形式输出计算的结果。

输入样例:

10

输出样例:

1! = 1
3! = 6
5! = 120
7! = 5040
9! = 362880

2、代码

def Fact(n):
    result = 1
    for i in range(2, n + 1):
        result *= i;
    return result


n = int(input())
for i in range(n + 1):
    if i % 2 != 0:
        s = 0
        s += Fact(i)
        print(str(i)+"! = " + str(s))

九、Python字典-学生成绩统计

有一个班若干个学生考试的成绩表,由学号和成绩组成,将其组成一个字典如: {'1001':85,'1002':70,'1003':100,'1005':60,'1008':100}。

输出内容:

1. 按成绩从高到低输出成绩表字典;

2. 计算全班的平均分(精确到小数后两位);

3. 输出最高分的同学:学号:成绩。

输入格式:

按字典格式输入

输出格式:

输出成绩表字典、输出平均分、输出最高分。

输入样例:

 {'1001':85,'1002':70,'1003':100,'1005':60,'1008':100}

输出样例:

{'1003': 100, '1008': 100, '1001': 85, '1002': 70, '1005': 60}
平均分=83.00
最高分:
1003:100
1008:100

2、代码

grade = eval(input())
grades = []
ID = []
for i in grade:
    grades.append(grade[i])
    ID.append(i)
for i in range(0,len(grades)):
    for j in range(i,len(grades)):
        if grades[j] > grades[i]:
            g = grades[i]
            id = ID[i]
            grades[i] = grades[j]
            ID[i] = ID[j]
            grades[j] = g
            ID[j] = id
dic = dict(zip(ID,grades))
print(dic)
sum = 0
for k in range(len(grades)):
    sum = sum + grades[k]
average = sum /len(grades)
print("平均分={:.2f}".format(average))
highest = grades[0]
print("最高分:")
for k in range(len(grades)):
    if grades[k] == highest:
        print("{}:{}".format(ID[k],grades[k]))

十、python字典-将字典的值排序输出

1、题目

输入一个字典,将字典的值按升序排序后输出。

输入格式:

以字典形式输入,值必须是数值型,见输入样例。

输出格式:

在一行内输出排序后字典的值,数据间有一个空格,见输出样例。

输入样例:

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

{'a':3, 'c': 6, 'd':1, 'e': 10}

输出样例:

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

1 3 6 10

2、代码

dic = eval(input())
lis = []
lis.extend(dic.values())
lis.sort()
for i in range(len(lis)):
    if i == len(lis)-1:
        print(str(lis[i]))
    else:
        print(str(lis[i]),end=" ")

PtaPython练习_第1张图片

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