一.程序填空题

1.随机数列表中的偶数

以下程序用于实现:创建一个20个数的列表,其元素为1000~5000的随机整数,按每行3个、每个数后有一空格的格式从大到小输出其中的偶数。
输出格式如下

输出样例:

4968 3872 3774
3698 2342 1990
1522 1302

请复制以下代码在IDLE中完成填写并调试,正确后再填入本题空白处。

from (1) import *
mylist=[]
for i in range(20):
    x=(2)
    (3)(x)
    (4)
count=0
for x in mylist:
    if(5):
        count+=1
        print(x,end=' ')
        if (6):
            print()

答案

1.random
2.randint(1000,5000)
3.mylist.append
4.mylist.sort(reverse=True)
5.x%2==0
6.count%3==0 and count!=0





二.函数题

6-1 jmu-java&python-统计字符个数

编写程序统计1行字符串中:

不同字符的个数。
每种字符出现的次数。
函数接口定义:

Freq(line) 

函数功能:该函数统计不同字符出现的次数,并最后按照字符升序进行输出。输出格式见输出样例。
参数说明:line为需要统计的字符串。

裁判测试程序样例:

/* 请在这里填写答案 */
line = input()
Freq(line)

输入样例:

abc 123 adex!!!

输出样例:

11
  = 2
! = 3
1 = 1
2 = 1
3 = 1
a = 2
b = 1
c = 1
d = 1
e = 1
x = 1

输出格式说明:
第1行输出不同字符的个数。
=两边应有空格。
上述输出样例中第2行的字符是空格。
输出按照字符升序排列。

代码示例

def Freq(line):

    freq_dict = {}  # 用于存储字符及其出现次数的字典

    for char in line:

        if char in freq_dict:

            freq_dict[char] += 1

        else:

            freq_dict[char] = 1

    distinct_chars = sorted(freq_dict.keys())  # 按字符升序排序

    print(len(distinct_chars))  # 输出不同字符的个数

    for char in distinct_chars:

        print(char, '=', freq_dict[char])






6-2 sdut-使用函数求a+aa+aaa++⋯+aa.....aaa(n个a)之和。

给定两个均不超过9的正整数a和n,要求:编写函数fn(a,n), 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列之和。

函数接口定义:

def fn(a,n):

其中, a 和 n 都是传入的参数。 a 的值在[1, 9]范围;n 是[1, 9]区间内的个位数。函数返回数列之和。

裁判测试程序样例:


/* 请在这里填写答案 */

a,b=input().split()
s=fn(int(a),int(b))
print(s)

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

2 3

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

246

代码示例

def fn(a,n):
    linshi=a
    sum=a
    for i in range(1,n):
        linshi=linshi*10+a
        sum+=linshi
    return sum






6-3 sdut-使用函数统计数字字符在某数字中出现的个数

设计函数,统计数字字符在某数字中出现的个数。

函数接口定义:

CountDigit(number,digit )

其中,number是整数,digit为[1, 9]区间内的整数数值;返回number中digit出现的次数。

裁判测试程序样例:

/* 请在这里填写答案 */

number,digit=input().split()
number=int(number)
digit=int(digit)
count=CountDigit(number,digit )
print("Number of digit 2 in "+str(number)+":",count)

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

-21252 2

输出样例:

Number of digit 2 in -21252: 3

代码示例

def CountDigit(number,digit ):
    sum=0
    number=str(number)
    digit=str(digit)
    for i in number:
        if i == digit:
            sum+=1
    return sum





三.编程题

7-1 计算某天距元旦的天数

输入年、月、日,要求输出该年份的元旦到该日期总共经过了多少天。(提示:闰年是指能被400 整除的年份或者能被4 整除但不能100 整除的年份)

输入格式:
输入n,代表接下来要输入n行的年、月、日。

然后输入n行年、月、日,年、月、日之间的元素以空格相分隔,第1个数据为年,第2个数据为月,第3个数据为日。

输出格式:
如果输入年月日正确,则输出:Totaldays=天数

如果输入年月日有错,则输出:ErrorInput

输入样例:

4
2000 13 10
2000 3 10
2012 3 10
2018 5 20

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

ErrorInput
Totaldays = 70
Totaldays = 70
Totaldays = 140

代码示例

import datetime

n = int(input())
for _ in range(n):
    try:
        year, month, day = map(int, input().split())
        date = datetime.date(year, month, day)
        start_date = datetime.date(year, 1, 1)
        total_days = (date - start_date).days + 1
        print("Totaldays =", total_days)
    except ValueError:
        print("ErrorInput")





7-2 按日期排序

输入若干日期,按日期从小到大排序。

输入格式:
本题只有一组测试数据,且日期总数不超过100个。按“MM/DD/YYYY”的格式逐行输入若干日期。

输出格式:
按“MM/DD/YYYY”的格式输出已从小到大排序的各个日期,每个日期占一行。

输入样例:

12/31/2005
10/21/2003
02/12/2004
11/12/1999
10/22/2003
11/30/2005

输出样例:

11/12/1999
10/21/2003
10/22/2003
02/12/2004
11/30/2005
12/31/2005

代码示例

import datetime

dates = []

# 循环读取日期

while True:

    try:

        date_str = input().strip()

        if date_str == "":

            break

        dates.append(date_str)

    except EOFError:

        break

# 转换日期字符串为日期对象

date_objects = []

for date_str in dates:

    try:

        date_object = datetime.datetime.strptime(date_str, "%m/%d/%Y")

        date_objects.append(date_object)

    except ValueError:

        print("ErrorInput")

        exit()

# 按照日期从小到大排序

sorted_dates = sorted(date_objects)

# 输出排序后的日期

for date_object in sorted_dates:

    date_str = date_object.strftime("%m/%d/%Y")

    print(date_str)






7-3 按格式输出日期

本题目要求输入代表日期的3个整数Y(年)、M(月)和D(日),然后以指定格式输出日期。

输入格式:
输入代表日期的3个合法整数Y(年)、M(月)和D(日)。

输出格式:
以指定的三种格式输出日期。

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

2021
3
1

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

2021-3-1
2021/3/1
2021年3月1日

代码示例

nian=int(input())
yue=int(input())
ri=int(input())
print('%d-%d-%d'%(nian,yue,ri))
print('%d/%d/%d'%(nian,yue,ri))
print('%d年%d月%d日'%(nian,yue,ri))






7-4 明天几号?

输入今天的日期,输出明天的日期。

输入格式:
输入3个用“/”隔开的整数,分别表示今天日期的年份、月份、日子。题目保证日期正确。

输出格式:
输出3个用“/”隔开的整数,分别表示明天日期的年份、月份、日子。

输入样例:

2019/2/7

输出样例:

2019/2/8

代码示例

import datetime

# 输入今天的日期

year, month, day = map(int, input().split('/'))

# 构造日期对象

today = datetime.date(year, month, day)

# 计算明天的日期

tomorrow = today + datetime.timedelta(days=1)

# 输出明天的日期

print(f"{tomorrow.year}/{tomorrow.month}/{tomorrow.day}")






7-5 jmu-python-简单计算器

输入一个表达式字符串,计算其结果

输入格式:
行1:输入字符串数目
下面分别输入要计算的表达式
输出格式:
输出计算结果,结果保留2位小数。对于异常数据能输出相应异常信息。

输入样例1:

4
1+1
56-23
5/3
5*3.5

输出样例1:

2.00
33.00
1.67
17.50

输入样例2:

3
ab+23
2/0
23+36f

输出样例2:

NameError
ZeroDivisionError
SyntaxError

代码示例

# 输入字符串数目

n = int(input())

# 循环处理每个表达式

for _ in range(n):

    # 输入表达式

    expression = input()

    try:

        # 计算表达式结果

        result = eval(expression)

        # 输出结果,保留2位小数

        print(f"{result:.2f}")

    except (NameError, ZeroDivisionError, SyntaxError) as e:

        # 输出异常信息

        print(type(e).__name__)






7-6 JMU-Python-分段函数

本题目要求根据以下分段函数的定义,计算输入的x对应的y值,输出结果保留两位小数;如果输入的x是非数值型数据,输出'Input Error'。注意:使用math库
PTA-python实验6
输入格式:
在一行中输入x的值。

输出格式:
按“f(x) = result”的格式输出,其中x与result都保留两位小数,注意'='两边有空格。

如果输入的x是非数值型数据,输出:Input Error

输入样例1:
4
输出样例1:
f(4.00) = 3.39
输入样例2:
-6
输出样例2:
f(-6.00) = 0.00
输入样例3:
x
输出样例3:
Input Error

代码示例

fx=0
import math

try:
    x=eval(input())
    if x>0:
        fx=math.log(x)+x**0.5
        print('f(%.2f) = %.2f'%(x,fx))
    elif x<=0:
         print('f(%.2f) = %.2f'%(x,fx))
except:
    print('Input Error')

7-7 try-except异常

本题目要求读入2个整数A和B,然后输出它们的商,并保留2位小数;对于不合法的输入,则输出相应的异常信息。

输入格式:
输入2个绝对值不超过1000的整数A和B。

输出格式:
对每一组输入,在一行中输出A/B的值或相应的异常信息。

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

5
3

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

您输入的两个数相除的结果是:1.67

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

数值错误:程序只能接收整数参数

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

5
0

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

算术错误

代码示例

try:
    a=int(input())
    b=int(input())
    if b==0:
        print("算术错误")
    else:
        print("您输入的两个数相除的结果是:%.2f"%(a/b))
except:
    print('数值错误:程序只能接收整数参数')