Python编程 基础练习(三)
时间:2022-07-25
本文章向大家介绍Python编程 基础练习(三),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
文章目录
1. 根据输入的日期,计算该日期是这一年的第几天
def isLeapYear(y): # 判断闰年的函数
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0: # 是闰年 返回True
return True
else:
return False # 否则返回False
def function1(i, j, k): # 计算给定日期是那一年的第几天
leap_year = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
no_leap_year = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if isLeapYear(i):
result = sum(leap_year[:j - 1]) + k
else:
result = sum(no_leap_year[:j - 1]) + k
return result
# 规定正确输入为 数字格式:2020/5/26
# 有异常处理
while True:
s = input("请输入日期:")
nums = s.split('/')
try:
year, month, day = int(nums[0]), int(nums[1]), int(nums[2]) # 得到的年月日转成整数 int
assert (0 <= year <= 9999) # 年份不在0-9999范围内 报错
assert (0 <= month <= 12) # 月份不在1-12范围内 报错
days = function1(year, month, day)
if month in [1, 3, 5, 7, 8, 10, 12]: # 月份在 [1, 3, 5, 7, 8, 10, 12]
assert (1 <= day <= 31) # 判断这个月的天数范围 断言正确 可以计算
days = function1(year, month, day)
break
elif month in [4, 6, 8, 10]: # 月份在 [4, 6, 8, 10]
assert (1 <= day <= 29) # 判断这个月的天数范围 断言正确 可以计算
days = function1(year, month, day)
break
elif month == 2: # 2月份 闰年29天 非闰年 28天
if isLeapYear(year): # 闰年
assert (1 <= day <= 29) # 在此范围 正确 可以计算
days = function1(year, month, day)
break
else: # 非闰年
assert 1 <= day <= 28 # 在此范围 正确 可以计算
days = function1(year, month, day)
break
except ValueError: # 转int包含非法字符 ValueError
print('日期中不能包含非法字符')
except AssertionError: # assert语句断言不符合数字范围 报错 异常处理 输出
print('日期数字范围不正确')
print('该日期是这一年的第{}天'.format(days))
测试结果如下:
请输入日期:2020/8/29
该日期是这一年的第242天
Process finished with exit code 0
2. 猜数游戏
import random
flag = True
while flag:
n = random.randint(100, 999) # 生成一个三位的随机数n
count = 0 # 记已猜的次数
while True:
m = int(input("请输入一个数:"))
if m > n:
print("你输入的数大了")
count += 1
elif m < n:
print("你输入的数小了")
count += 1
elif m == n:
if count <= 8:
print("太聪明了")
elif count <= 15:
print("还不错")
elif count > 15:
print("终于猜对了,不容易啊!")
print("*" * 25, "n还想再玩一局吗? n 1.继续请输入yes n 2.结束请输入non", "*" * 25)
order = input("请输入你的选择: ")
if order == "yes":
break # 退出内层循环 开始下一局
elif order == 'no':
flag = False # 结束整个循环
break
3.输入一组数到列表nums,请找到列表中任意两个元素相加能够等于9的元素,形成一个元组,使其小数在前大数在后,如:(2,7),(1,8)。重复的元组元素只保留一个,结果按元组第一个元素从小到大顺序输出
def get_tuple(num_list):
temp_list = []
for i in num_list:
if (9 - i) in num_list:
min_ = (9 - i) if (i >= (9 - i)) else i
max_ = i if min_ == (9 - i) else (9 - i)
if (min_, max_) not in temp_list:
temp_list.append((min_, max_))
return temp_list
nums = input("numbers:")
# 列表推导式
num_list = [int(i) for i in nums.split(',')]
result_list = get_tuple(num_list)
# 按列表里每个元组的第一个元素从小到大排序
result_list = sorted(result_list, key=lambda x: x[0])
print(result_list)
4. 求输入一组数据的平均值、方差、中位数
nums = input('请输入一组数据:')
data = nums.split(',')
# 算平均值
data = [eval(i) for i in data] # 转成数字类型
average = sum(data) / len(data)
print('这组数据平均值为:{:.2f}'.format(average))
# 方差计算
total = 0
for value in data:
total += (value - average) ** 2
stddev = (total / len(data)) ** 0.5
print('这组数据方差为:{:.2f}'.format(stddev))
# 中位数计算
data.sort() # 从小到大排序
mid = len(data) // 2 # 找中位数的索引
if len(data) % 2 == 0:
median = (data[mid - 1] + data[mid]) / 2
else:
median = data[mid]
print('这组数据中位数为:{:.2f}'.format(median))
5. 打印九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
num = j * i
print("{}*{}={:<2}".format(j, i, num), end=" ")
if i == j:
print(" ")
break
6. 求方程的解
# ax²+bx+c=0
a = float(input('输入 a:'))
b = float(input('输入 b:'))
c = float(input('输入 c:'))
if a == 0:
x = -c / b
print('方程的解为:x={}'.format(x))
else:
delta = b ** 2 - 4 * a * c
if delta < 0:
print('No solution!')
elif delta == 0:
x = -b / (2 * a)
print('方程的解为:x={}'.format(x))
else:
root = delta ** 0.5
x1 = (-b + root) / (2 * a)
x2 = (-b - root) / (2 * a)
print('方程的两个解为 x1={} x2={}'.format(x1, x2))
作者:叶庭云 微信公众号:修炼Python CSDN:https://yetingyun.blog.csdn.net/ 本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。 觉得文章对你有帮助、让你有所收获的话,期待你的点赞呀,不足之处,也可以在评论区多多指正。
- 深入入门系列--Data Structure--04树
- SQL学习之高级联结(自联结、自然联结、外联接)
- ExtJs学习笔记(21)-使用XTemplate结合WCF显示数据
- JavaScript之面向对象的概念,对象属性和对象属性的特性简介
- 快速入门系列--WebAPI--04在老版本MVC4下的调整
- SQL学习之SELECT子句顺序
- [图解]sqlserver中创建链接服务器
- 人工智能时代来临,还在炫耀孩子能考100分?
- 2017:谷歌DeepMind团队的年度回顾
- SQL学习之组合查询(UNION)
- 微信小程序版2048小游戏(附源码)
- SQL学习之去重复查询
- SQL学习之学会使用子查询
- MySQL快速入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux下的I/O复用与epoll详解
- 时间序列&日期学习笔记大全(上)
- LeetCode 题解:一顿操作猛如虎,一看击败百分五
- 这是什么沙雕题目?测试用例居然有人身高为 0 ??
- 深入解读flink sql cdc的使用以及源码分析
- markdown mermaid 画图
- 面试汇总(五):操作系统常见面试总结(一):进程与线程的相关知识点
- 面试汇总(六):操作系统常见面试总结(二):系统相关的问题
- Android 利用V4L2 调用camera
- Android基础--利用ANativeWindow显示视频
- Python如何爬取b站热门视频并导入Excel
- 代码详解——改变控制器的参考速度
- Python爬虫之JS的解析
- Python爬虫之chrome在爬虫中的使用
- Python爬虫之打码平台的使用