Python学习笔记(基础+进阶10道练习题)

习题01.

编写一个程序,查找在2000到3200之间(包含这两个数)中能被7整除,但不是5的倍数的所有数。获得的数字需以逗号分隔,按顺序打印在同一行上。
老师参考:
1st = [] for i in range(2000, 3201): if (i%7==0) and (i%5!==0) lst.append(str(i)) print(','.join(lst))

小编参考:
# 方法一: for i in range(2000, 3201): if i % 7 == 0 and i % 5 != 0: print(i, end=',') print()# 方法二: print(','.join(str(i) for i in range(2000, 3201) if i % 7 == 0 and i % 5 != 0))# 方法三: print(','.join(list(map(str, filter(lambda x: x % 7 == 0 and x % 5 !=0,range(2000,3201))))))

习题02.
编写一个程序,可以计算给定数字的阶乘。所获得的结果需以逗号分隔,按顺序打印在一行上。
假设在程序中输入以下数字:
8
则输出应为:
40320
老师参考:
def fact(x) if x == 0: return 1: return x * fact(x-1) x = int(input()) print fact(x)

小编参考:
n = int(input()) # 方法一: s = 1 for i in range(1, n+1): s *= i print(s)# 方法二: import math s2 = math.factorial(n) print(s2)# 方法三: from functools import reduce s3 = reduce(lambda x, y: x*y, range(1, n+1)) print(s3)# 方法四 def loop(n): if n <= 0: return 1 else: return n * loop(n-1) s4 = loop(n) print(s4)

习题03.
【Python学习笔记(基础+进阶10道练习题)】使用给定的整数n,编写一个程序,要求生成包含键值对“i: i*i”的字典,该字典为1到n之间的整数(包含这两个数)。运行程序输出字典。
假设在程序中输入以下数字:
8
则输出应为:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}
老师参考:
n = int(input()) d = dict() for i in range(1, n+1): d[i] = i*i print(d)

小编参考:
n = int(input()) # 方法一: d = {} for i in range(1, n+1): d[i] = i * i print(d)# 方法二: print({i:i*i for i in range(1, n+1)})# 方法三: d2 = dict(zip([i for i in range(1, n+1)], [i*i for i in range(1, n+1)])) print(d2)

习题04.
编写一个程序,要求该程序从控制台接收一个以逗号(英文逗号)分隔的数字序列,并生成一个列表和一个包含每个数字的元组。
假设在程序中输入以下数字:
34,67,55,33,12,98
则输出应为:
[‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’]
(‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’)
老师参考:
values = input() 1st = values.split(",") t = tuple(1) print(lst) print(t)

习题05.
定义一个至少有两种方法的类:
getString:从控制台输入获取字符串
printString:以大写形式输出字符串
也要包括简单的测试功能,以测试类方法。
老师参考:
class InputOutString: def __init__(self): self.s = "" def getString(self): self.s = input() def printString(self): print self.s.upper() strObj = inputOutString() strObj.getString() strObj.pringString()

习题06.
编写一个程序,根据给定的公式进行计算并输出值:Q = [(2 * C * D)/ H]的平方根
以下是C和H的固定值:C为50,H为30。
D为变量,其值应以逗号分隔,按顺序输入到程序中。
例:
假定以逗号(英文逗号)分隔的输入序列已赋予程序:
100,150,180
则程序应输出:
18,22,24
老师参考:
import math c = 50 h = 30 value = https://www.it610.com/article/[] items = [x for x in input().split(',')] for d in items: value.append(str(int(round(math.sqrt(2*c*float(d)/h))))) print(','.join (value))

习题07.
编写一个程序,该程序将X,Y两位数字作为输入并生成一个二维数组。 数组的第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]]
老师参考:
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)

小编参考:
def lianxi_07(x, y): # 方法一: new_lst = [] for i in range(x): lst = [] for j in range(y): lst.append(i * j) new_lst.append(lst) print(new_lst)# 方法二: print([[i * j for j in range(y)] for i in range(x)])lianxi_07(3, 5)

习题08.
编写一个程序,该程序接受以逗号分隔的单词作为输入,并在按字母顺序排序后,将这些单词以逗号分隔的形式输出。
假设在程序中输入以下单词:
without,hello,bag,world
则程序应输出:
bag,hello,without,world
老师参考:
items = [x for x in input().split(',')] items.sort() print(','.join(items))

习题09.
**编写一个程序,改程序接受序列作为输入,并能将输入句中的字母全部改为大写后输出。
假设在程序中输入以下:
Hello world
Practice makes perfect
则程序应输出:
HELLO WORLD
PRACTICE MAKES PERFECT
**
老师参考:
lines = [] while True: s = input() if s: lines.append(s.uppper()) 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
老师参考:
s = input() words = [word for word in s.split(" ")] print(" ".join(sorted(list(set(words)))))

    推荐阅读