Python 基础学习Chapter2

美元与人民币转换

string = input("请输入带符号的金钱数额:")
# 输入金额
if string[-1] == '$':
    # 判断币种并进行转换
    # 如果为美元则截取转换后将数值乘以汇率
    rmb = eval(string[0:-1]) * 6
    print("转换后的为{}¥".format(rmb))
elif string[-1] == '¥':
    my = eval(string[0:-1]) / 6
    print("转换后的为{}$".format(my))
else:
    print("输入格式有误")

请输入带符号的金钱数额:12$
转换后的为72¥

美元与人民币转换(封装为函数)

def rmb2my(string):
    if string[-1] == '$':
        rmb = eval(string[0:-1]) * 6
        print("转换后的为{}¥".format(rmb))
    elif string[-1] == '¥':
        my = eval(string[0:-1]) / 6
        print("转换后的为{}$".format(my))
    else:
        print("输入格式有误")


money = input("请输入带符号的金钱数额:")
rmb2my(money)

请输入带符号的金钱数额:12¥
转换后的为2.0$

美元与人民币转换(循环调用函数,直到N||n结束)

def rmb2my(string):
    if string[-1] == '$':
        rmb = eval(string[0:-1]) * 6
        print("转换后的为{}¥".format(rmb))
    elif string[-1] == '¥':
        my = eval(string[0:-1]) / 6
        print("转换后的为{}$".format(my))
    else:
        print("输入格式有误")


money = input("请输入带符号的金钱数额,输入(N,n)结束程序:")

while money[-1] not in ['N', 'n']:
    rmb2my(money)
    money = input("请输入带符号的金钱数额,输入(N,n)结束程序:")

请输入带符号的金钱数额,输入(N,n)结束程序:12¥
转换后的为2.0$
请输入带符号的金钱数额,输入(N,n)结束程序:20$
转换后的为120¥
请输入带符号的金钱数额,输入(N,n)结束程序:N

五角星绘制

from turtle import *

fillcolor("red")
begin_fill()
while True:
    forward(200)
    right(144)
    if abs(pos()) < 1:
        break
end_fill()

太阳花绘制

from turtle import *

color("red", "yellow")
begin_fill()
while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break
end_fill()
done()

---------------------------------------------------------------------------

Terminator                                Traceback (most recent call last)

<ipython-input-1-3583bffe0b6f> in <module>
      5 while True:
      6     forward(200)
----> 7     left(170)
      8     if abs(pos()) < 1:
      9         break


D:\Anaconda3\lib\turtle.py in left(angle)


D:\Anaconda3\lib\turtle.py in left(self, angle)
   1697         67.0
   1698         """
-> 1699         self._rotate(angle)
   1700 
   1701     def pos(self):


D:\Anaconda3\lib\turtle.py in _rotate(self, angle)
   3274             for _ in range(steps):
   3275                 self._orient = self._orient.rotate(delta)
-> 3276                 self._update()
   3277         self._orient = neworient
   3278         self._update()


D:\Anaconda3\lib\turtle.py in _update(self)
   2658             return
   2659         elif screen._tracing == 1:
-> 2660             self._update_data()
   2661             self._drawturtle()
   2662             screen._update()                  # TurtleScreenBase


D:\Anaconda3\lib\turtle.py in _update_data(self)
   2644 
   2645     def _update_data(self):
-> 2646         self.screen._incrementudc()
   2647         if self.screen._updatecounter != 0:
   2648             return


D:\Anaconda3\lib\turtle.py in _incrementudc(self)
   1290         if not TurtleScreen._RUNNING:
   1291             TurtleScreen._RUNNING = True
-> 1292             raise Terminator
   1293         if self._tracing > 0:
   1294             self._updatecounter += 1


Terminator: 

正方形旋转绘制

from turtle import *
import random


# 绘制正方形的方法
def square_drawing():
    for j in range(4):
        # 前进规定距离
        fd(初始长度)

        left(90)


初始长度 = eval(input("请输入正方形的边长:\n"))
正方形个数 = eval(input("请输入正方形的个数:\n"))
旋转角度 = 90 / 正方形个数
颜色 = ['red', 'green', 'yellow', 'blue']
speed(5)

for i in range(正方形个数):

    # 设置颜色
    pencolor(颜色[random.randint(0, 3)])
    # 绘制正方形
    square_drawing()
    # 旋转
    left(旋转角度)
done()

请输入正方形的边长:
20
请输入正方形的个数:
5

正方形绘制(第四边重合)

from turtle import *

chang = 0
col = ['red', 'green', 'blue', 'yellow']
for count in range(50):
    pencolor(col[count % 4])
    fillcolor(col[count % 4])
    seth(90 * (count + 1))
    if count % 3 == 0:
        chang += 10
        fd(chang)
        continue
    fd(chang)
done()

正方形绘制(迷宫造型)

from turtle import *

col = ['red', 'green', 'blue']
for count in range(50):
    pencolor(col[count % 3])
    seth(90 * (count + 1))
    fd(10 * (count + 1))
done()

温度转换

TempStr = input("请输入带符号的温度值:")
# 判断最后的温度符号
if TempStr[-1] in ['F', 'f']:
    # 进行公式转换截取第一个到符号位之前的数字并通过eval函数转换为python语句
    C = (eval(TempStr[0:-1]) - 32) / 1.8
    print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['c', 'C']:
    F = eval(TempStr[0:-1]) * 1.8 + 32
    print("转换后的温度是{:.2f}F".format(F))
else:
    # 以上条件都不符合说明输入有问题
    print("输入有误")

请输入带符号的温度值:20C
转换后的温度是68.00F

温度转换函数版

def temp_convert(value_str):
    # 定义转换函数判断温度单位
    if value_str[-1] in ['F', 'f']:
        # 进行公式转换截取第一个到符号位之前的数字并通过eval函数转换为python语句
        c = (eval(value_str[0:-1]) - 32) / 1.8
        print("转换后的温度是{:.2f}C".format(c))
    elif value_str[-1] in ['c', 'C']:
        f = eval(value_str[0:-1]) * 1.8 + 32
        print("转换后的温度是{:.2f}F".format(f))
    else:
        print("输入格式有误")


temp_str = input("请输入带符号的温度值:")
# 调用函数
temp_convert(temp_str)

请输入带符号的温度值:20C
转换后的温度是68.00F

温度转换循环函数版

def temp_convert(value_str):
    if value_str[-1] in ['f', 'F']:
        c = (eval(value_str[0:-1]) - 32) / 1.8
        print("{:.2f}c".format(c))
    elif value_str[-1] in ['c', 'C']:
        f = 1.8 * eval(value_str[0:-1]) + 32
        print("{:.2f}f".format(f))
    else:
        print("输入有误")


temp_str = input("请输入带符号的温度值:")
while temp_str[-1] not in ['N', 'n']:
    temp_convert(temp_str)
    temp_str = input("请输入带符号的温度值:")

等边三角形绘制

from turtle import *

fillcolor("red")
begin_fill()

while True:

    fd(200)
    right(120)
    if abs(pos()) < 1:
        break
end_fill()

Python 蟒蛇绘制

import turtle

turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
    turtle.circle(40, 80)
    turtle.circle(-40, 80)
turtle.circle(40, 40)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2 / 3)
turtle.done()

彩蛋 递归树

from turtle import *
from random import *
from math import *


def tree(n, l):
    pd()  # 下笔
    # 阴影效果
    t = cos(radians(heading() + 45)) / 8 + 0.25
    pencolor(t, t, t)
    pensize(n / 3)
    forward(l)  # 画树枝

    if n > 0:
        b = random() * 15 + 10  # 右分支偏转角度
        c = random() * 15 + 10  # 左分支偏转角度
        d = l * (random() * 0.25 + 0.7)  # 下一个分支的长度
        # 右转一定角度,画右分支
        right(b)
        tree(n - 1, d)
        # 左转一定角度,画左分支
        left(b + c)
        tree(n - 1, d)
        # 转回来
        right(c)
    else:
        # 画叶子
        right(90)
        n = cos(radians(heading() - 45)) / 4 + 0.5
        pencolor(n, n * 0.8, n * 0.8)
        circle(3)
        left(90)
        # 添加0.3倍的飘落叶子
        if (random() > 0.7):
            pu()
            # 飘落
            t = heading()
            an = -40 + random() * 40
            setheading(an)
            dis = int(800 * random() * 0.5 + 400 * random() 
                      * 0.3 + 200 * random() * 0.2)
            forward(dis)
            setheading(t)
            # 画叶子
            pd()
            right(90)
            n = cos(radians(heading() - 45)) / 4 + 0.5
            pencolor(n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4)
            circle(2)
            left(90)
            pu()
            # 返回
            t = heading()
            setheading(an)
            backward(dis)
            setheading(t)
    pu()
    backward(l)  # 退回


bgcolor(0.5, 0.5, 0.5)  # 背景色
ht()  # 隐藏turtle
speed(0)  # 速度 1-10渐进,0 最快
tracer(0, 0)
pu()  # 抬笔
backward(100)
left(90)  # 左转90度
pu()  # 抬笔
backward(300)  # 后退300
tree(12, 100)  # 递归7层
done()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值