Python02 标准输入输出、数据类型、变量、随记数的生成、turtle模块详解

1 标准输出

  python3利用 print() 来实现标准输出

def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    """
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
    """
    pass

  1.1 输出字符串

    在 sprint() 的括号中加上字符串就可以在控制台输出指定的文字,比如输出 “Hello Boy” 的实现代码如下

print("Hello Boy")

    

  1.2 输出多个字符串

    print() 函数可以接收多个字符串,各个字符串之间用逗号进行隔开,在输出时逗号不会输出而是用空格代替

print("Hello", "Boy", "Good", "World")

    技巧01:print() 可以接收多个字符串的原理是print() 方法可以接收任意多个参数,这一点从源码中可以看出;详情请参见方法的形参部分知识点

    技巧02:遇到逗号用空格代替的原因是print()方法有一个默认参数 seq ,该参数的作用就是作为多个输出值的分隔符,其默认值就是空格  

    

    

  1.3 输出整数或者计算结果

    输出整数时直接会将整数进行输出,输出计算结果时会对数学表达式进行计算后再将结果进行输出

    

  1.4 输出多个变量

    print() 方法也可以接收多个变量进行输出,各个变量之间利用逗号进行分隔

    

  1.5 结束符

    print() 方法默认的结束符时换行符,这一点从源码中可以看出

    1.5.1 默认结束符的效果

      

    1.5.2 自定义结束符的效果

      

 

2 标准输入

  python3提供的input()方法可以让用户输入一个字符串,并存放到一个变量中去;print()方法可以在括号中添加提示信息,这些提示信息会被输出到控制台

def input(*args, **kwargs): # real signature unknown
    """
    Read a string from standard input.  The trailing newline is stripped.
    
    The prompt string, if given, is printed to standard output without a
    trailing newline before reading input.
    
    If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
    On *nix systems, readline is used if available.
    """
    pass

  2.1 输入字符串

    

  2.2 输入类型

    利用input()输入的数据都是字符串类型的数据

    

    坑01:利用input()输入的任何数据都是字符串类型的数据,如果想利用输入的数据进行一些数学运算就必须进行类型转换

    2.2.1 input()实战

      需求:用户根据提示信息提供圆的半径和圆周率的取值,系统自动输出直径、圆周、面积等信息

      坑01:在进行数学计算之前如果不对数据进行类型转化就会报类型错误

      

radius = input("请输入半径:\n")
PI = input("请输入圆周率的取值:\n")
diameter = float(radius) * 2
area = float(PI) * float(radius) * float(radius)
perimeter = float(PI) * diameter
print("直径为:", diameter, ";周长为:", perimeter, "; 面积为:", area)
View Code

 

3 数据类型

  在程序中不同的数据需要定义不同的数据类型

  3.1 整型

    Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1100-80800,等等。计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff000xa5b4c3d2,等等。

    技巧01:利用print()方法输出十六进制的数时输出的是转化成了十进制的数

    

  3.2 浮点型

    浮点数也就是小数;浮点数可以用数学写法,如1.23,3.14,-9.01;但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

    

  3.3 字符串

    字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识。

    

    

    3.3.1 多行字符串

      \n 这个转义字符代表换行,为了简化,Python允许用'''...'''的格式表示多行内容

       

  3.4 布尔型

    布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来。

    

  3.5 空值

    空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

  3.6 其他类型

    列表、字典等多种数据类型,还允许创建自定义数据类型(即:对象)

    待更新......2018-3-20 10:25:44

   

4 变量

  变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。

  变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,比如:这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句为:String name = new String("warrior");

  因为python是动态语言,所以一个变量的类型取决于该变量的指向,如果该变量的指向的东西的类型发生了变化,那么该变量的类型也会发生变化

  

  4.1 变量在内存中的表示

    技巧01:在python中一切都是对象,所以python中变量存储的都是地址信息而不是数据值;变量的值就是变量指向数据的地址信息

name = "warrior"

    4.1.1 python解释器会根据上面的代码做两件事

      》在内存中创建一个“warrior”字符串

      》在内存中创建一个名为name的变量,而且该变量指向“warrior”

    4.1.2 变量之间的赋值

      

      坑01:这里并不是将name01的值赋值给了name02,而是name02指向name01指向的数据

      技巧01:因为name01和name02都指向同一个字符串"warrior",所以name01和name02的内容都是字符串"warrior"在内存中的地址信息(备注:因为name01和哪么02都指向了同一个字符串,所以他们的内存地址是一样的,他们的值也是一样的)

 

      解释:

        python解释器在遇到 name02 = name01 这行代码时执行的操作

          》在内存中创建一个名为name02变量

          》让name02变量指向name01所指向的内容(理解:name01和name02中存放的不是数据,而实数据对应的地址信息,name02 = name01实际上是将name01中存放的地址信息赋值给了name02)

    

      解释:

        python解释器在遇到 name02 = “fury” 这行代码时执行的操作

          》改变name02的指向,即:改变name02中存放的地址信息值

          技巧01:变量的指向发生变化后,变量的值以及变量的地址都会发生变化

          技巧02:变量的值就是变量指向数据的地址信息

name01 = "warrior"
name02 = name01
print("name01指向的值为:",name01,"-----", "name02指向的值为:",name02)
print("name01变量的地址信息为:", id(name01),"-----", "name02变量的地址信息为:", id(name02))
print(name01 is name02)
print(name01 == name02)
name01 = "fury"
print("name01指向的值为:",name01,"-----", "name02指向的值为:",name02)
print("name01变量的地址信息为:", id(name01),"-----", "name02变量的地址信息为:", id(name02))
print(name01 is name02)
print(name01 == name02)
View Code

 

5 随机数

  python自带的random模块可以用来生成随机数

  5.1 猜数字游戏

    5.1.1 需求

      随机产生一个数字同用户输入的数字进行比较,知道猜中为止

    5.1.2 代码实现

      

import random
randomNum = random.randint(0,10)
inputNum = input("请输入一个0到10之间的整数:")
judge = True
while (judge):
    if (randomNum != int(inputNum)):
        if (randomNum < int(inputNum)):
            inputNum = input("大啦,请在输入一个0到10之间的整数:")
        if (randomNum > int(inputNum)):
            inputNum = input("小啦,请在输入一个0到10之间的整数:")
    else:
        print("恭喜你,才对啦!")
        judge = False
View Code

     5.1.3 改进

      规定输入次数、设定随记数范围

 

6 turtle模块

   6.1 命令介绍

    6.1.1 运动命令

      forward(d) -> 向前移动d个像素点

      backward(d) -> 向后移动d个像素点

      right(dgree) -> 向右转动dgree度

      left(dgree) -> 向左转动dgree度

      goto(x, y) -> 光标移动到(x, y)处

      speed(apeed) -> 设定画笔的速度,速度值为[0, 10]之间的整数

    6.1.2 画笔控制命令

      down() -> 画笔落下,即:开始画图

      up() -> 画笔抬起,即:停止画图

        技巧01:goto(x,y) 之前一般需要执行up(),goto(x, y)之后一般需要执行down()  

      pensize(width) -> 设置画笔的宽度的像素值

      pencolor(color) -> 设置画笔的宽度

      fillcolor(color) -> 设置填充颜色

        技巧02:fillcolor(color)通常需要和 begin_fill() 和 end_fill() 配合使用

      begin_fill() -> 开始填充颜色

      end_fill() -> 结束填充颜色

    6.1.3 特殊指令

      turtle.mainloop() -> 画图结束后静止(注:其实是一直在重复画,只是给我们个感觉是静止而已)

  6.2 练习

    6.2.1 画正三角形

      

# 画三角形
import turtle
t = turtle.Pen()
t.fillcolor("blue")
t.pencolor("red")
t.pensize(4)
t.begin_fill()
t.forward(60)
t.left(120)
t.forward(60)
t.left(120)
t.forward(60)
t.end_fill()
turtle.mainloop()
View Code

    6.2.2 画奥运五环

      

# 话奥运五环
import turtle
t = turtle.Pen()
t.pensize(4)

t.pencolor("blue")
t.circle(30)

t.up()
t.goto(70, 0)
t.down()
t.pencolor("black")
t.circle(30)

t.up()
t.goto(140, 0)
t.down()
t.pencolor("red")
t.circle(30)

t.up()
t.goto(35, -35)
t.down()
t.pencolor("yellow")
t.circle(30)

t.up()
t.goto(105, -35)
t.down()
t.pencolor("green")
t.circle(30)

turtle.mainloop()
View Code

    6.2.3 利用循环画

      

import turtle
# 同时设置pencolor=color1, fillcolor=color2
turtle.color("red", "yellow")

turtle.begin_fill()
for i in range(50):
    turtle.forward(200)
    turtle.left(170)
turtle.end_fill()
turtle.mainloop()
View Code

     6.2.4 画五角星

      

import turtle
t = turtle.Pen()
t.pencolor("yellow")
t.fillcolor("red")
t.pensize(4)
t.begin_fill()
for i in range(5):
    t.forward(100)
    t.right(144)
t.end_fill()
turtle.mainloop()
View Code

 

posted @ 2018-03-20 11:22  寻渝记  阅读(728)  评论(0编辑  收藏  举报