基础语法练习:
 """侧重于基础语法"""
 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.5 25. 打印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 -= 1 28. 用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的三角形:
 '''
 请输入三角形宽度: 4
 打印结果如下:
 *
 **
 ***
 ****
 '''
 width = int(input("请输入三角形宽度:"))
 i = 1
 while i <= width:
 j = 1
 while j <= i:
 print('*', end='')
 j += 1
 print()
 i += 1 29. 输入一个数,打印指定宽度的正方形:
 '''
 请输入: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 += 1 30. 用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,依次打印相应的三角形:
 '''
 * * **** ****
 ** ** *** ***
 *** *** ** **
 **** **** * *
 '''
 width = int(input("请输入:"))
 i = 1
 while i <= width:
 print('*'*i)
 i += 1 width = int(input("请输入:"))
 i = 1
 while i <= width:
 print(' '*(width-i) + '*'*i)
 i += 1 width = int(input("请输入:"))
 i = width
 while i >= 0:
 print('*'*i)
 i -= 1 width = int(input("请输入:"))
 i = width
 while i >= 0:
 print(' '*(width-i) + '*'*i)
 i -= 1 31. 输入一个开始的整数值用变量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 5 42. 计算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 = 0 52. 任意输入一个数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)