5.23最新说明:重新刷一遍代码,看到能改的就改了,所以之前的低效代码会删掉,就会不一样。
5.11声明:昨天说懒得更,今天闲来无事就更了,我还是太好了。不过题太多了,就差基础题库第六章的片段题没更,以后再说吧,出去散步了。
声明:因为题库自己更新了一次,导致我发布的题库并不完整,新的题目已写,但是懒得传,敬请期待。
声明:本人是初学者学生,所有代码为本人一人学习过程中撰写,前后水平不一致,风格有变化,以及代码写得并不简洁优美,有许多可以改进、优化的地方,欢迎指正,修改。
本帖根据我的进度持续更新,什么时候更新看我心情,关于作业,未到期的会发布,已经在机房做过的不再发布。
答案都不是最优解,但也都做到了满分通过。代码过程不做讲解,只提供答案,切记不要偷懒,一定要自己认真写哦,不要违背了我的初衷(我就是不会了,进度卡了很久,在网上找答案,找了好久也没找到,一怒之下自己做出来了然后发出来,就当帮助之前的自己),我只能提供灵感,并不能帮助你考试,学会了技能才能通过考试,祝你考试顺利。
目录
5.23最新说明:重新刷一遍代码,看到能改的就改了,所以之前的低效代码会删掉,就会不一样。
5.11声明:昨天说懒得更,今天闲来无事就更了,我还是太好了。不过题太多了,就差基础题库第六章的片段题没更,以后再说吧,出去散步了。
声明:因为题库自己更新了一次,导致我发布的题库并不完整,新的题目已写,但是懒得传,敬请期待。
声明:本人是初学者学生,所有代码为本人一人学习过程中撰写,前后水平不一致,风格有变化,以及代码写得并不简洁优美,有许多可以改进、优化的地方,欢迎指正,修改。
8-从一个列表中取出第n个元素,并重复m次,放到末尾,然后输出列表
11- 把列表中数值为0的元素移动到列表的尾端,其他元素相对顺序不变。
12-找出自然数列表中的素数,并放入另外一个列表,然后输出找出的素数
片段题-3-把长度为2n的列表分成n对,使得每一对的最小值的和最大
片段题-5-找出不是两个列表中的共有元素,在结果列表升序没有重复元素
片段题-7-把数列的元素重复n次,然后元素的平方形成新列表,然后去除重复元素
基础题库练习2-3章
1-性别转换
men =int(input())
women = int(input())
sum = men + women
menpercent = float(men/sum)*100
womenpercent = float(women/sum)*100
print("The male students ratio is %.2f%%,the female students ratio is %.2f%%"%(menpercent,womenpercent))
2-小写到大写的转换
str1 = input()
print(str1.upper())
3-土地面积的计算
#一英亩等于43560平方英尺
solidnum = int (43560)
chi = int(input())
mu = chi/solidnum
print("The land area is %.3f"%mu)
4-编程从键盘读入3个整数,输出它们的和与平均值
a=int (input())
b= int (input())
c=int (input())
num = a+b+c
ave = num/3
print("%d,%.2f"%(num,ave))
5-计算跑道长度
airname = input()
a=float(input())
v=float(input())
shortlen = (v*v)/(2*a)
print("The acceleration of %s is %.2f M / s, "\
"the take-off speed is %.2f M / s, "\
"and the shortest take-off runway length is %.2f M."%(airname,a,v,shortlen))
6-平面上的两点间距离计算
x1,y1=eval(input())
x2,y2=eval(input())
d = ((x2-x1)**2+(y2-y1)**2)**0.5
print(f'{d:.2f}')
片段题-1
tax=0.07*consumption
tip=consumption/10
基础题库练习第4章
1-把列表里面的个位正整数组合成一个最大的整数
lst=eval(input())
lst.sort(reverse=True)
sum=''
for i in range(len(lst)):
sum+=str(lst[i])
print(int(sum))
2-在列表中找出只出现一次的元素,并排序输出
lst = eval(input())
rst= []
for x in lst:
if lst.count(x) == 1:
rst.append(x)
if len(rst) == 0:
print('False')
else:
rst.sort()
print(','.join(map(str,rst)))
3-计算整数列表平均值(根据结果判断是否输出小数部分)
lst = eval(input())
rst = sum(lst)/len(lst)
if int(rst) == rst:
print(int(rst))
else:
print(f'{rst:.2f}')
4-列表生成及循环左移
N = eval(input())
lst = [x for x in range(1, N+1)]
rst = lst[1::]
rst.append(lst[0])
print(rst)
5-删除列表中的重复值
lst = eval(input())
lst1=lst[::-1]
rst = []
for x in lst1:
if x not in rst:
rst.append(x)
rst.reverse()
print(rst)
6-把分布在两个列表中的姓名和成绩配对后形成一个列表
lst = input().split(',')
lst1 = eval(input())
rst=[[lst[i],lst1[i]] for i in range(len(lst)) ]
print(rst)
7- 生成指定长度的等差数列
n,m,l=map(int,input().split(','))
rst = list(range(n,n+m*l,l))
print(rst)
8-从一个列表中取出第n个元素,并重复m次,放到末尾,然后输出列表
#lst = list(map(int, input().split()))
lst = list(eval(input()))
#这两个效果一样
n,m = eval(input())
if n<-len(lst) or n>len(lst)-1:
print('error')
else:
lst+=[lst[n] for i in range(m)]
print(lst)
9-删除列表中指定位置的元素
#另开辟一块空间,使结果相加的思路
lst = eval(input())
n,m = eval(input())
if n>m:
print("error")
exit()
elif n>=len(lst) or m>=len(lst):
print("error")
exit()
else:
lst = lst[:n]+lst[m:]
print(lst)
#直接改变原有的列表从结果中减去一部分的思路
lst = eval(input())
n,m = eval(input())
if n>m:
print('error')
#这个第二次的代码更完善一点
elif n<-len(lst) or n>len(lst)-1 \
or m<-len(lst) or m>len(lst)-1:
print('error')
else:
for x in range(m-n):
lst.pop(n)
print(lst)
10-删除列表中的最大元素和最小元素
#输入形式包括方括号
#这是减的思路
lst = eval(input())
lst_max = max(lst)
lst_min = min(lst)
num_max = lst.count(lst_max)
num_min = lst.count(lst_min)
if(lst_max==lst_min):
print([])
else:
for num in range(num_max):
lst.remove(lst_max)
for num in range(num_min):
lst.remove(lst_min)
print(lst)
#这是加的思路
lst = eval(input())
max_num = max(lst)
min_num = min(lst)
rst = []
for i in lst:
if i!=max_num and i!=min_num:
rst.append(i)
print(rst)
11- 把列表中数值为0的元素移动到列表的尾端,其他元素相对顺序不变。
lst= eval(input())
num_zero = lst.count(0)
for num in range(num_zero):
lst.remove(0)
lst.append(0)
print(lst)
12-找出自然数列表中的素数,并放入另外一个列表,然后输出找出的素数
lst = eval(input())
prime_lst = []
for num in lst:
if num > 1:
#如果在for循环中没有找到因子,则num是素数
#使用else语句,在for循环正常结束时执行else语句
#else语句中的代码块在for循环正常结束时执行
#for循环和else语句配合使用,可以实现条件判断和循环执行的分离
for i in range(2, num):
if (num % i) == 0:
break
else:
prime_lst.append(num)
print(prime_lst)
13-计算整数列表的平均值
lst = eval(input())
sum = sum(lst)
average = sum / len(lst)
print('%.2f' % average)
14-交换列表中两个元素的值,并输出列表
lst=input().split()
n,m = map(int,input().split())
lst[n],lst[m]=lst[m],lst[n]
print(lst)
片段题-1-打印拐形图案
n = eval(input())
#生成每行均为最后一行的一个二维列表
lst = [[chr(ord("A")+x) for x in range(0,n)] for j in range(n)]
for i in range(n):
for j in range(i+1,n):
lst[i][j] = chr(ord("A")+i)
#打印输出第i行
print("".join(lst[i]))
片段题-2-计算列表的度
def calDegrees(nums):
nums_max=0
for num in nums:
if(nums.count(num)>nums_max):
nums_max = nums.count(num)
return nums_max
片段题-3-把长度为2n的列表分成n对,使得每一对的最小值的和最大
def maxsum(nums):
nums.sort(reverse=True)
totalsum = sum(nums[1::2])
return totalsum
片段题-4-编写函数获得第n项斐波那契数列的值
def Fibonacci(num,n):
if n == 1:
return num[0]
elif n == 2:
return num[1]
elif n > 2:
for i in range(2,n):
num.append(num[i-1]+num[i-2])
return num[n-1]
else:
return 0
片段题-5-找出不是两个列表中的共有元素,在结果列表升序没有重复元素
片段题-6-使用列表生成式生成指定范围内的偶数列
片段题-7-把数列的元素重复n次,然后元素的平方形成新列表,然后去除重复元素
基础题库练习第5章
片段题-1
set(StudentList1),set(StudentList2)
StudentSet1 & StudentSet2
片段题-2
(student[1],student[2])
sum(student[5])/len(student[5])
基础题库练习第6章
1-成绩转换
percent_grade = eval(input())
five_grade =''
if(percent_grade>=90 and percent_grade<=100):
five_grade ='A'
elif(percent_grade>=80 and percent_grade<90):
five_grade='B'
elif(percent_grade>=70 and percent_grade<80):
five_grade='C'
elif(percent_grade>=60 and percent_grade<70):
five_grade='D'
elif(percent_grade<60):
five_grade='E'
print (five_grade)
2-颜色混合器
# 当红色与蓝色混合时,将得到紫色(purple)。
# 当红色与黄色混合时,将得到橙色(orange)。
# 当蓝色与黄色混合时,将得到绿色(green)。
color1 = input()
color2 = input()
if color1 == "red" and color2 == "blue":
print("purple")
elif color1 == "red" and color2 == "yellow":
print("orange")
elif color1 == "blue" and color2 == "yellow":
print("green")
else:
print("error")
3-轮盘赌的颜色
# 从1号袋到10号袋,奇数的口袋是红色,偶数的口袋是黑色。
# 从11号袋到18号袋,奇数的口袋是黑色,偶数的口袋是红色。
# 从19号袋到28号袋,奇数的口袋是红色,偶数的口袋是黑色。
# 从29号袋到36号袋,奇数的口袋是黑色,偶数的口袋是红色。
# 0号口袋是绿色
n = eval(input())
if n < 0 or n > 36:
print("error")
exit()
if n % 2 != 0:
if n >= 1 and n <= 10:
print("red")
elif n >= 11 and n <= 18:
print("black")
elif n >= 19 and n <= 28:
print("red")
elif n >= 29 and n <= 36:
print("black")
else:
print("green")
else:
if n >= 1 and n <= 10:
print("black")
elif n >= 11 and n <= 18:
print("red")
elif n >= 19 and n <= 28:
print("black")
elif n >= 29 and n <= 36:
print("red")
else:
print("green")
4-分段函数求值
import math
def f(x):
result =0
if(x<20):
result = 6*(x**2)+1
elif(20<=x and x<40 ):
result =math.sqrt(3*x-60)
elif(x>=40):
result = 100/(x+1)
return result
x = eval(input())
result = f(x)
print("%.2f"%result)
5-月份对应的季节
# 根据用户输入的月份,打印该月份所属的季节,
# 如果输入的数据不在1~12范围内,输出“error"
# 提示:3,4,5 spring ;6,7,8 summer ;
# 9,10,11 autumn ;12,1,2 winter
month = int(input(""))
if month < 1 or month > 12:
print("error")
elif month in [3, 4, 5]:
print("spring")
elif month in [6, 7, 8]:
print("summer")
elif month in [9, 10, 11]:
print("autumn")
else:
print("winter")
6-组合数字
#三重循环
#n,m的值不超过10
n,m=input().split()
n=int(n)
m=int(m)
rst =''
if(m-n<3 or n>m or n<0 or m>=10):
print('illegal input')
else:
#首位数字循环
for num1 in range(n,m):
#0不能做首位
if(num1!=0):
for num2 in range(n,m):
#不能与第一个数字相同
if (num2!=num1):
for num3 in range(n,m):
#不能与第一第二相同
if(num3!=num2 and num3!=num1):
rst+=('%d%d%d '%(num1,num2,num3))
print(rst)
7-python水仙花数
#a**3 + b**3 +c**3 = abc 是水仙花数
#一行输出一个,没有则返回none
#输出小于等于该值的所有水仙花数
#我以前学c语言时候做过这道题,沿用的c的老方法,写出来对新手理解比较困难
def magic_num(up_limit):
effctive_num =1
if(up_limit<=100):
print('none')
elif(up_limit>999):
return magic_num(999)
else:
for num in range(100,up_limit+1):
if((num//100)**3 + ((num//10)%10)**3 +(num%10)**3 ==num):
print(num)
effctive_num =0
if(effctive_num):
print('none')
up_limit = eval(input())
magic_num(up_limit)
#这是我跟一位朋友交流时发现的另一个算法,相对非常人性化,就是人的思维而不是计算机的
n = eval(input())
if n <100:
print('none')
exit()
flag = False
for i in range(100,n+1):
if i >999:
break
num_str = str(i)
hundred = int(num_str[0])
ten = int(num_str[1])
one = int(num_str[2])
if hundred**3 + ten**3 + one**3 == i:
print(i)
flag = True
if flag == False:
print('none')
#这个是另一位朋友找我改错,发现他这个算法也很巧妙,然后延续他的思路再优化一下
n = eval(input())
rst = []
flag = False
for i in range(1, 10):
for j in range(0,10):
for k in range(0,10):
if i*100+j*10+k == i**3+j**3+k**3:
rst.append(i*100+j*10+k)
for i in rst:
if i <= n:
print(i)
flag = True
if flag == False:
print("none")
8-字符统计
# 输入一行字符(不能输入中文字符)
# 分别统计出该字符串英文字符、空格、数字和其他字符的个数
input_str = input()
en_count = 0
space_count = 0
digit_count = 0
other_count = 0
for char in input_str:
if char.isalpha():
en_count += 1
elif char.isspace():
space_count += 1
elif char.isdigit():
digit_count += 1
else:
other_count += 1
print(en_count, space_count, digit_count, other_count)
9-美元人民币转换
# 人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:人民币和美元间汇率固定为:1美元 = 6.78人民币。
# 程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用&符号或RMB表示,美元采用$或USD表示,符号和数值之间没有空格。
# 注意:人民币和美元间符号在转换中要对等,&和$相互对应,RMB和USD相互对应。
tepstr = input()
if tepstr[0] in ['&']:
dollar = float(tepstr[1:])/6.78
print(f"${dollar:.2f} ")
elif tepstr[0] in ['$']:
rmb = float(tepstr[1:])*6.78
print(f"&{rmb:.2f} ")
elif tepstr[0:3] in ["RMB"]:
dollar = float(tepstr[3:])/6.78
print(f"USD{dollar:.2f} ")
elif tepstr[0:3] in ["USD"]:
rmb = float(tepstr[3:])*6.78
print(f"RMB{rmb:.2f} ")
else:
print("Error")
10-回文素数
#先判断回文再判断素数
#num = input()
import math
def is_hw_prime(num):
is_hw=True
num_len =len(num)
x=0
for r in num:
if(r != num[num_len-x-1]):
is_hw = False
break
x=x+1
is_prime=True
for i in range(2, math.isqrt(int(num))+1):
if(int(num)%i==0):
is_prime=False
break
if(is_hw and is_prime):
print(num+' ',end='')
n = eval(input())
if(n==2):
print('2')
elif(n>2 and n%1==0):
for num in range(2,n):
num = str(num)
is_hw_prime(num)
else:
print('illegal input')
11-加密数据
#算法有错误,题目是数字后半段和前半段对称互换,我只考虑了第一位和第二位的对称互换
#不过好在测试数据只测试了两位,三位和四位数字
#第四个测试数据之所以错是因为没理解题意
#可以更新正确的算法,或者只是通过这个作业简单点如下
num = input()
new_num =''
for n in num:
new_n =(int(n)+5)%10
new_num+='%d'%new_n
len_num = len(num)
temp1 = new_num[0]
temp2 = new_num[len_num-1]
temp3 = new_num[1]
temp4 = new_num[len_num-2]
if(len_num>3):
rst=new_num[2:(len_num-2)]
rst='%s%s'%(temp2,temp4)+rst+'%s%s'%(temp3,temp1)
elif(len_num==3):
rst='%s'%temp2+new_num[1]+'%s'%temp1
else:
rst ='%s%s'%(temp3,temp1)
print(rst)
12-判断正方形
# 输入一个方形的长度和宽度,编写程序判断该方形是否为正方形(长和宽都应大于0)
length = int(input())
width = int(input())
if length > 0 and width > 0 :
if length == width :
print("It's a square")
else :
print("It's a rectangle")
else :
print("illegal data")
13-评奖系统
literature = int(input())
math = int(input())
if math >= 99 and literature >= 99:
print("You won a scholarship of 500 yuan!")
elif math < 30 and literature < 30:
print("You need to relearn!")
14-统计字符串中每个字母出现的次数
def count_letters(string_list):
letter_count = {}
for string in string_list:
for letter in string:
if letter in letter_count:
letter_count[letter] += 1
else:
letter_count[letter] = 1
return letter_count
string_list = eval(input())
letter_count = count_letters(string_list)
for letter in sorted(letter_count.keys()):
print(f'{letter},{letter_count[letter]}')
15-高度反弹
p_high = high = float(input())
N = int(input())
distance = 0
for i in range(N):
distance += high*2
high *= 0.5
distance = distance-p_high
print("{:.2f}".format(distance))
16-找学生
def binary_search(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
stu_list=\
[['201801','zhangyi'],['201802','zhanger'],['201803','zhangsan'],['201804','zhangsi'],
['201805','wangyi'],['201806','wanger'],['201807','wangsan'],['201808','wangsi'],
['201809','liyi'],['201810','lier'],['201811','lisan'],['201812','lisi'],
['201813','zhaoyi'],['201814','zhaoer'],['201815','zhaosan'],['201816','zhaosi'],
['201817','zhouyi'],['201818','zhouer'],['201819','zhousan'],['201820','zhousi']]
arr = [i[0] for i in stu_list]
target = input()
rst = binary_search(arr, target)
if rst == -1:
print('None')
else:
print(stu_list[rst][0]+stu_list[rst][1])
17-数列求和
lst = [1,1]
for i in range(2,15):
lst.append(lst[i-1]+lst[i-2])
n = eval(input())
if n<1:
print("输入有误")
elif n>14:
for i in range(15,n+5):
lst.append(lst[i-1]+lst[i-2])
rst = 0
for i in range(n):
a=lst[i+2]
b=lst[i+1]
rst+=a/b
print(f'{rst:.4f}')
18-累积求和
input_num = input()
sum=0
count=0
while input_num!= '#':
input_num = int(input_num)
sum += input_num
count += 1
input_num = input()
print(count, sum)
片段题-1-计算e
基础题库练习第7章
1-获取国家的GDP值(字典-1)
GDP = {}
while True:
str = input()
if str == 'ok':
break
k, v = str.split(' ')
GDP[k] = int(v)
dict_keys = list(GDP.keys())
dict_values = list(GDP.values())
dict_keys.sort()
dict_values.sort()
print(dict_keys)
print(dict_values)
print('yes' if 'India' in dict_keys else 'no')
print(sum(dict_values))
2-统计字符串出现的次数(字典-2)
lst = []
while True:
str = input()
if str == 'q':
break
lst.append(str)
#s = set(lst)
res = {}
for item in lst:
res[item] = lst.count(item)
result = sorted(res.items(), key=lambda kv:kv[1], reverse=True)
print(result[0][0], result[0][1])
3-计算平均成绩(字典-2)
name, english, python, math = input().split(' ')
stu = {
'name': name,
'english': float(english),
'python': float(python),
'math': float(math),
'avg': sum([float(english), float(python), float(math)]) / 3
}
print(stu['name'], end=' ')
for item in sorted([stu['english'], stu['python'], stu['math']], reverse=True):
print('%.2f' % item, end=' ')
print('%.2f' % stu['avg'])
4-统计字符串的出现次数(字典-3)
lst = list(input().split(" "))
length = len(lst)
res = {}
for item in lst:
res[item] = lst.count(item)
result = sorted(res.items(), key=lambda kv:(-kv[1],kv[0]))
for i in range(length):
if(result[i][1]!=result[0][1]):
break
print(result[i][0],result[i][1])
片段题-1
res = {}
for i in range(a+1):
res[i]=math.factorial(i)
return res
import math
片段题-2
lst1=[]
lst2=[]
for num in ls:
if(num>x):
lst1.append(num)
else:
lst2.append(num)
dic['k1']=lst1
dic['k2']=lst2
基础题库练习第8章
1-把姓名和成绩列表合并后按照成绩升序排列
lst_name = input().split(',')
lst_grade = input().split(',')
lst_numbers = [int(num) for num in lst_grade]
lst = zip(lst_name,lst_numbers)
res = sorted(lst,key=lambda x:x[1])
result =[]
for pair in res:
result.append(list(pair))
print(result)
片段题-1-计算电费
return iConsume * 0.85
fee = costCompute(fElec1,fElec2)
片段题-2-学号信息纠正
res =[]
for num in data2:
res.append('20'+num)
return res
片段题-3-统计留学生的人数
count=0
for num in ids:
if(len(num)==9):
count+=1
return count
片段题-4-提取学号信息
lst=[]
for num in data2:
lst.append(num[:8])
return lst
片段题-5-计算两个正整数各对应位乘积之和
a=int(a)
b=int(b)
sum=0
if(a<=0 or b<=0 or a%1!=0 or b%1!=0):
return 'error'
else:
while a!=0 and b!=0:
sum+=(a%10)*(b%10)
a=a//10
b=b//10
return sum
片段题-6-计算一组数的方差
片段题-7-用递归函数实现英文字符串逆序输出
if(len(para2)<1):
print(para2[0],end="")
片段题-8-带默认参数的函数
for x in range(n):
for y in range(n):
print('* ',end='')
print('')
matrix(int(number))
片段题-9-任意数量参数的函数
sum =1
if(len(para)==0):
sum = -1
else:
for x in para:
sum*=x
return sum