一起来学习吧~~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=[(2CD)/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题

判断一组字符串是否满足密码要求,密码(密码之间用逗号隔开)要求如下:

  1. 至少有一个小写字母[a-z]
  2. 至少有一个数组[0-9]
  3. 至少有一个大写字母[A-Z]
  4. 至少有一个特殊字符[$#@]
  5. 密码最大长度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)))

说明:

  1. 这里用到了list转tuple
  2. 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天:数据增强-实战案例教程(必须掌握的一个点)

深度学习100例 | 第34天:数据增强-实战案例教程(必须掌握的一个点)

Unity实战100例Unity万能答题系统之单选多选判断题全部通用