100天学python-Day 01

前言

从今天开始,我将用重新学习python。
为什么用100天这个标题,是因为遵照的是github上一个100天学python的项目
地址如下:day 01
同时,还参考了《a bite of python》《笨办法学python》以及Python123作为练习
大家可以都下载/收藏一下。
有一些方便参考的基础教程,任选一样先看起来:
1.菜鸟教程
2.《python从入门到实践》
3.《python基础教程》

前面几天比较简单的,可以利用在线平台出结果:
1.菜鸟工具
2.在线编程

有些同学可能觉得我在这里写的内容过于简略,其实我这里主要是用于记录自己的进度的,主要参考资料都已经列出,文字部分其实大家直接看就可以,我再复制粘贴也没什么意思。
如果大家需要的话,我可以在B站上复现一下我是怎么学的,大家看B站视频来学习基础知识即可。

Day 01内容

今天的内容主要是安装
可能看安装就有点头疼,我建议直接选一种,不要多想
我自己的windows系统
1.首先就是安装python ,参见百度 link
这时,你就可以在cmd命令行下运行python了
除了打开.py的文件,你还可以输入"python",之后直接写代码,如“print(“Hello,world”);”回车,会发现下一行就是 Hello,world
2.还可以选择安装anaconda(我选择的这个)
3.接下来是安装大型IDE
具体的安装方式,在我的之前的文章中提到过选择Python开发环境

上面的几步大家都要自己一步一步,慢慢来。
如果觉得我讲得不清楚,随便在网上搜一下,应该都有很多傻瓜教程的。

还有一个小内容就是关于注释
分为单行注释和多行注释

# 单行注释
'''
多行注释
多行注释
'''

Day 01 练习

我们可以看到100天教程中有两个练习
这是针对交互式环境的练习
你只要打开命令行或者IDLE(如果你认真看了我上面的步骤和文章应该知道怎么打开)
然后一行一行输入下来
注意:我不会把代码照抄过来,练习的来源我已经告诉大家了,你只要打开我给你的连接,下拉到练习部分,一步一步打下来就行。不要复制粘贴!
先完成第一个任务(只要输入第一行就行)
完成之后,你可能觉得有点莫名其妙
这个任务其实是有背景故事,算是一个小彩蛋吧,另外还有英文版
第二个练习需要一行一行输入,输入的时候,注意图像的变化
turtle是python的一个图形库,import就是引入了,显然import可以引入库和模块
我们可以画出一个正方形
想必你在使用的过程中已经有些明白这些函数的用法了吧
我在这里贴一个详解供参考
如果你愿意,可以把详解最后的几个程序都打一遍。

import turtle
import time

# 同时设置pencolor=color1, fillcolor=color2
turtle.color(’red‘, ’yellow‘)
  
turtle.begin_fill()
# 开始填充
for _ in range(50):
turtle.forward(200)
turtle.left(170)
#循环50次,画出太阳花,过程很有意思
turtle.end_fill()
  #结束填充
turtle.mainloop()

太阳花
那篇文章中用的是python2,所以有些不一样,大家还是照着我这个来。
我们注意到文章中有一个

# coding=utf-8

这句话往往在第一行或第二行,作用是强制使用某种编码,如这里的utf-8编码,目的是可以编写中文
它的另外形式还有

# coding:utf-8
## -*- coding:utf-8 -*-

过去我们使用的python2 如果不加这一句,含有中文的代码便无法正常运行,所以需要加
而现在的python3 均默认使用了utf-8,所以不用再加。

import turtle
import time
  
turtle.pensize(5)
turtle.color('yellow','red')
  
turtle.begin_fill()
for _ in range(5):
  turtle.forward(200)
  turtle.right(144)
turtle.end_fill()
time.sleep(2)
 # 推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间
turtle.penup()
turtle.goto(-150,-120)
turtle.color("violet")
turtle.write("Done", font=('Arial', 40, 'normal'))
  
turtle.mainloop()

在这里插入图片描述
第三个时钟,难度比较大,包含许多我们还没学的内容,可以暂时不做

# coding=utf-8
  
import turtle
from datetime import *
  
# 抬起画笔,向前运动一段距离放下
def Skip(step):
    turtle.penup()
    turtle.forward(step)
    turtle.pendown()
  
def mkHand(name, length):
    # 注册Turtle形状,建立表针Turtle
    turtle.reset()
    Skip(-length * 0.1)
    # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
    turtle.begin_poly()
    turtle.forward(length * 1.1)
    # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
    turtle.end_poly()
    # 返回最后记录的多边形。
    handForm = turtle.get_poly()
    turtle.register_shape(name, handForm)
  
def Init():
    global secHand, minHand, hurHand, printer
    # 重置Turtle指向北
    turtle.mode("logo")
    # 建立三个表针Turtle并初始化
    mkHand("secHand", 135)
    mkHand("minHand", 125)
    mkHand("hurHand", 90)
    secHand = turtle.Turtle()
    secHand.shape("secHand")
    minHand = turtle.Turtle()
    minHand.shape("minHand")
    hurHand = turtle.Turtle()
    hurHand.shape("hurHand")
    
    for hand in secHand, minHand, hurHand:
        hand.shapesize(1, 1, 3)
        hand.speed(0)
    
    # 建立输出文字Turtle
    printer = turtle.Turtle()
    # 隐藏画笔的turtle形状
    printer.hideturtle()
    printer.penup()
     
def SetupClock(radius):
    # 建立表的外框
    turtle.reset()
    turtle.pensize(7)
    for i in range(60):
        Skip(radius)
        if i % 5 == 0:
            turtle.forward(20)
            Skip(-radius - 20)
            
            Skip(radius + 20)
            if i == 0:
                turtle.write(int(12), align="center", font=("Courier", 14, "bold"))
            elif i == 30:
                Skip(25)
                turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))
                Skip(-25)
            elif (i == 25 or i == 35):
                Skip(20)
                turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))
                Skip(-20)
            else:
                turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))
            Skip(-radius - 20)
        else:
            turtle.dot(5)
            Skip(-radius)
        turtle.right(6)
         
def Week(t):  
    week = ["星期一", "星期二", "星期三",
            "星期四", "星期五", "星期六", "星期日"]
    return week[t.weekday()]
  
def Date(t):
    y = t.year
    m = t.month
    d = t.day
    return "%s %d%d" % (y, m, d)
  
def Tick():
    # 绘制表针的动态显示
    t = datetime.today()
    second = t.second + t.microsecond * 0.000001
    minute = t.minute + second / 60.0
    hour = t.hour + minute / 60.0
    secHand.setheading(6 * second)
    minHand.setheading(6 * minute)
    hurHand.setheading(30 * hour)
     
    turtle.tracer(False)
    printer.forward(65)
    printer.write(Week(t), align="center",
                  font=("Courier", 14, "bold"))
    printer.back(130)
    printer.write(Date(t), align="center",
                  font=("Courier", 14, "bold"))
    printer.home()
    turtle.tracer(True)
  
    # 100ms后继续调用tick
    turtle.ontimer(Tick, 100)
  
def main():
    # 打开/关闭龟动画,并为更新图纸设置延迟。
    turtle.tracer(False)
    Init()
    SetupClock(160)
    turtle.tracer(True)
    Tick()
    turtle.mainloop()
  
if __name__ == "__main__":
    main()

那么今天就结束啦,明天见。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,您的问题已经收到。以下是我的回答: 您好!根据您的要求,我可以设计如下的Python程序: ``` import datetime gan_zhi = ["甲子", "乙丑", "丙寅", "丁卯", "戊辰", "己巳", "庚午", "辛未", "壬申", "癸酉", "甲戌", "乙亥", "丙子", "丁丑", "戊寅", "己卯", "庚辰", "辛巳", "壬午", "癸未", "甲申", "乙酉", "丙戌", "丁亥", "戊子", "己丑", "庚寅", "辛卯", "壬辰", "癸巳", "甲午", "乙未", "丙申", "丁酉", "戊戌", "己亥", "庚子", "辛丑", "壬寅", "癸卯", "甲辰", "乙巳", "丙午", "丁未", "戊申", "己酉", "庚戌", "辛亥", "壬子", "癸丑", "甲寅", "乙卯", "丙辰", "丁巳", "戊午", "己未", "庚申", "辛酉", "壬戌", "癸亥"] # 判断一个年份是否是闰年 def is_leap_year(year): if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: return True else: return False # 输入日期,返回该年干支纪年、该日期为该年的第几周、该日期为该年的第几天 def get_date_info(date_str): date = datetime.datetime.strptime(date_str, "%Y-%m-%d").date() year = date.year month = date.month day = date.day # 计算该年份的干支纪年 gan_index = (year - 1984) % 60 zhi_index = (year - 1984) % 12 gan_zhi_year = gan_zhi[gan_index] + gan_zhi[zhi_index] # 计算该日期为该年的第几周和第几天 first_day = datetime.datetime(year, 1, 1).date() first_day_weekday = first_day.weekday() days = (date - first_day).days if first_day_weekday == 6: days += 1 week = days // 7 + 1 day_of_week = date.weekday() + 1 return gan_zhi_year, week, day_of_week # 测试 print(get_date_info("2022-05-30")) # 输出 ('壬子丙午', 22, 1) ``` 以上程序定义了一个`get_date_info`函数,接受一个格式为`year-month-day`的日期字符串,返回一个元组,其中包含该年份的干支纪年、该日期为该年的第几周和第几天。 程序首先定义了一个`gan_zhi`列表,保存了60个干支组合,用于计算任意年份的干支纪年。 接下来是判断一个年份是否是闰年的函数`is_leap_year`,用于计算该年份是否有366天,也就是2月有29天,从而计算该年份的第几周和第几天。 最后是`get_date_info`函数,先将输入的字符串转换为`datetime.date`类型,然后计算该年份的干支纪年:先计算年份的干支纪年的下标,再计算年份所对应的生肖的下标,加起来组成该年份的干支纪年。 接下来计算该日期为该年的第几周和第几天:首先计算出该年第一天的日期和星期几,然后算出输入日期与第一天的天数差(注意如果第一天是星期天,需要让每周的第一天是星期一),最后将天数差除以7,就可以得到该日期是该年的第几周。同时,也可以通过`datetime.date`类型自带的`weekday`方法,得到该日期是星期几。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值