一.程序填空题
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库
输入格式:
在一行中输入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('数值错误:程序只能接收整数参数')
停留在世界边缘,与之惜别