python二级

太阳花

题目:用turtle库的turtle.fd()函数和turtle.left()函数绘制一个边长为200的太阳花。绘制效果如图:
绘制效果

import turtle
turtle.color('red', 'yellow')  # 画笔色,填充色
turtle.begin_fill() # 开始填充
for i in range(36): # 循环36次。36条边,每个内角360/36=10,
	turtle.fd(200)
	turtle.left(170)  # 旋转角度 180-10 = 170   turtle.left() 和 turtle.right() 都是水平180旋转
turtle.end_fill()

四瓣花

四瓣花
从左上角的花瓣开始绘制

import turtle
for i in range(4):
	turtle.seth(90*(i+1))  # 改变画笔绘制方向
	turtle.circle(50, 90)  # 绘制弧形
	turtle.seth(-90+i*90)
	turtle.circle(50, 90)
turtle.hideturtle()  # 隐藏画笔

turtule.seth()改变画笔绘制方向,参数角度为绝对方向角度
turtle.circle(radius, extend=None)radius为半径, extend绘制多大角度的弧形,不设置时或设置为None时,绘制整个圆形。
turtle.hideturtle()隐藏画笔箭头

正六边形和圆内切六边形

from turtle import *
pensize(5)
# 边长为100像素的正六边形
for i i range(6):
	fd(100)
	right(60)
# 半径为60的红色圆内切六边形
color('red')
circle(60, steps=6)

知识回顾:turtle库
turtle.circle() 有两个参数,第一个参数为圆的半径,第二个参数有两种,一个是圆弧的角度(默认360),另外一种是内切N变形(steps=n)n必须大于等于3.

质数(素数)

判断是否是素数(从2开始(大于1的自然数),因数 只有他本身和1),最小的素数为2

def prime(num):
	if num < 2:  # 小于2不是素数,返回False
		return False
	elif num > 2:
		for i in range(2, num):  # 一个数的因数分布于[2,num)
			if num % i == 0:  # 整除 无余数(取余为零)
				return False
		return True
# list(range(2, 2))  输出为空
def prime(num):
	if num < 2:
		return False
	for i in range(2, num):
		if num % i == 0:
			return False
	return True 

鲁棒输入

题目:
键盘输入一个1~26的数字,对应英文大写字母表的索引,在屏幕上显示输出对应的英文字母。

num = eval(input("请输入一个的1~26数字:"))
ls = [0]
for i in range(65, 91):
	ls.apppend(chr(i))
print("{}".format(ls[num]))	

知识回顾: python字符串
python字符串中每一个字符都是Unicode编码字符
ord(x) :将单个 字符转化为Unicode编码
chr(u) :将Unicode编码转换为对应字符
字符A的Unicode编码是65,字符a的Unicode编码是97

将用户输入的十进制整数,转换为二进制,八进制,和十六进制(大写)屏幕输出

num = int(input('请输入数字:'))
print("对应的二进制数:{0:b}\n八进制数:{0:o}\n十六进制数:{0:X}".format(num))

字符串格式化输出
将参数num同时传入三个槽中,槽中必须填写参数序号。否则会出现IndexError
IndexError: Replacement index 1 out of range for positional args tuple

槽内部格式化配置方式{<参数序号>:<格式控制标记>}

  • 格式控制标记:<填充><对齐<宽度><,><精度><类型>

  • 默认<左对齐,空格填充

  • <,> 数字千分位的分隔符

  • <.精度> 浮点数小数精度/字符串 最大输出长度

  • <类型>:
    整数类型:b二进制 c(Unicode编码对应的字符)d(十进制) o(八进制)x(小写的十六进制表示形式) X(大写的十六进制表示形式)
    浮点数类型 e E f %

题目:输入一个年份。编写一个函数,判断用户输入的是否为闰年。(闰年分为普通闰年和世纪闰年,普通闰年是能被四整除,但是不能被100整除的年份,世纪闰年是能被400整除的年份)

def judge_year(year):
	if year % 4 == 0 and year % 100 != 0:
		return True
	elif year % 400 == 0:
		return True
	return False

year = eval(input('请输入一个年份:'))
if judge_year(year) == False:
	print('{}年不是闰年。'.formant(year))
else:
	print('{}年是闰年。'.format(year))

知识回顾:条件
if 条件表达式为Ture, 执行if 条件下的语句。
elif 检查多个表达式是否为True,为真执行特定代码块中的代码。
知识联系多个判断查找 : 使用映射对象(比如:字典)的最大一个好处就是它的搜索操作比 类似 if-elif-else语句或者是for循环这样的序列查询要快很多。

异常处理

题目:使用python异常处理结构,写对数计算,要求底数大于0且不等于1, 真数大于0, 且输入的必须为实数, 否则抛出对应的异常。

import math
try:
	a = eval(input('请输入底数:'))
	b = eval(input('请输入真数:'))
	c = math.log(b, a)  # math.log(真,底)
except ValueError:  # 每个条件逐一判断
	if a <= 0 and b > 0:
		print('底数必须大于0')
	elif a > 0 and b <= 0:
		print('真数必须大于0')
	elif a <= 0 and b <= 0:
		print('真数和底数都必须大于0')
except ZeroDivisionError:
	print('底数不能为1')
except NameError:
	print('输入必须为实数')
else:
	print(c)

python math模块

import math
菜鸟教程 math模块

math.log(x[, base])使用一个参数,返回x的自然对数
常用函数:

  1. 数学常量
    math.pi 圆周率
    math.e 自然对数的底数
  2. 数学函数 (求绝对值。平方根、幂函数…)
    math.ceil(x) 返回大于等于x的最小整数
    math.floor(x) 返回小于等于x的最大整数
    math.sqrt(x) 返回x的平方根
    math.pow(x, y) 返回x的y次幂
    math.log(x) 返回x的自然对数
    math.log10(x) 返回x的以10为底的对数
    math.degrees(x) 将弧度转换为角度
    math.radians(x) 将角度转换为弧度
  3. 三角函数
    math.sin(x) 返回x的正弦值,x以弧度为单位
    math.cos(x) 返回x的余弦值,x以弧度为单位
    math.tan(x) 返回x的正切值,x以弧度为单位
    math.asin(x) 返回x的反正弦值(弧度)
    math.acos(x) 返回x的反余弦值(弧度)
    math.atan(x) 返回x的反正切值(弧度)
    math.atan2(y, x) 返回给定的X,Y坐标值的反正切值,y/x,弧度制.

解密

将每一个英文字符循环替换为字母列表序列中该字符后第三个字符。
原文字符P,其密文字符C满足如下条件
C = (P+3)mod26
解密方法反之,P = (C-3)mod26
步骤:1.接收用户输入文本 2.加密(对照字母a-z, A-z按照密码算法进行转换,同时输出
其他非英文原样输出。

intxt = input('请输入明文:')
for p in intxt:
	if 'a' <= p <= 'z':
	# 后三个字符的位置用Unicode编码确定,ord(p)-ord('a')+3  循环mod26  从'a'开始,最后转换为字符输出
		print(chr(ord('a')+(ord(p)-ord('a')+3)%26), end="")
	elif "A" <= p <= "Z":
		print(chr(ord('A')+(ord(p)-ord('A')+3)%26), end="")
	else:
		print(p, end="")

# 菱形
...*
..**
.***
****
.***
..**
...*
for i in range(0, 4):
	print(" "*(3-i), end="") #
	print("*"*(i+1))
for i in range(0, 4):
	print(" "*(i+1), end="")
	print("*"*(3-i))

函数的返回结果是元组类型

获得用户输入的一组数字,采用逗号风输入,输出其中的最大值。

data = eval(input('请输入一组数据,以逗号分割:'))
print(max(data))

【答案解析】要把输入的数据中最大值输出,可使用max()方法。input()方法输入的数据是字符串类型,字符串的比较是根据ASCII进行比较的,所以需要使用eval()方法把字符串类型转换Python数值类型,然后max()方法对变量data进行比较,所以空白处应填“max(data)”。

在这里插入图片描述

fo = open('PY301-1.py', 'w')
class Horse():
	def __init__(self, category. age, gender):
		self.category = category
		self.age = age
		self.gender = gender
	def get_descriptive(self):
		self.info = "一匹" + self.category + str(self.age) + "岁的"+ self.gender + "马"
	def write_speed(self, new_speed):
		self.speed = update_speed
		addr = "在草原上奔跑的速度是"
		fo.write(self.info + "," + addr + self.speed + "km/h")
horse = Horse("阿拉伯", 12, "公")
horse.get_descriptive()
horse.update_speed(50)
fo = open("PY301-2.txt", 'w')
class Horse():
	def __init__(self, category. age, gender):
		self.category = category
		self.age = age
		self.gender = gender
	def get_descriptive(self):
		self.info = "一匹" + self.category + str(self.age) + "岁的" +  self.gender + "马"
	def write_speed(self, new_speed):
		self.speed = new_speed
		addr = "在草原上奔跑的速度是"
		fo.write(self.info + "," + addr + self.speed + "km/h")

# 继承Horse  super()方法
class Camel(Horse):
	def __init__(self, category, age, gender):
		super().__init__(category, age, gender)
	def write_speed(self, new_speed):
		self.speed = new_speed
		addr = "在沙漠上奔跑的速度是"
		fo.write(self.info.replace("马", "骆驼")+ addr + self.speed + 'km/h')
		
camel = Camel("双峰", 20, "母")
camel.get_descriptive()
camel.write_speed(40)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值