基础语法练习:
"""侧重于基础语法""" 01. 写程序在终端输出图形: ######## # # # # ######## print("#"*8) print("#"+" "*6 + "#") print("#"*8)02. 已知矩形的长边为6cm, 短边为4cm 求矩形的周长和面积,并用print函数打印在终端上:
width = 6 hight = 4 perimeter = (width + hight)*2 area = width * hight print("周长是%s,面积是%s" % (perimeter, area))03. 变量交换练习,已知有两个变量:a = 10000, b = 20000, 让a和b交换绑定的对象:
01. 利用第三个变量的常规写法: a = 10000 b = 20000 c = a a = b b = c print(a, b) 02. Python中独有的写法: a, b = b, a # 序列赋值(术语:解构/解包) print(a, b)04. 打印出以下小星星:
* *** ***** ******* # 规律:1 3 5 7 -->每行小星星个数=x*2-1 01. while循环实现: x = 1 while x <= 4: res = "*"*((x*2)-1) print(res.center(7)) # center字符居中 两边有自动填充字符 x += 1 02. for循环实现: for i in range(1, 5): res = "*"*((i*2)-1) print(res.center(7))05. 中国古代的秤是16两一斤,请问古代的216两是古代的几斤几两?写程序打印出结果:
print("古代的216两是: %d斤%d两" % (216//16, 216%16))06. 从凌晨0:0:0 计时,到现在已经过了63320秒,请问现在是几时,几分,几秒,写程序打印出来:
t = 63320//3600 m = 63320%3600//60 s = 63320%3600%60 print("%d:%d:%d" % (t, m, s))07. 将数字3.14用变量pi绑定,转换为整数用变量i绑定将 pi变量与i变量相减结果用变量f绑定:
# 01. 判断f 是否等于0.14 pi = 3.14 i = int(pi) f = pi - i print(f == 0.14) # 02. 删除所有变量 del pi, i, f help("__main__") # 查看当前作用域内变量08. 写一个程序:
01. 假设1年只有365天,输入年数,打印这些年有多少个周: year = input("请输入年份:") print("%s有%s周" %(year, 365//7)) 02. 分三次输入当前的小时,分钟,秒数,在终端打印此时间距离 0:0:0 过了多少秒: time_t = int(input("时")) time_m = int(input("分")) time_s = int(input("秒")) print("距离0:0:0过了%s秒" % (time_t*3600 + time_m*60 + time_s))09. 输入一个正整数,判断这个数是奇数还是偶数,打印出结果:
i = int(input("正整数:")) if i % 2 == 0: print("是偶数") else: print("是奇数")10. 写一个程序:
01. 输入一个季度 1~4,输出这个季度有哪儿几个月,如果输入不是1~4的整数,则提示用户您输错了: quarter = int(input("季度:") or '0') if quarter == 1: print("1月,2月,3月") elif quarter == 2: print("4月,5月,6月") elif quarter == 3: print("7月,8月,9月") elif quarter == 4: print("10月,11月,12月") else: print("输入有误") 02. 输入一年中的月份(1~12) 输出这个月在哪儿个季度,如果输入的是其它的数,则提示您输入有错: mouth = int(input("月份") or '0') if mouth in [1, 2, 3]: print("春季") elif mouth in [4, 5, 6]: print("夏季") elif mouth in [7, 8, 9]: print("秋季") elif mouth in [10, 11, 12]: print("冬季") else: print("输入有误")11. 写一个程序:
01. 输入一个数,用if语句计算并打印这个数的绝对值(注:不允许使用abs函数): i = int(input("输入数字")) if i >= 0: print(i) else: print(-i) 02. 输入一个数,用条件表达式计算并打印这个数的绝对值: i = int(input("输入数字")) j = i if i >= 0 else -i print(j)12. 北京出租车计价器:
''' 收费标准: 3公里以内收费13元 超出3公里以外,每公里基本单价2.3元/公里 空驶费: 超过15公里后,每公里加收 1.15元空驶费 要求: 输入公里数,打印出费用金额(以元为单位四舍五入,保留2位小数) ''' kilometer = int(input("输入公里数:")) if 3 < kilometer <= 15: # round()四舍五入, 第二个参数保留小数位数 money = round(kilometer * 2.3, 2) print(money) elif kilometer > 15: money = round(15 * 2.3 + (kilometer - 15) * (2.3 + 1.15), 2) print(money) elif 0 < kilometer <= 3: money = 13 print(money) else: print("输入有误")13. 输入一个学生的三科成绩:
1) 打印出最高分是多少分 2) 打印出最低分是多少分 a = int(input("成绩a:")) b = int(input("成绩b:")) c = int(input("成绩c:")) if a > b: a, b = b, a # python独有语法序列赋值(术语:解构/解包) if b > c: b, c = c, b if a > b: a, b = b, a print("最高分时%d,最低分时%d" % (c, a))14. 给出一个年份,判断是否为闰年并打印:
闰年规则:每四年一闰,每百年不闰,四百年又闰,例如2016年闰年,2100年非闰年,2400年闰年 方法一: year = int(input("输入年份")) # if条件表达式实现: 成立执行 if 真值表达式 else 不成立执行 print("是闰年" if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0) else "不是闰年") 方法二: year = int(input("输入年份")) if year % 4 == 0 and year % 100 != 0: print("是闰年") elif year % 400 == 0: print("是闰年") else: print("不是闰年")15. BMI指数(Body Mass Index) 又称身体质量指数:
""" BMI 值计算公式: BMI = 体重(公斤)/ 身高的平方(米) 例如: 一个69公斤的人,身高是173公分,则: BMI = 69/1.73**2 = 23.05 标准表 BMI < 18.5 体重过轻 18.5 <= BMI < 24 正常范围 BMI > 24 体重过重 输入身高和体重,打印BMI值并打印体重状态 """ height = int(input("身高:")) weight = int(input("体重:")) bmi = weight/(height**2) # if条件表达式嵌套实现: 成立执行 if 真值表达式 else '成立执行 if 真值表达式 else 不成立执行' print("体重过轻" if bmi < 18.5 else "体重过重" if bmi > 24 else "正常范围")16. 写一个程序,打印一个高度为4行的矩型方框:
''' 要求.输入一个整数数字,此整数代表矩形的宽度 请输入矩形宽度: 10 请输入矩形宽度: 5 ########## ##### # # # # # # # # ########## ##### 输出此矩型 ''' width = int(input("请输入矩形宽度:")) t = '%' + str(width-1) + 's' for i in range(1, 5): # 等同于 display = '#'*width if i == 1 or i == 4 else '#' + ' '*(width-2) + '#' display = '#'*width if i == 1 or i == 4 else '#' + t % '#' print(display)17. 输入一个字符串:
''' 1. 打印这个字符串的第一个字符 2. 打印这个字符串的最后一个字符 3. 如果此字符串的长度为偶数,打印一个 '|',如果长度为奇数,打印中间的字符 注: 求字符串长度的函数len(x) ''' s1 = input("请输入一个字符串:") print("第一个字符是%s,最后一个字符是%s" % (s1[0], s1[-1])) print('|' if len(s1)%2 == 0 else s1[len(s1)//2])18. 输入任意一个字符串,判断这个字符串是否是回文:
''' 回文示例: 上海自来水来自海上 ABCCBA 回文是指中心对称的文字 提示: 把输入的字符串反转后判断与原输入的字符串是否一致 如果一致既为回文 ''' s1 = input("请输入一个字符串:") print('是回文' if s1 == s1[::-1] else '不是回文')19. 输入一段字符串,如果是字符串,则把第一个字符的UNICODE编码值打印出来,如果是整数值(0~65535),打印这个编码所对应的字符:
s1 = input("请输入字符串或正整数:") or '0' print(ord(s1[0]) if s1.isalpha is True else chr(int(s1)))20. 输入三行文字,让这三行文字在一个方框内居中显示(请不要输入中文):
''' 请输入第1行: hello tarena! 请输入第2行: my name is weimingze. 请输入第3行: today is sunday! 显示如下: +-----------------------+ | hello tarena! | | my name is weimingze. | | today is sunday! | +-----------------------+ 注:max() 函数可以输入多个参数,最终返回最大的一个 ''' line = 3 temp_list = list(input("请输入字符串%d" % (i + 1)) for i in range(line)) for i in range(temp_list.count('')): temp_list.remove('') length = max(len(i) for i in temp_list) for i in range(len(temp_list) + 2): print('+' + '-'*length + '+') if i == 0 or i == len(temp_list) + 1 else \ print('| ' + temp_list[i-1].center(length) + ' |')21. 输入一个字符串:
''' 1. 判断您输入的字符串的有几个字符'e' 2. 判断您输入的有几个空格 3. 判断您输入的字符串是否以问号'?'结尾 ''' s = input("请输入字符串:") print("有%s个字符e" % s.count('e')) print("有%s个空格" % s.count(' ')) print("字符串%s以?结尾" % s.endswith('?'))22. 输入三行文字,让这三行文字依次以最长个字符的宽度右对齐输出:
''' 请输入第1行: hello world 请输入第2行: abcd 请输入第3行: a 打印结果: hello world abcd a ''' line = 3 temp_list = list(input("请输入文字%d:" % (i + 1)) for i in range(line)) for i in range(temp_list.count('')): temp_list.remove('') length = max(len(i) for i in temp_list) temp_str = "%" + str(length) + "s" for i in range(len(temp_list)): print(temp_str % temp_list[i])23. 写程序输入一个整数n,打印n以内的全部大于0的偶数(不包含n):
i = 1 j = int(input("请输入一个正整数:")) while i < j: if i % 2 == 0: print(i) i += 1 24. 打印从零开始的浮点数, 每个数增加0.5,打印出10以内所有这样的数: i = 0.5 while i < 10: print(i, end= ' ') i += 0.525. 打印1~20的整数,打印在一行显示,每个数字之间用一个空格分隔1 2 3 4 5 6 7 .... 18 19 20:
i = 1 while i <= 20: print(i, end=' ') i += 1 26. 打印1~20的整数,每行5个数,打印四行: i = 1 while i <= 20: if i in [6, 11, 16]: print() print("%d\t" % i,end=' ') i += 1 27. 用while 语句打印 10~1之间的整数: i = 10 while i >= 1: print(i) i -= 128. 用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的三角形:
''' 请输入三角形宽度: 4 打印结果如下: * ** *** **** ''' width = int(input("请输入三角形宽度:")) i = 1 while i <= width: j = 1 while j <= i: print('*', end='') j += 1 print() i += 129. 输入一个数,打印指定宽度的正方形:
''' 请输入:5 打印正方形如下: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 ''' width = int(input("请输入:")) i = 1 while i <= width: j = 1 while j <= width: print(j, end=' ') j +=1 print() i += 130. 用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,依次打印相应的三角形:
''' * * **** **** ** ** *** *** *** *** ** ** **** **** * * ''' width = int(input("请输入:")) i = 1 while i <= width: print('*'*i) i += 1width = int(input("请输入:"))
i = 1 while i <= width: print(' '*(width-i) + '*'*i) i += 1width = int(input("请输入:"))
i = width while i >= 0: print('*'*i) i -= 1width = int(input("请输入:"))
i = width while i >= 0: print(' '*(width-i) + '*'*i) i -= 131. 输入一个开始的整数值用变量begin绑定,结束的整数值用变量end绑定:
''' 请输入开始值: 8 请输入结束值: 30 打印结果:5个数一行 8 9 10 11 12 ...... 28 29 30 ''' begin = int(input('请输入开始值:')) end = int(input('请输入结束值:')) count = 0 while begin < end: print('%s\t' % begin, end=' ') count += 1 if count % 5 == 0: print() begin += 1 32. 用while 循环生成如下字符串'AaBbCcDdEeFf.....XxYyZz' 并打印: i = 65 while i < 91: print(chr(i) + chr(i + 32), end='') i += 1 33. 任意输入一行字符串,打印这个符串内有多少个空格' '(要求用for再用while语句,不能用S.count方法): s = input("请输入一个字符串:") count = 0 for i in s: if i == ' ': count += 1 print(count)s = input("请输入一个字符串:")
count = 0 i = 0 while i < len(s): if s[i] == ' ': count += 1 i += 1 else: print(count)34. 用 for 循环嵌套打印如下矩形:(输入一个数n(10以内) 代表矩形的宽度和高度):
''' 请输入: 5 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 ''' num = int(input("请输入:")) for i in range(1,num+1): for j in range(i,num+i): print(j, end='') print()35. 写一个程序,求1 ~ 100之间所有不能被 5,7,11整除的数的和:
count = 0 for i in range(1, 101): if i % 5 == 0 or i % 7 == 0 or i % 11 == 0: continue count += i else: print(count)36. 输入一个Unicode的开始值和结束值 用变量begin和stop绑定,之间的所有对应的文字,生成字符串并打印:
begin = int(input("begin:")) stop = int(input('stop:')) temp_list = list(chr(i) for i in range(begin, stop+1)) for i in temp_list: print(i, end='')37. 输入一个整数(代表树干的高度),打印如下:
''' * *** ***** * * * ''' height = int(input("height:")) for i in range(1, height + 1): print('%s' % ('*' * (i * 2 - 1)).center(2 * height - 1)) for i in range(height): print('*'.center(height * 2 - 1))38. 输入一个整数(代表树干的高度),打印如下:
''' 1 222 33333 * * * ''' height = int(input("height:")) for i in range(1, height + 1): print('%s' % (str(i) * (2 * i - 1)).center(2 * height - 1)) for i in range(height): print('*'.center(2 * height - 1))39. 输入一个正整数,打印从0到这个数的素数(prime),素数也叫质数,是只能被1和自身整数的整数:
num = int(input('正整数:') or '0') if num >= 2: print(2, end= ' ') for i in range(2, num + 1): for j in range(2, i): if i % j == 0: break else: if i - j == 1: print(i, end=' ')40. 写一个程序,让用户输入很多个正整数,当输入小于零的数时结束输入:
''' 1) 输出这些数的和 2) 输出这些数的最大的数和第二大的数 3) 删除最小的一个数 4) 按原来输入的顺序打印出乘余的这些数 ''' temp_list = list() while True: num = int(input("小于0退出:") or '-1') if num < 0: break else: temp_list.append(num) print( '%d %d' % (sum(temp_list), max(temp_list))) temp_list.remove(max(temp_list)) print(max(temp_list)) temp_list.remove(min(temp_list)) for i in temp_list: print(i)41. 求100以内有哪儿些整数与自身+1 的乘积 再对 11求余的结果等于8:
temp_list = [x for x in range(100) if (x + 1) * x % 11 == 8] print(temp_list) 1 1 2 3 542. 计算20个百斐波那契数(fabonacci数) 存于列表中并打印(从第三个数起,后一个数是前两个数之和):
temp_list = [1, 1] a = 1 b = 1 for i in range(18): a, b = b, a + b temp_list.append(b) print(temp_list, sum(temp_list))43. 算出100~999以内的水仙花数,水仙花数是指百位的3次方加上十位的3次方加上个位的3次方等于原数的数字:
nums = [x for x in range(100, 1000) if int(str(x)[0])**3 + int(str(x)[1])**3 + int(str(x)[2])**3 == x ] print(nums)44. 任意输入一些大于零数,存于列表中L,当输入-1时结束输入:
''' L = [1, 3, 5, 3, 7, 9, 3, 7, 6, 5] 1) 打印出这些数 2) 打印出这些数的和 3) 去掉列表L中重复第二次或之后出现的数,再次存到另一个列表L2中 L2 = [1, 3, 5, 7, 9, 6] 打印这些数 4) 打印L2列表中的数据的和 5) 将 L列表中,出现两次的数存到另一个列表L3中 L3 = [5, 7] ''' L = list() while True: num = int(input("请输入大于零的整数:") or '0') if num == 0: continue if num == -1: break L.append(num) for i in L: print(i, end=' ') count = 0 for i in L: count += i print("L1求和", count, sep=":") L2 = list() for i in L: if i not in L2: L2.append(i) for i in L2: print(i, end=' ') print("L2求和:%s" % sum(L2)) L3 = list() for i in L: if L.count(i) == 2 and i not in L3: L3.append(i) print(L3)45. 任意输入字符串,打印这个字符串是否代表星期几,如果不是以上字符打印"字典内没有相应的数据":
data= { '0':'星期天', '1':'星期一', '2':'星期二', '3':'星期三', '4':'星期四', '5':'星期五', '6':'星期六' } while True: num = input("请输入0-6查询:") or '-1' if num in data: print(data[num]) else: print("字典内没有相应的数据")46. 列表L=['coco', 'angels', 'cat', 'mouse']用推导式生成字典,字典的值为键的长度:
L=['coco', 'angels', 'cat', 'mouse'] dic = {x:len(x) for x in L} print(dic)47. L1 = [1001, 1002, 1003, 1004],L2 = ['Coco', 'Angels', 'Cat', 'Mouse'],L1做键L2做值生成字典:
L1 = [1001, 1002, 1003, 1004] L2 = ['Coco', 'Angels', 'Cat', 'Mouse'] dic = {L1[x]:L2[x] for x in range(4)} print(dic)48. 输入一段字符串,打印所有输入过的字符串,但重复的只打印一次:
se = {x for x in input("请输入字符串:")} print(se)49. 输入一段字符串,打印出这个字符串中出现过的字符及出现过的次数,字典存储:
s = input("请输入字符串:") or '-1' dic = dict() for i in s: dic[i] = s.count(i) print(dic)50. 一只小猴子摘了很多桃,第一天吃了全部桃子的一半又多吃了一个,到第十天只剩下一个请问第一天多少个桃:
# 1 4 10 (n+1)*2 num = 1 for i in range(9): num = (num + 1) * 2 print(num)51. 求4~5个完全数,并打印,1+2+3=6(6为完全数),1,2,3都为6的因数(能被一个数x整除的数为y,则y为x的因数):
num = 0 for i in range(1, 10000): for j in range(1, i): if i % j == 0: num += j if num == i: print(i, end=' ') num = 052. 任意输入一个数n代表三角形的高度,如输入4打印一下菱形:
''' 1 121 12321 1234321 12321 121 1 ''' height = int(input("请输入高度:") or '输入有误') temp_str = str() for i in range(1, height + 1): # 打印菱形上部分(行数字符数增长部分) for j in range(1, i): temp_str += str(j) for x in range(i, 0, -1): temp_str += str(x) print(temp_str.center(height * 2 - 1)) temp_str = '' for i in range(height - 1, 0, -1): # 打印菱形下部分(行数字符数减少部分) for j in range(1, i): temp_str += str(j) for x in range(i, 0, -1): temp_str += str(x) print(temp_str.center(height * 2 - 1)) temp_str = '' 53. 用for和while分别实现打印九九乘法表: for i in range(1, 10): for j in range(1, i+1): print("%d*%d=%d" % (i, j, i*j), end="\t") print() i = 1 while i <= 9: j = 1 while j <= i: print('%d*%d=%d' % (i, j, i*j), end='\t') j += 1 print() i += 1 54. 有文件t1.txt里面的内容为: ''' 1,alex,22,13651054608,IT 2,wusir,23,13304320533,Tearcher 3,taibai,18,1333235322,IT 利用文件操作,将其构造成如下数据类型。 [{'id':'1','name':'alex','age':'22','phone':'13651054608', 'job':'IT'},......] ''' result = [] with open("t1.txt", encoding="UTF-8") as f: # 读取每一行数据 for line in f: dic = {} lst = line.split(",") dic["id"] = lst[0].strip() dic['name'] = lst[1].strip() dic['age'] = lst[2].strip() dic['phone'] = lst[3].strip() dic['job'] = lst[4].strip() result.append(dic) print(result)