一起来学习吧~~100例python题实战提高篇(附带答案)
Posted 非晚非晚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起来学习吧~~100例python题实战提高篇(附带答案)相关的知识,希望对你有一定的参考价值。
本文实例来自GitHub,目前已经有17.4+k star!内容偏基础,是很好的入门提高python编程能力的刷题宝典,分享给大家,大家一起进步吧!
第1题
编写一个程序,找出所有可被7整除但不是5的倍数的数字,2000年至3200年(均包括在内)。获得的数字应以逗号分隔的顺序打印在一行上。
提示:range(begin, end)
l = []
for i in range(2000, 3201):
if (i % 7 == 0) and (i % 5 != 0):
l.append(str(i))
sep = ","
l = sep.join(l)
print(l)
说明:string.join(seq),表示以string分割seq,且返回一个新字符串。
第2题
题目:写一个程序,可以计算给定数字的阶乘。结果应以逗号分隔的顺序打印在一行上。假设向程序提供了以下输入:8,输出:40320
提示:应该假设控制台输入数据
# 递归方案
def fact(x):
if x == 0:
return 1
return x * fact(x - 1)
print('请输入一个数字:')
x=int(input()) #必须是整数
print (fact(x))
第3题
对于给定的整数n,编写一个程序生成一个包含(i,i*i)的字典,该字典是介于1和n之间的整数(两者都包括在内)。然后程序应该打印字典。假设以下输入被提供给程序:8,那么输出应该是:1:1,2:4,3:9,4:16,5:25,6:36,7:49,8:64
print("请输入一个数字:")
n = int(input())
dic =
for i in range(1,n+1):
dic[i]=i**2
print(dic)
第4题
编写一个程序,从控制台接受逗号分隔的数字序列,并生成包含每个数字的列表和元组。假设以下输入被提供给程序:34,67,55,33,12,98,那么输出应该是:[‘34’,‘67’,‘55’,‘33’,‘12’,‘98’](‘34’,‘67’,‘55’,‘33’,‘12’,‘98’)
print("请输入以逗号分割的数字序列:")
values=input()
l=values.split(",")
t=tuple(l)
print(l)
print(t)
说明:string.split(str="", num=string.count(str)),表示以str为分隔符切片string,如果 num 有指定值,则仅分隔 num+1 个子字符串。
第5题
定义一个至少有两个方法的类:getString:从控制台输入获取字符串。printString:以大写形式打印字符串。还请包括简单的测试函数来测试类方法。
class InputOutString(object):
def __init__(self):
self.s = ""
def getString(self):
self.s = input()
def printString(self):
print(self.s.upper())
strObj = InputOutString()
strObj.getString()
strObj.printString()
说明:
函数 | 含义 |
---|---|
string.lower() | 转换 string 中所有大写字符为小写. |
string.upper() | 转换 string 中的小写字母为大写 |
string.islower() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写 ,则返回 True,否则返回 False |
string.isupper() | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写 ,则返回 True,否则返回 False |
第6题
给定C = 50,H = 30,D是待输入的以逗号分隔的序列,打印 Q = [ ( 2 ∗ C ∗ D ) / H ] Q=\\sqrt[(2 * C * D)/H] Q=[(2∗C∗D)/H]的值。假设输入:100,150,180 然后输出18,22,24。
import math
C = 50
H = 30
in_str = input()
seq = ","
D = in_str.split(seq) #分割,返回list
Q = []
for i in D:
Q.append(str(int(math.sqrt(2 * C * int(i) / H))))
print(seq.join(Q))# 使用seq隔开
第7题
编写一个程序,以2位数字X和Y作为输入,生成一个二维数组。数组的第i行和第j列中的元素值应该是i*j。其中i的范围为0,1,…,X-1;j的范围为0,1,…,Y-1。
X = int(input())
Y = int(input())
row = []
ans = []
for i in range(0,X):
for j in range(0,Y):
row.append(i * j)
else:
ans.append(row)
print(ans)
第8题
编写一个程序,接受逗号分隔的单词序列作为输入,并在按字母顺序排序后按逗号分隔的顺序打印单词。假设向程序提供了以下输入:without,hello,bag,world,然后输出:bag,hello,without,world
items=[x for x in input().split(',')]
items.sort()
print(','.join(items))
第9题
编写一个程序,逐行输入序列直到遇到空行结束
,并在将句子中的所有字符大写后打印行。假设向程序提供以下输入:Hello world然后输出:HELLO WORLD
lines = []
while True:
s = input()
if s:
lines.append(s.upper())
else: #空行结束
break;
for sentence in lines: # 逐行打印
print(sentence)
第10题
接收一组以空格分隔的一些词,打印去重后的词,并按顺序排列。比如输入:hello world and practice makes perfect and hello world again,则输出:again and hello makes perfect practice world。
words = input().split(" ")
unrepeat = set(words)
print(" ".join(sorted(list(unrepeat))))
第11题
输入4位2进制数字,检验它们能否被5整除,满足条件的用逗号分隔符打印出来。比如输入0100,0011,1010,1001,然后输出1010。
items = input().split(",")
ans = []
for p in items:
intp = int(p, 2)
if not intp%5:
ans.append(p)
print(','.join(ans))
第12题
打印出[1000, 3000]中每一位
都是偶数的数字,且用逗号隔开。
ans = []
for i in range(1000, 3001):
tmp_str = str(i)
if int(tmp_str[0]) % 2 == 0 and int(tmp_str[1]) % 2 == 0 and int(tmp_str[2]) % 2 == 0 and int(tmp_str[3]) % 2 == 0:
ans.append(tmp_str)
print(",".join(ans))
第13题
输入一组字符串,计算字符和数字的个数。假设输入: hello world! 123,输出:
LETTERS 10 DIGITS 3。
items = input()
d="DIGITS":0, "LETTERS":0
for c in items:
if c.isdigit():
d["DIGITS"]+=1
elif c.isalpha():
d["LETTERS"]+=1
print("LETTERS", d["LETTERS"])
print("DIGITS", d["DIGITS"])
说明:这里主要考察字符串函数的使用。
第14题
输入字符串,判断字符串是大写还是小写,并分别计算个数。假设输入:Hello world!,则输出:UPPER CASE 1 LOWER CASE 9
items = input()
dic="UPPER":0, "LOWER":0
for c in items:
if c.isupper():
dic["UPPER"]+=1
elif c.islower():
dic["LOWER"]+=1
print("UPPER CASE ", dic["UPPER"])
print("LOWER CASE ", dic["LOWER"])
第15题
计算形如a+aa+aaa+aaaa的值,其中a表示一个数字,a由用户输入,假设输入9,那么输出:11106。
思路:当前值 = 10**i + 上一个值
a = int(input("请输入一个数字:"))
sum = 0
last = 0
tmp = 0
for i in range(0,4):
tmp = a * (10**i) + last
last = tmp
sum = sum + tmp
print("计算结果为:", sum)
第16题
输入一组数字,每个数字用逗号连接,输出相应的奇数list。假设输入:1,2,3,4,5,6,7,8,9,则输出:1,3,5,7,9
a = input("请输入一组数字:").split(",")
b = [str(i) for i in a if int(i)%2 !=0]
print(",".join(b))
第17题
输入一组交易记录,输出最终的余额,比如输入:D 100 W 100 ,其中D表示存入,W表示取出,则输出为0
netAmount = 0
while True:
s = input()
if not s:#没有输入退出
break
values = s.split(" ")
operation = values[0]
amount = int(values[1])
if operation=="D":
netAmount+=amount
elif operation=="W":
netAmount-=amount
else:
pass
print(netAmount)
说明:需要两个enter才能有输出
第18题
判断一组字符串是否满足密码要求,密码(密码之间用逗号隔开)要求如下:
- 至少有一个小写字母[a-z]
- 至少有一个数组[0-9]
- 至少有一个大写字母[A-Z]
- 至少有一个特殊字符[$#@]
- 密码最大长度12,且如果输入","则只认为逗号之前的字符为密码。
比如输入:ABd1234@1,a F1#,2w3E*,2We3345,则密码为:ABd1234@1
import re
value = []
items=[x for x in input().split(',')]
for p in items:
if len(p)<6 or len(p)>12:
continue
else:
pass
if not re.search("[a-z]",p):
continue
elif not re.search("[0-9]",p):
continue
elif not re.search("[A-Z]",p):
continue
elif not re.search("[$#@]",p):
continue
elif re.search("\\s",p):
continue
else:
pass
value.append(p)
print(",".join(value))
第19题
输入(name, age, height) ,并对输入的元组进行排序,排序优先级为:name > age > score。比如输入:Tom,19,80 John,20,90 Jony,17,91 Jony,17,93 Json,21,85 ,则输出: [(‘John’, ‘20’, ‘90’), (‘Jony’, ‘17’, ‘91’), (‘Jony’, ‘17’, ‘93’), (‘Json’, ‘21’, ‘85’), (‘Tom’, ‘19’, ‘80’)]。
注意:每一组元组需要隔行输入
l = []
while True:
s = input()
if not s:
break
l.append(tuple(s.split(",")))
print(sorted(l, key=itemgetter(0,1,2)))
说明:
- 这里用到了list转tuple
- sorted的用法,
itemgetter表示根据某个或某几个字典字段对列表进行排序
。
第20题
定义一个带有生成器的class,该生成器可以迭代被7整除的数字,这些数字的范围为[0, n)
提示:考虑使用yield
def putNumbers(n):
i = 0
while i<n:
j=i
i=i+1
if j%7==0:
yield j
for i in putNumbers(100):
print(i)
第21题
机器人从原始点(0,0)开始移动,机器人可以上下左右的移动,机器人的移动轨迹类似于上5,下3,左3,右2,计算当前点距离原始点的距离,如果距离是float,只需要保留最近的int类型。比如输入下列元组,UP 5 DOWN 3 LEFT 3 RIGHT 2,输出则为2.
import math
lst = input("请输入轨迹:").split(" ")
distance = math.sqrt(((int(lst[1]) - int(lst[5]))**2 + (int(lst[3]) - int(lst[7]))**2))
print("当前点距离原始点为:",round(distance))
第22题
编写一个程序以计算输入的单词的频率。对单词进行排序后输出。比如输入:New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3. 则输出:2:2 3.:1 3?:1 New:1 Python:5 Read:1 and:1 between:1 choosing:1 or:2 to:1。
items = input().split()
dic =
for word in items:
dic[word] = dic.get(word,0) + 1
words = list(dic.keys())
print(words,type(words))
words.sort()
for w in words:
print(w,":",dic[w])
第23题
写一个函数,实现平方操作。
def square(num):
return num ** 2
第24题
python有很多的内置函数,如果要使用它们,可以阅读相关的文档。请写一个程序,打印内建函数文档。比如abs(),int(),raw_input()。
并为自己的函数,写一个提示,使它能够使用doc方式输出提示。
print(abs.__doc__)
print(int.__doc__)
print(input.__doc__)
def square(num):
'''Return the square value of the input number.
The input number must be integer.
'''
return num ** 2
print(square(2))
print(square.__doc__)
第25题
写一个类,并让它可以输入一个参数。
class Person:
# Define the class parameter "name"
name = "Person"
def __init__(self, name=None):
# self.name is the instance parameter
self.name = name
jeffrey = Person("Jeffrey")
print("%s name is %s" % (Person.name, jeffrey.name))#Person.name:用类进行访问,jeffrey.name用对象进行访问
nico = Person()
nico.name = "Nico"
print("%s name is %s" % (Person.name, nico.name))
输出:
Person name is Jeffrey
Person name is Nico
第26题
定义一个函数,该函数可实现两个数相加。
def sum(a, b):
return a+b
print(sum(1,2))
第27题
写一个函数,使用str将整数转化为string类型
def printValue(n):
print(str(n))
printValue(3)
第28题
和27题目一样
第29题
写一个函数,接收两个字符串类型的数字,然后计算他们的和,并打印出来。
def printValue(a, b):
print(int(a)+int(b))
printValue("2","4")
第30题
写一个函数,接收连个字符串,并对他们进行链接和打印
def printValue(a, b):
print(a+b)
printValue("2","4")#24
第31题
写一个函数,其功能为接收2个字符串输入,并打印其中最长的一个,如果长度相同,则分行分别打印。
def printValue(str1, str2):
a = len(str1)
b = len(str2)
if a > b:
print(str1)
elif a < b:
print(str2)
else:
print(str1)
print(str2)
第32题
定义一个函数,其功能为输入一个整数,并判断其为奇数还是偶数
def checkValue(num):
if num%2==0:
print("It is an even number")
else:
print("It is an odd number")
第33题
定义一个函数,其功能为打印出一个字典,字典的key范围为[1,3]的整数类型,value为key的平方。
def printDict():
dic =
for i in range(1,4):
dic[i] = i**2
print(dic)
第34题
定义一个函数,其功能为打印出一个字典,字典的key范围为[1,20]的整数类型,value为key的平方。
def printDict():
dic =
for i in range(以上是关于一起来学习吧~~100例python题实战提高篇(附带答案)的主要内容,如果未能解决你的问题,请参考以下文章
Unity 实战100例 教程 专栏《导航帖》,带你深入学习Unity实战经验
深度学习100例 | 第43天:文本卷积神经网络(TextCNN)新闻文本分类实战
深度学习100例 | 第43天:文本卷积神经网络(TextCNN)新闻文本分类实战
深度学习100例 | 第34天:数据增强-实战案例教程(必须掌握的一个点)