python刷题训练集
第一天
1.取近似值
def func():
num = float(input())
res = num + 0.5
f = int(res)
print(f)
func()
2.提取不重复整数
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是 0 。
a = input()
a = a[::-1] #翻转字符串
num = []
for i in a:
if i in num: #重复的就跳过,不写进列表里
continue
else:
num.append(i)
print(i,end='')
3.截取字符串
输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出
while True:
try:
ss = input()
k = int(input())
for m in range(k):
print(ss[m],end="")
except:
break
4.输入n个整数,输出最小的k个
输入n个整数,找出其中最小的k个整数并按升序输出
while True:
try:
m, n = [int(i) for i in input().split()]
num_list = [int(j) for j in input().split()]
num_list.sort()
new_list = num_list[:n]
print(' '.join([str(i) for i in new_list]))
except:
break
5.输入整型数组和排序标识,对其元素按照升序或降序进行排序
n = int(input())
l = list(map(int, input().split())) #将输入的字符串转换成列表
m = int(input())
if m == 0:
l.sort()
l = map(str,l) #将列表转会字符串
print(' '.join(l))
elif m == 1:
l.sort(reverse = True)
l = map(str,l)
print(' '.join(l))
6.计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
while True:
try:
in_str = input()
if len(in_str) > 5000 or len(in_str) == 0:
raise Exception
last = in_str.strip().split(" ")[-1]
leng = len(last)
print(leng)
break
except Exception:
print("字符串非空且长度小于5000,请再次输入:")
7.计算某字符出现次数
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
def ge_num():
fir_line = input()
sec_line = input()
if len(sec_line) == 0 or len(sec_line) >1:
return "第二行填入一个字符:"
leng = len(fir_line.strip().lower().split(sec_line.lower()))-1
return leng
print(ge_num())
8.字符串分隔
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
while True:
try:
l = input()
for i in range(0, len(l), 8): #0-字符串的长度,按8个单位拆分
print("{0:0<8s}".format(l[i:i+8]))
except:
break
9.进制转换
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
while True:
try:
number = input()
n = len(number)
dic = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
final = 0
for i in range(2,n):
final += dic[number[i]]*(16**(n-i-1))
print(final)
except:
break
10.质数因子
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
import math
n = int(input())
for i in range(2, int(math.sqrt(n))+1):
# 一个数可以被它所有的质因子表示
# 这里仅考虑不大于根号下n的因子
# 因为当n被所有不大于根号下n的【质】因子整除后,要么余1,要么余2,
# 要么会剩下一个且仅会剩下一个大于等于根号下n小于等于n的质数
#(不可能出现两个不相等且同时大于根号下n的质因子a和b,这会导致a*b>n)
while n % i == 0:
# 第一个能被整除的一定是最小的质数因子(如果是合数,一定有2<=x
# 后续能被整除的也一定是质数,若是合数,则合数的质因子肯定出现在之前,不成立
print(i, end=' ') # 得到的每个i都是n的质因子(即列举重复的质因子)
n = n // i # n不断变小,确保没有i这个质因子
# 双除号:输出整数
if n > 2:
print(n)
11.合并表记录
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
n= int(input())
d = {}
for i in range(n):
ab = input().split(" ")
a,b = int(ab[0]), int(ab[-1])
if a not in d:
d[a] = b
elif a in d:
d[a] = d[a] + b
for i in sorted(d.keys()):
print(i,d[i])
12.字符个数统计
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
def count_character(str):
string = (set(str)) # 去重后以字符串的形式
count = 0 # 开始计数
for item in string:
if 0 <= ord(item) <= 127: # ASCII码范围要求
count += 1 # 计数
return count
str = input()
print(count_character(str))
13.数字颠倒
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
n = input()
n = n[::-1]
print(n)
14.字符串反转
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
n = input()
n = n[::-1]
print(n)
15.字符串排序
给定 n 个字符串,请对 n 个字符串按照字典序排列。
n = int(input())
d = []
for i in range(n):
a = input()
d.append(a)
d.sort()
for i in range(n):
print(d[i])
16.求int型正整数在内存中存储时1的个数
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
bin_num = int(input().strip())
res = 0
while bin_num:
res+=1
bin_num &= bin_num-1
print(res)
17.句子逆序
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
s=input().split() #接收输入内容
s1=s[::-1] #把输入内容倒序排列
for x in s1:
print(x,end=" ") #输出元素之间用空格分隔