专栏首页Python进阶之路Python编程 基础练习(三)

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.结束请输入no\n", "*" * 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))

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python 中文情感分析 Snownlp库的使用

    SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于...

    叶庭云
  • Python 简单实现贪吃蛇小游戏

    PyPoice是SDL多媒体库的Python包装模块。它包含Python函数和类,这些类和类允许使用SDL对CDROM、音频和视频输出、键盘、鼠标和操纵杆输入进...

    叶庭云
  • Python编程 基础练习(一)

    水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3 + 3^3 = 153)。

    叶庭云
  • Python多种方法求某个范围内的所有素数(质数)

    质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

    zeruns
  • 46.python bytes和string相互转换

    1.python bytes 也称字节序列,并非字符。取值范围 0 <= bytes <= 255,输出的时候最前面会有字符b修饰;string 是python...

    猿说编程[Python和C]
  • 三大结构-分支

    DataScience
  • Python基础一

    changxin7
  • Python条件选择与循环

    条件选择与循环是Python中非常基础也是非常重要的语句结构,本节重点介绍这两个部分:

    小雨编程
  • python之SocketServer传

    用一种编程语言实现一个简单的Server/Client程序;该程序的主要功能是利用Client从Server端下载一个文件;在下载之前,需要有一定的用户身份验证...

    py3study
  • php isset()和empty()

    支持多个参数 :如果一次传入多个参数,则自左至右依次检测 ,变量都被设置(不是NULL)返回TRUE,中途遇到没有设置的变量则会停止检测并返回FALSE。

    用户7521130

扫码关注云+社区

领取腾讯云代金券