【提升Coding能力】100道Python练习题1-10



公众号后台回复“图书“,了解更多号主新书内容
     作者:Yang
     来源:Python数据科学修炼之路


    不用多说,相信大家都懂,对于任何一个合格的“搬砖工”,编程Coding能力怎么强调都不过分,“一日不练手生”,“眼过千遍不如手过一遍”,提升代码能力没有捷径——多看、多想、多动手。就算理解的基础上抄代码也会有提升,如果能独立思考,动手多敲那效果立竿见影 。

    最近在Github找到一篇不错的Python编程练习题,从L1到L3,适合初级—中级—高级各水平的Python爱好者。撸一遍,分享给大家,学习提升。

Python

Question 1

Level 1级

1

编写一个程序,查找所有此类数字:它们可以被7整除,但不能是5的倍数,介于2000和3200之间(均包括在内)。 所获得的数字应以逗号分隔的顺序打印在一行上。

Solution

list2=[]
for i in range(2000,3201):
    if i%7==0 and i%5!=0:
        list2.append(str(i))
print(",".join(list2))

Python

Question 2

Level 1级

2

问题:编写一个程序,可以计算给定数字的阶乘。结果应以逗号分隔的顺序打印在一行上。 假设将以下输入提供给程序:8然后,输出应为:40320

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

def jc():
    number=int(input("请输入一个数字:"))
    q=1
    while number>=1:
        q=q*number
        number-=1
    return q


Python

Question 3

Level 1级

3

问题:使用给定的整数n,编写一个程序以生成包含(i,i * i)的字典,该字典是介于1和n之间的整数(都包括在内)。然后程序应打印字典。假设将以下输入提供给程序:8然后,输出应为:{1:1、2:4、3:9、4:16、5:25、6:36、7:49、8:64 }

提示:如果将输入数据提供给问题,则应假定它是控制台输入。考虑使用dict()

Solution

def dictf(number):
    dict2={}
    for i in range(1,number+1):
        key=str(i)
        value=i**2
        dict2[key]=value
    return dict2
number=int(input("请输入一个数字:"))
dictf(number)

返回:{'1': 1, '2': 4, '3': 9, '4': 16, '5': 25, '6': 36, '7': 49, '8': 64}


Python

Question 4

Level 1级

4

定义一个至少具有两个方法的类:getString:从控制台输入中获取字符串printString:以大写形式打印该字符串。

还请包括简单的测试功能来测试类方法。

提示:使用init方法构造一些参数

Solution

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()
styu
STYU

Python

Question 5

Level 1级

5

问题:编写一个程序,该程序从控制台接受一个逗号分隔的数字序列,并生成一个列表和一个包含每个数字的元组。

假设将以下输入提供给程序:34,67,55,33,12,98

然后,输出应为:['34','67','55','33','12',' 98'](“ 34”,“ 67”,“ 55”,“ 33”,“ 12”,“ 98”)

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

values=input()
l=values.split(",")
t=tuple(l)
print(l)
print(t)

Python

Question 6

Level 2级

6

问题:编写一个程序,根据给定的公式计算和打印值:

Q = [(2 * C * D)/ H]的平方根

以下是C和H的固定值:

C为50。

H为30 。

D是变量,其值应以逗号分隔的顺序输入到程序中。 

示例让我们假设以下逗号分隔的输入序列已赋予程序:100,150,180

程序的输出应为:18,22,24

提示:如果收到的输出为十进制形式,则应四舍五入到最接近的值(例如,如果收到的输出为26.0,则应将其打印为26)。应假定为控制台输入。

Solution

def fn(input1):
    C=50
    H=30 
    list1=[]
    in_str=input1.split(",")
    for num in map(lambda x:int(x),in_str):
        result=(2*C*num)/H
        Q=result**0.5
        list1.append(str(int(Q)))
    s=",".join(list1)
    return s

>input1=input("请输入几个数,中间用‘,’分割:")
请输入几个数,中间用‘,’分割:100,150,180
>fn(input1)
'18,22,24'

Python

Question 7

Level 2级

7

问题:编写一个程序,该程序以X,Y 2位为输入,并生成一个二维数组。 

数组的第i行和第j列中的元素值应为i * j。 

注意:

i = 0,1 , ..,X-1; 

j = 0,1,...,Y-1 

示例假定给程序提供了以下输入:3,5然后,

程序的输出应为:[[0,0,0,0,0],[0,1,2,3,4],[ 0,2,4,6,8]]

提示:注意:如果将输入数据提供给问题,则应假定它是以逗号分隔形式的控制台输入。

Solution

input_str = input()
dimensions=[int(x) for x in input_str.split(',')]
rowNum=dimensions[0]
colNum=dimensions[1]
multilist = [[0 for col in range(colNum)] for row in range(rowNum)]

for row in range(rowNum):
    for col in range(colNum):
        multilist[row][col]= row*col

print(multilist)
3,5
[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8]]

尝试不一样的解法:

import numpy as np
def fn6(input1):
    num1=input1.split(",")[0]
    num2=input1.split(",")[1]
    a=np.array(range(int(num1))).reshape((3,-1))
    b=np.array(range(int(num2))).reshape((1,-1))
    return a.dot(b)
input1=input("请输入两个数,用“,”分割:")
fn6(input1)
array([[0, 0, 0, 0, 0],
       [0, 1, 2, 3, 4],
       [0, 2, 4, 6, 8]])

Python

Question 8

Level 2级

8

问题:编写一个程序,该程序接受以逗号分隔的单词序列作为输入,

并在按字母顺序对单词进行排序后以逗号分隔的顺序打印这些单词。 

假设向程序提供了以下输入:Without,hello,bag,world然后,

输出应为:bag,hello,without,world

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

import numpy as np
def fn8(input1):
    list_new=input1.split(",")
    list_new.sort()
    return list_new
>input1=input("请输入几个单词,用“,”分割:")
请输入几个单词,用“,”分割:without,say,hello,world
>fn8(input1)
['hello', 'say', 'without', 'world']

Python

Question 9

Level 2级

9

问题:编写一个程序,该程序接受行序列作为输入,并在将句子中的所有字符都大写之后打印行。假定向程序提供了以下输入:Hello world Practice使完美,然后,输出应为:HELLO WORLD PRACTICE完美无缺

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

Solution

def fn9():
    n=1
    m=3
    while n<=m:
        s=input("请输入序列:")
        if s:
            print(s.upper())
            print("共%d次你还能输入%d次"%(m,3-n))
        else:
            break
        n+=1
>fn9()
请输入序列:Hello world Practice
HELLO WORLD PRACTICE
共3次你还能输入2次
请输入序列:You are right
YOU ARE RIGHT
共3次你还能输入1次
请输入序列:good boy
GOOD BOY
共3次你还能输入0次

Python

Question 10

Level 2级

10101

问题:编写一个程序,该程序接受由空格分隔的单词序列作为输入,

并在删除所有重复的单词并将其按字母数字顺序排序后打印这些单词。 

假设向程序提供了以下输入:hello world and hello world again

然后,输出应为:again and hello world

提示:如果将输入数据提供给问题,则应假定它是控制台输入。 

我们使用set容器自动删除重复的数据,然后使用sorted()对数据进行排序。

Solution

def fn10():
    s=input("请输入空格分割的单词序列:")
    set1=set(s.split(" "))
    set2=sorted(set1)
    return set2
>fn10()
请输入空格分割的单词序列:hello world and hello world again
['again', 'and', 'hello', 'world']

能力有限,供参考,如有错误,欢迎指正。

参考链接:https://github.com/zhiwehu/Python-programming-exercises

◆ ◆ ◆  ◆ ◆
麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值