第二周:关于turtle库的使用
第三周:为基本数据类型
turtle库的总结:
一、turtle的绘图窗体
turtle.setup(width,height,startx,starty)
1.setup()设置窗体大小及位置;
2.四个参数中后两个可选;
3.setup()不是必须的
二、turtle空间以及角度坐标体系
turtle.goto()——————与数学中的平面直角坐标系类似,默认以(0,0)点为原点
turtle.bk()
turtle.fd()
turtle.circle(r.angle)
turtle.seth(angle)——————角度:只改变行进方向但不行进
turtle.left(angle)——————平面直角坐标系90°方向
turtle.right(angle)——————平面直角坐标系-90°方向
三、RGB色彩模式
white、yellow 、magenta(洋红)、 cyan(青色)、 blue、 black 、seashell、 gold 、pink 、purple、 tomato
四、turtle程序语法元素分析
import <库名>——————下面的程序必须是turtle.
from<库名>import<函数名>——————下面的程序可以不写turtle.
import<库名>as<库别名>
t.pu()
t.pd()
t.pensize()
t.width()
t.pencolor()
t.fd()
t.circle()
t.seth()
for<变量>in range(次数)——————循环语句,其中变量表示每次循环次数,0到<次数>-1
range(N)——————循环语句
range(M,N)——————产生M到N-1的整数序列
五、色彩填充
turtle.fillcolor(colorstring)——————绘制图形的填充颜色
turtle.begin_fill()
turtle.end_fill()
基本数据类型题目:
**
平方根格式化
描述
获得用户输入的一个整字,a,计算a的平方根,保留小数点后3位,并打印输出。
输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充。
如果结果超过30个字符,则以结果宽度为准。
a=input()
b=pow(eval(a),0.5)
print("{:+>30.3f}".format(b))
format的用法:
{}里先用:,+表示用+填充,>表示右对齐,同理<表示左对齐,^表示居中对齐后面加宽度,总长度为30,.2f表示输出两位小数
字符串分段组合
描述
获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出。
s=input()
str=s.split("-")
print(str[0],end='')
print("+"+str[-1])
天天向上的力量
工作日模式要努力到什么水平,才能与每天努力1%一样?
-A君: 一年365天,每天进步1%,不停歇
-B君: 一年365天,每周工作5天休息2天,休息日下降1% ,要多努力呢?
每周工作5天休息2天,计算工作日的努力参数是多少才能与每天努力1%一样。
要求如下:
(1) 一年365天,以第0天的能力值为基数,记为1.0;
(2) 当好好学习时,能力值相比前一天提高1%;当没有学习时,由于遗忘等原因能力值相比前一天下降1%;
def DAYUP(df):
dayup=1
for i in range(365):
if i%7 in [6,0]:
dayup=dayup*(1-0.01)
else:
dayup=dayup*(1+df)
return dayup
dayfactor=0.01
while DAYUP(dayfactor)<37.8:
dayfactor+=0.001
print("工作日的努力参数是: {:.3f}".format(dayfactor))
文本进度条
采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化
要求如下:
(1) 采用sleep()模拟一个持续的进度,获得文本进度条的变化时间;
(2) 通过print()函数实现单行动态刷新,在print()函数中更换参数end的默认值为’’,每次使用print()函数输出时不能换行;
(3) 要能回退:打印后光标到之前的位置 \r。
请在Windows的命令行(cmd或PowerShell)或其他操作系统的命令行下执行Python程序,获得进度条效果。
import time
scale = 50
print("执行开始".center(scale//2,'-'))
start = time.perf_counter()
for i in range(scale+1):
a = '*' * i
b = '.' * (scale - i)
c = (i/scale)*100
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))
三次方格式化
获得用户输入的一个数字,可能是整数或浮点数,a,计算a的三次方值,并打印输出。
输出结果采用宽度20个字符、居中输出、多余字符采用减号(-)填充。
如果结果超过20个字符,则以结果宽度为准。
a=eval(input())
a=pow(a,3)
print("{:-^20}".format(a))
星号三角形
星号三角形
描述
读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:
第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号
a=eval(input())
for i in range(a):
if (i+1)%2==1:
b='*'*(i+1)
b=str(b)
print(b.center(a," "))
恺撒密码
描述
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入包含大小写字母azAZ、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
str=input()
c=len(str)
for i in range(c):
if str[i]==' ':
print(str[i],end='')
elif str[i] in ['x','y','z','X','Y','Z']:
print(chr(ord(str[i])-23),end='')
elif (str[i]>='a' and str[i]<='w')or(str[i]>='A' and str[i]<='Z'):
print(chr(ord(str[i])+3),end='')
else:
print(str[i],end='')