python题目集,源于学校老师布置在pta上的题目,博主用来复习的
7-1 统计单词的个数
输入一行字符,以回车结束,统计其中单词的个数。单词是中间没有空格的字符序列,各单词之间用空格分隔,单词间空格数可以是多个。
输入格式:
在一行中输入字符
输出格式:
在一行中输出单词的数量
输入样例:
在这里给出一组输入。例如:
Let’s go to room 209
输出样例:
在这里给出相应的输出。例如:
count = 5
思路:
考察split()函数
代码:
s = input().split()
count = 0
for i in s:
count += 1
print("count = {}".format(count))
7-2 判断回文串
若一个串正向看和反向看等价,则称做回文串。例如:t,abba,xyzyx均是回文串。
给出一个长度不超过60的字符串,判断是否是回文串。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每行输入一个长度不超过60的字符串(串中不包含空格)。
输出格式:
对于每组测试数据,判断是否是回文串,若是输出“Yes”,否则输出“No”。引号不必输出。
输入样例:
2
abba
abc
输出样例:
Yes
No
思路:
两种思路:
1.左右同时判断, 根据下标索引写判断语句
2.使用reversed()反转函数,但要注意在前面添加list()
代码(一):
t = int(input())
for i in range(t):
s = input()
flag = True
for j in range(len(s)//2):
if not s[j] == s[len(s)-j-1]:
flag = False
break
if flag:
print("Yes")
else:
print("No")
代码(二):
t = eval(input())
for i in range(t):
flag = True
s1 = input()
s2 = list(reversed(s1))
for j in range(len(s1)):
if s1[j] != s2[j]:
flag = False
break
if flag:
print("Yes")
else:
print("No")
7-3 产生每位数字相同的n位数
读入2个正整数A和B,1<=A<=9, 1<=B<=10,产生数字AA…A,一共B个A
输入格式:
在一行中输入A和B。
输出格式:
在一行中输出整数AA…A,一共B个A
输入样例1:
在这里给出一组输入。例如:
1, 5
输出样例1:
在这里给出相应的输出。例如:
11111
输入样例2:
在这里给出一组输入。例如:
3 ,4
输出样例2:
在这里给出相应的输出。例如:
3333
思路:
两种思路:
1.使用for和list,将需要输出的数字全部存储进列表,再使用join()打印输出
2.直接 * 打印输出
代码(一):
s = input().replace(" ", '')
a, b = s.split(",")
b = eval(b)
l = []
for i in range(b):
l.append(a)
print("".join(l))
代码(二)
s = input().replace(" ", '')
a, b = s.split(",")
b = eval(b)
print(a * b)
7-4 计算有n个字符串中最长的字符串长度
编写程序,用于计算有n(1<n<10)个字符串中最长的字符串的长度。前导空格不要计算在内!
输入格式:
在第一行中输入n,接下的每行输入一个字符串
输出格式:
在一行中输出最长的字符串的长度
输入样例:
在这里给出一组输入。例如:
4
blue
yellow
red
green
输出样例:
在这里给出相应的输出。例如:
length=6
思路:
列表存储所有字符串,但要注意数据格式规范化,使用replace();最后max()直接得到最长字符串长度
代码:
t = eval(input())
l = []
for i in range(t):
s = input().replace(" ", "")
l.append(len(s))
print("length={}".format(max(l)))
7-5 位1的个数
输入一个非负整数,求它变成二进制后1的个数(提示:用bin函数)。
输入格式:
输入一个正整数。
输出格式:
输出1的个数。
输入样例1:
在这里给出一组输入。例如:
37
输出样例1:
在这里给出相应的输出。例如:
3
输入样例2:
在这里给出一组输入。例如:
0
输出样例2:
在这里给出相应的输出。例如:
0
思路:
按照题意写就行, 就是一个字符计数的问题
代码:
a = eval(input())
a = bin(a)
count = 0
for i in a:
if i == "1":
count += 1
print(count)
7-6 输出10个不重复的英文字母
随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来。
如没有10个英文字母,显示信息“not found”
输入格式:
在一行中输入字符串
输出格式:
在一行中输出最左边的10个不重复的英文字母或显示信息“not found"
输入样例1:
在这里给出一组输入。例如:
poemp134567
输出样例1:
在这里给出相应的输出。例如:
not found
输入样例2
在这里给出一组输入。例如:
This 156is a test example
输出样例2:
在这里给出相应的输出。例如:
Thisaexmpl
思路:
根据样例, 需要先将字符串的格式规范化, 去除多余空格;
先判断字符是否是字母, 再判断该字符是否已经存储进列表,注意题干中说明字母不区分大小写,所以该字母的大小写形式都要写入判断;
最后就是语句长度判断
代码:
words = input().replace(" ", "")
l = []
for word in words:
if not word.isdigit():
if not word.lower() in l and not word.upper() in l:
l.append(word)
if len(l) >= 10:
print("".join(l[:10]))
else:
print("not found")
7-7 求平方与倒数序列的近似和
本题要求对两个正整数m和n(m≤n)编写程序,计算序列近似和。近似和定义为小于序列和的最大整数。(提示:用floor函数)
m ^2+1/m+(m+1) ^2+1/(m+1)+⋯+n ^2+1/n。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。
输出格式:
在一行中按照“sum ≈ S”的格式输出近似和S。
输入样例:
在这里给出一组输入。例如:
5 10
输出样例:
在这里给出相应的输出。例如:
sum ≈ 355
思路:
按题意模拟, 注意floor()函数在math库中
代码:
from math import *
m, n = map(int, input().split())
s = 0.0
for i in range(m, n+1):
s += floor(i**2 + (1.0/m))
print("sum ≈ {}".format(floor(s)))
7-8 比较大小
输入3个不同整数,这3个整数分别对应3个字母的ASCII码值,把这3个字母按它的ASCII码值从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔
输出格式:
在一行中将3个字母按ASCII码值从小到大输出,其间以“<”相连。
输入样例:
在这里给出一组输入。例如:
97 65 100
输出样例:
在这里给出相应的输出。例如:
A<a<d
思路:
sorted()省事,但要注意是list类型传入
代码:
s = list(map(int, input().split()))
s = sorted(s)
print("{}<{}<{}".format(chr(s[0]), chr(s[1]), chr(s[2])))
7-9 整数的二进制相加
输入两个整数,大小在[0,63]之间。求它们的二进制和,二进制用8位表示。
输入格式:
在一行输入一个整数,在另一行输入另一个整数。
输出格式:
输出它们的二进制和。
输入样例:
在这里给出一组输入。例如:
5
7
输出样例:
在这里给出相应的输出。例如:
00000101
00000111
00001100
思路:
先正常做加法,再使用bin()
注意最后的输出格式
代码:
a = eval(input())
b = eval(input())
r = a+b
a, b, r = bin(a), bin(b), bin(r)
a, b, r = eval(a[2:]), eval(b[2:]), eval(r[2:])
print("%08d" % a)
print("%08d" % b)
print("--------")
print("%08d" % r)
7-10 统计满足特定条件的字符数
输入字符串A(没有重复字符),输入字符串B,求在字符串A中字符的个数,这些字符必须同时又在字符串B中。提示:用in运算符。
输入格式:
一行输入字符串A。
一行输入字符串B。
输出格式:
一行输出字符数。
输入样例:
在这里给出一组输入。例如:
AEIOU
HELLO World!
输出样例:
在这里给出相应的输出。例如:
2
思路:
emmm, 注意输入的字符串格式处理
代码:
a = input().replace(" ", "")
b = input().replace(" ", "")
count = 0
for i in a:
if i in b:
count += 1
print(count)