【提升Coding能力】100道Python练习题1-10
不用多说,相信大家都懂,对于任何一个合格的“搬砖工”,编程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 dict2number=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 npdef 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
◆ ◆