ParisGabriel
Python人工智能从入门到精通
week summer exercises:
一周练习题
# # 练习: # # 已知有列表: # # L = [3, 5] # # 1) 用索引和切片等操作,将原列表改变为: # # L = [1, 2, 3, 4, 5, 6] L = [3, 5] L[0: 2] L = [1, 2, 3, 4, 5, 6] print(L) ################################################################# # # 2) 将列表反转,删除最后一个元素后打印此列表 # # ... # # print(L) # [6, 5, 4, 3, 2] L = [6, 5, 4, 3, 2] L.reverse() del L[-1] print(L) ################################################################# # # 练习: # # 1. 写程序,让用户输入一些整数,当输入-1时结束输入,将这些数存于列表L中 # # 1) 打印用户共输入了几个数? # # 2) 打印您输入的数的最大数是多少 # # 3) 打印您输入的数的最小数是多少 # # 4) 打印您输入的这些数的平均值是多少? L = [] while True: a = int(input("please input -1 over :")) if a == -1: break L.append(a) print(len(L)) print(max(L)) print(min(L)) print(sum(L) / len(L)) ################################################################# # # 练习: # # 输入多行文字,存入列表中, # # 每次输入回车后算一行 # # 任意输入多行,当输入回车(即输入空行时结束输入) # # 1) 按原输入内容在屏幕上输出内容 # # 2) 打印出您共输入了多少行文字 # # 3) 打印出您共输入了多少个字符 L = [] i = 0 while True: a = input("please input '' over:") if a == "": break L.append(a) i += len(a) for x in L: print(x) print(len(L)) print(i) ################################################################# # 练习: # 1. 有字符串"hello" # 请用此字符串生成: # 'h e l l o' 和 'h-e-l-l-o' # 答案: # s = "hello" # a = ' '.join(s) # a = 'h e l l o' # # b = '-'.join(s) # b = 'h-e-l-l-o' a = "hello" print(" ".join(a)) print("-".join(a)) ################################################################# # # 2. 写一个程序,让用户输入很多正整数,当输入小于零的数时结束输入, # # 1) 打印这些数中最大的一个数 # # 2) 打印这些数中第二大的一个数 # # 3) 删除最小的一个数 # # 4) 打印剩余数的和 L = [] while True: a = int(input("please input -1 over:")) if a < 0: break L.append(a) L.sort() print(max(L)) print(L[1]) del L[-1] print(sum(L)) ################################################################# # # 练习: # # 用列表推导式生成1~100内奇数的列表 # # 结果是: [1, 3, 5, 7, ..... 99] # # L = [x for x in range(1, 100, 2)] L = [x for x in range(1, 100, 2)] ################################################################# # # 示例: # # 生成1~00内的奇数的列表: # # L = [x for x in range(1, 100) if x % 2 == 1] L = [x for x in range(1, 100) if x % 2 != 0] ################################################################# # # 练习: # # 生成一个数值为 1 ~ 9的平方的列表,去掉所有的奇数的平方 # # L = [x**2 for x in range(1, 10)] L = [x ** 2 for x in range(0, 10, 2)] ################################################################# # # # L = [4, 16, 36, 64] # # 练习: # # 1. 已知有一个字符串 # # s = '100,200,300,500,800' # # 将其转化为整数的列表存于L列表中 # # L = [100, 200, 300, 500, 800] s = '100,200,300,500,800' L = [] for x in s: L.append(s) print(L) ################################################################# # # 2. 生成前40个斐波那契数(Fibonacci) # # 1 1 2 3 5 8 13 ..... # # 要求将这些数保存在列表中 # # 打印这些数 L = [1, 1] while True: a = L[0] + L[1] L.append(a) if len(L) == 40: break print(L) ################################################################# # # 3. 有一些数存于列表中: # # L = [1, 3, 2, 1, 6, 4, 2, ..... 98, 82] # # 将列表中出现的数字存入到另一个列表L2中 # # 要求: 重复出现多次的数字在L2列表中只保留一份(去重) L = [1, 3, 2, 1, 6, 4, 2, 98, 98, 82] L2 = [] for x in L: if x not in L2: L2.append(x) print(s) ################################################################# # # 写程序,实现以下要求: # # 1) 将如下数据形成一个字典seasons: # # '键' '值' # # 1 '春季有1, 2, 3月' # # 2 '夏季有4, 5, 6月' # # 3 '秋季有7, 8, 9月' # # 4 '冬季有10,11,12月' # # 2) 让用户输入一个整数,代表一个季度, # # 打印这个季度对应的信息,如果用户输入的信息不在字典内,则打印信息不存在 d = {1: '春季有1, 2, 3月', 2: '夏季有4, 5, 6月', 3: '秋季有7, 8, 9月', 4: '冬季有10,11,12月'} a = int(input("please input :")) for x in d: if a == x: print(d[a]) else: print("no") ################################################################# # # 练习: # 输入一段字符串,打印出这个字符串中出现过的字符的出现次数 # 如: # 输入: # abcdabcaba # 打印: # a: 4次 # b: 3次 # d: 1次 # c: 2次 # 注: # 不要求打印的顺序 a = input("please input string:") d = {} for x in a: if x in d: d[x] += 1 else: d[x] = 1 for i in d: print(i, d[i]) ################################################################# # # 练习: # # 有字符串的列表如下: # # L = ['tarena', 'xiaozhang', 'tyke'] # # 用上述列表生成如下字典: # # d = {'tarena': 6, 'xiaozhang': 9, 'tyke':4} # # 注: # # 字典的值为键的长度 L = ['tarena', 'xiaozhang', 'tyke'] d = {x: len(x) for x in L} print(d) ################################################################# # # 练习: # # 1. 已知有两个等长的列表 list1 和 list2 # # 以list1中的元素为键,以list2中的元素为值,生成相应的字典 # # list1 = [1001, 1002, 1003, 1004] # # list2 = ['Tom', 'Jerry', 'Spike', 'Tyke'] # # 生成的字典为: # # {1001: 'Tom', 1002:'Jerry', .....} list1 = [1001, 1002, 1003, 1004] list2 = ['Tom', 'Jerry', 'Spike', 'Tyke'] d = {list1[x]: list2[x] for x in range(len(list1))} print(d) ################################################################# # 集合练习: # 经理有: 曹操,刘备,孙权 # 技术员有: 曹操,孙权,张飞,关羽 # 用集合求: # 1) 即是经理,也是技术员的有谁? # 2) 是经理,但不是技术员的人员都有谁? # 3) 是技术员,不是经理的都有谁 # 4) 张飞是经理吗? # 5) 身兼一职的人都有谁? # 6) 经理和技术员共有几个人? L = {"曹操", '刘备', "孙权"} L1 = {"曹操", "孙权", "张飞", "关羽"} print(L & L1) print(L - L1) print(L1 - L) if "张飞" in L: print("yes") else: print("no") print(L1 ^ L) print(len(L1 | L)) ################################################################# # 练习: # 任意输入一些数字,存于列表L中。当输入负数时结束输入 # 1) 打印这些数的和 # 2) 打印这些数有多少种(去重) # 3) 除重复的数字后,打印这些剩余数字的和 # 提示,可以用集合去重 L = [] while True: a = int(input("please input integer:")) if a < 0: break L.append(a) print(sum(L)) s = {x for x in L} print(len(s)) print(sum(s)) ################################################################# # 练习: # 1. 写一个函数myadd, 此函数中的参数列表里有两个参数x, y # 此函数的功能是打印 x + y 的和 # def myadd(....): # .... # 注: .... 部是是我们要填写代码的地方 # myadd(100, 200) # 300 # print("ABC", "123") # ABC123 def myadd(x, y): print(x + y) myadd(100, 200) print("ABC", "123") ################################################################# # # 2. 写一个函数 mysum, 传入一个参数x代表终止整数, # # 打印出 1 + 2 + 3 + 4 + ..... + x的和 # # def mysum(x): # # .... def mysum(x): i = 0 for x in range(x + 1): i += x print(i) mysum(100) mysum(4) ################################################################# # # 练习: # # 1. 写一个函数 mymax, 给函数传递两个参数,返回两个实参中最大的一个 # # def mymax(a, b): # # .... # v = mymax(100, 200) # print('v =', v) # v = 200 # print(mymax('ABC', 'abc')) # abc def mymax(a, b): if a > b: return a else: return b v = mymax(100, 200) print('v =', v) print(mymax('ABC', 'abc')) ################################################################# # # 2. 写一个函数 input_number # # def input_number(): # # .... # # 此函数用来获取用户循环输入的整数,当用户输入负数时结束输入。 # # 将用户输入的数字以列表的形式返回,再用内建函数max, min, # # sum取出户输入的最大值,最小值及和 # # L = input_number() # # print(L) # 打印此列表 # # print("用户输入的最大数是:", max(L)) # # print("用户输入的最小数是:", min(L)) # # print("用户输入的数的和是:", sum(L)) def input_number(): L = [] while True: number = int(input("please input:")) if number < 0: break L.append(number) return L L = input_number() print(L) # 打印此列表 print("用户输入的最大数是:", max(L)) print("用户输入的最小数是:", min(L)) print("用户输入的数的和是:", sum(L)) ################################################################# # # 练习: # # 1. 写一个函数 print_odd, 打印从begin开始,到end结束(不包含end)内的全部的奇数 # # def print_odd(begin, end): # # .... def print_odd(begin, end): for x in range(begin, end): if x % 2 == 1: print(x) print_odd(1, 10) print_odd(10, 20) ################################################################# # # 2. 定义两个函数: # # sum3(a, b, c) 用于返回三个数的和 # # pow3(x) 用于返回x的三次方 # # 用以上函数计算: # # 1. 计算1的立方 + 2的立方 + 3的立方的和 # # 即: 1**3 + 2**3 + 3**3的和 # # 2. 计算1 + 2 + 3 的和的立方, # # 即:(1+2+3)**3 def sum3(a, b, c): return a + b + c def pow3(x): return x ** 3 sum3(pow3(1), pow3(2),pow3(3)) pow3(sum3(1, 2, 3)) ################################################################# # 练习: # 写一个函数minmax(a, b, c) 有三个参数,这回这三个参数中的最小值和最大值, # 要求,形成元组,最小值在前,最大值在后,如: # def minmax(a, b, c): # ... # t = minmax(11, 33, 22) # print(t) # (11, 33) # <<< 打印元组 # xiao, da = minmax(6, 5, 4) # # print('最小值:', xiao, '最大值:', da) def minmax(a, b, c): z = a if z < b: z = b if z < c: z = c x = a if x > b: x = b if x > c: x = c return (x, z) t = minmax(11, 33, 22) print(t) xiao, da = minmax(6, 5, 4) print('最小值:', xiao, '最大值:', da) ################################################################# # # 练习: # # 写一个函数 myadd, 此函数可以计算两个数的和,也可以计算三个数的和 # # def myadd(......): # # .... # # print(myadd(10, 20)) # 30 # # print(myadd(100, 200, 300)) # 600 def myadd(a, *args): for x in args: a += x return a print(myadd(100, 200)) print(myadd(100, 200, 300)) ################################################################# # # 2. 写一个函数,print_odd, 此函数可以传递一个实参,也可以传递两个实参,当传递一个实参时代表结束值 # # 当传递两个实参时,第一个实参代表起始值,第二个实参代表结束值 # # 打印出以此区间内的全部奇数,不包含结束数: # # print_odd(10) # 1 3 5 7 9 # # print_odd(11, 20) # 11 13 15 17 19 def print_odd(a, b=None): for x in range(a, b): if x % 2 != 0: print(x) print_odd(10) print_odd(11, 20) ################################################################# # # 练习: # # 写一个函数, mysum可以传入任意个实参的数字,返回所有实参的和 # def mysum(*args): # ... # print(mysum(1, 2, 3, 4)) # 10 # print(mysum(10, 20, 30)) # 60 def mysum(*args): i = 0 for x in args: i += x return i print(mysum(1, 2, 3, 4)) print(mysum(10, 20, 30)) ################################################################# # # 练习: # # 写一个函数,mymax类似于 内键的函数max # # 详见: # # >>> help(max) # # 仿造 max 写一信mymax函数,功能与max完全相同 # # (要求不允许调用max函数) # # print(mymax([6, 8, 3, 5])) # 8 # # print(mymax(100, 200)) # 200 # # print(mymax(1, 3, 5, 9, 7)) # 9 def mymax(a, *args): if args is None: x = a[0] for i in a: if x > a[i]: x = a[i] return x else: x = a for i in args: if x > i: x = i return x print(mymax([6, 8, 3, 5])) print(mymax(100, 200)) print(mymax(1, 3, 5, 9, 7)) ################################################################# # # 练习: # # 创建一个全局变量 L = [] # # 写一个函数: # # def input_number(): # # .... # # 此函数每次调用将从键盘读入一些数字追加到列表L中 # # 如: # # L = [] # # def input_number(): # # .... # # input_number() # # print(L) # [ .... 这些是您从键盘输入的数..] L = [] def input_number(): while True: number = int(input("pleae inout bumber:")) if number < 0: break L.append(number) ################################################################# # # 练习: # # 1. 写一个函数isprime(x) 判断x是否为素数。如果是素数,返回True,否则返回False def isprime(x): for i in range(2, x): if x / i % 0: return False break else: return True ################################################################# # # 2. 写一个函数prime_m2n(m, n) 返回从m开始,到n结束(不包含n)范围内的素数,返回这些素数的列表并打印 # # 如: # # L = prime_m2n(5, 10) # # print(L) [5, 7] def prime_m2(m, n): L = [] for x in range(m, n): if isprime(x) is True: L.append(x) return L L = prime_m2(2, 5) print(L) ################################################################# # # 3. 写一个函数pimes(n) 返回小于n的全部素数的列表,并打印这些素数 # # 如: # # L = primes(10) # # print(L) # [2, 3, 5, 7] # # 1) 打印100 以内的全部素数 # # 2) 打印200 以内的全部素数的和 def pimes(n): prime_m2(2, n) L = pimes(10) print(L) # [2, 3, 5, 7] ################################################################# # # 4. 编写函数 fn(n) 此函数返回下列级数的和: # # fn(n) = 1/(1*2) + 1/(2*3) + .... # # + 1/(n*(n-1)) 的和 # # print(fn(100)) def fn(n): i = 0 for x in range(n): i += x / (x + 1) print(fn(100)) ################################################################# # 练习: # 写一个函数叫hello(name),部分代码如下: # count = 0 # def hello(name): # print('你好', name) # ... 此处代码省略,需要同学们自己填写 # ... 此处代码需要改变全局变量来记录此函数曾经被调用过多少次. count = 0 def hello(name): print("hello", name) count += 1 hello('小张') hello('小李') print('hello 函数被调用', count, '次') # 2次 ################################################################# # 练习: # 1. 写一个lambda 表达式,判断这个数的2次方+1是否能被5整除,如果能被整除返回True, 否则返回False # 例: # fa = lambda x: ..... # print(fa(2)) # True # print(fa(4)) # False fa = lambda x: (x ** 2 + 1) / 5 % 0 print(fa(2)) print(fa(4)) ################################################################# # 2. 写一个lambda表达式,求两个变量的最大值 # 例如: # def mymax(x, y): # ... # mymax = lambda ... # print(mymax(100, 200)) # 200 mymax = lambda x, y: x if x > y else y print(mymax(100, 200)) # 200 ################################################################# # 练习: # 1. 给出一个整数n,写一个函数myfac来计算n!(n的阶乘) # n! = 1 * 2 * 3 * 4 * ..... * n # 如: # print(myfac(5)) # 120 def myfac(n): x = 0 for i in range(1, n + 1): x = i * (i + 1) return x print(myfac(5)) ################################################################# # 2. 给出一个整数n,写一个函数计算myfn(n): # 1 + 2**2 + 3**3 + .... + n**n的和 # 如: # print(myfn(10)) # ??? def myfn(n): i = 1 for x in range(2, n + 1): i += x ** x return i print(myfn(10)) ################################################################# # 3. 完全数: # 1 + 2 + 3 = 6 (6为完全数) # 1,2,3都为6的因数(因数是能被一个数x整除的整数为y,则y为x的因数) # 1 x 6 = 6 # 2 x 3 = 6 # 完全数是指除自身以外的所有因数相加之和等于自身的数 # 求 4~5个完全数并打印出来 # 答案: # 6 # 28 # 496 # ...... def wq_bumber(x): s = 0 for i in range(1, x): if x % i == 0: s += i if s == x: return True else: return False i = 0 x = 0 while i < 4: x += 1 if wq_bumber(x) is True: print(x) i += 1
一共39到题 写了 3个多小时 ............