python3 ---数据类型 (2)

为什么编程语言中要有类型

类型有以下几个重要角色:

  1. 对机器而言,类型描述了内存中的电荷是怎么解释的。
  2. 对编译器或者解释器而言,类型可以协助确保上面那些电荷、字节在程序的运行中始终如一地被理解。
  3. 对程序员而言,类型可以帮助他们命名、组织概念,帮助编纂文档,支持交互式编辑环境等。

以上观点是 Edwin Brady 在《Type-driven Development with Idris》中的说法。

一、数据类型与数据转换

1. 数据类型

1.1 整形

任何仅含数字的序列在 Python 中都被认为是整型

>>> a = 0
>>> b = 100
>>> c = -2
>>> d = 0x50
>>> 0b0101
5
>>> type(0b0101)
<class 'int'>

进制在 Python 中的表示形式

>>> 11            # 十进制
>>> 0b01011  # 二进制
>>> 0o13        # 八进制
>>> 0xb          # 十六进制

1.2浮点型

带小数点的数字, 就是平常我们说的小数。

0.1
-0.7

1.3字符串类型

s1 = "www.qfedu.com"
s2 = 'yangge'

print (
    """
    hello
    word
    """
)
 ----result------------
     hello
     word

1.4布尔类型

布尔值只有两个

  • True 表示真
  • False 表示假
True
False
1 == True
0 == False
------------典型案例--------------------------
a= False
b = 0
a == b
True         //即使 a = b 他们两个id也不相同
id(0)  
1945857024
id (False)
1945366720

2.数据类型之间的转换

2.1 把其他类型转换为整型

# 转换
>>> int(0.1)
0
>>> int(0.9)
0

int 不能对字符串类型表示的浮点数进行转换

In [52]: int('123.9')
--------------------------------------------------------------
ValueError                   Traceback (most recent call last)
<ipython-input-52-843b2aecee10> in <module>()
----> 1 int('123.9')

ValueError: invalid literal for int() with base 10: '123.9'

2.2 把其他类型转换为浮点型

# 转换
>>> float(1)
1.0
>>> float('1')
1.0
>>> float('-1')
-1.0
>>> float(-1)
-1.0
>>> float('1.3')
1.3

2.3 把其他类型转换为字符串

>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str(True)
'True'
>>> str(False)
'False'
>>>

2.4 把其他类型转换为布尔型

image

三、扩展进制运算

image
image

四、运算符

1. 基本算术运算符

n = 1 + 100
print(n)

print(100 / 4)
print(100 // 4)      #除数取整
print(2 **  10)      #幂数相乘
print(10 % 3)      #取余数

// 累加 累乘 累除 等等
n = 0
n +=1
n *=3
print(n)

2运算的判断

2.1 值判断

image

2.2 逻辑判断和成员判断

image

典型事例:

n1 = 100
n2 = 100
s1 = 'hello'
s2 = 'hello'
b = n1 == n2 and s1 != s2     //并判断
print(b)
b = n1 == n2 or  s1 == s2     //或判断
print(b)

//成员判断
s = 'hello'
print('h' in s )
print('lo' in s)
print('hle' in s )

//not的使用:判断一个变量是否为真
r1 = True
r2 =False
if r1:
    print('ok')
if not r1:
    print('ok')      //不正确非输出
if not  r2:
    print('ok')

2.3 链式判断

image

3. “假” 在各种数据类型中的表示

image

五、流程控制语句

1. if 判断语句

基本的语法格式:
if 条件语句: # 注意这里必须以英文的冒号结束
条件语句为真时,执行的语句

n = input("输入数字>>:")
n = int(n)    # input 接收到的数据,都是字符串类型
if n == 5:
    print('相等')

n = input("输入数字>>:")
n = int(n)
if n == 5:
    print('相等')
else:               # else 后边必须有英文的冒号
    print('No')

n = input("输入数字>>:")
# 必须输入数字来测试
n = int(n)

if not n:
    print("空值")
elif n == 5:
    print('ok')
elif n > 5:
    print('大了')
else:
    print('小了')

2. if嵌套语句

n = input("输入数字>>:")
if n.isdigit():
    f_n = int(n)
    if f_n == 5:
        print('ok')
    elif f_n > 5:
        print('大了')
    else:
        print('小了')
else:
    print('请输入数字')

典型案例展示:嵌套语句

n = input("星期日你有空吗?")
if n == "yes":
     inp = input("带身份证了吗?")
     if inp == 'yes':
         print("去如家 app")
     else:
         print("去我家")
else:
    print('out')

3. while循环

方法一:                  
while True:
    n = input("输入数字>>:")
    n = int(n)
    if n == 5:
        print('相等')
        break
    elif n > 5:
        print('大了')
    else:
        print('小了')

方法二:
c =7    //whille 赋值判断
while c <10:
    c +=1
    print(c)
    n = input("输入数字>>:")
    n = int(n)
    if n == 5:
        print('相等')
        break
    elif n > 5:
        print('大了')
    else:
        print('小了')

4. 迭代

  • 什么是迭代

​ 迭代 是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。

​ 每一次对过程的重复被称为一次“迭代”。

  • for 循环(英语:for loop)

​ 是一种编程语言的迭代陈述,能够让程式码反复的执行。

​ 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器。

​ 这使得for循环能够知道在迭代过程中的执行顺序,记住上次被循环元素的位置。

for i in 'hello world':
    print(i)

range(n)

产生一个可被循环的整数序列,默认序列的元素从 零 开始

产生的元素数量是 n

案例一:
for i in range(5):
    print(i)
案例二:
for i in range(1,11):
    print('玫瑰:',i)

break (只能跳出最近的循环或者迭代)和 continue

for i in range(0, 10):
    print(i)
    if i < 3:
        inp_num = int(input(">>:").strip())
        # inp_num = int(inp_num)
        if inp_num == 15:
            print('You get it')
            break
        elif inp_num > 15:
            print("高了")
        else:
            print("低了")
    else:
        print("Game over")
        break

for i in range(2, 10, 2):
    print("循环到", i)
    if i == 4:
        continue   //只终端这一条后续继续执行
    print(i)
    if i == 6:
        break

range(开始索引号:结束索引号:步长)
其道理和切片一样

扩展知识

for … else

•1. 当 for 循环体正常执行完毕时,再执行一下 else 后面的代码

•2. 当 执行了 break 后,就不再执行 else 后面的代码了

for i in range(2):
    if i == 10:
        print('get it')
        n = i
        break
else:
    print("Nothing")

6. 猜数游戏

要求:

  1. 提示用户输入一个数字 inp = input()
  2. 判断用户输入的值是否等于 18 == inp
  3. 允许用户尝试 3 次
  4. 假如 3 次机会都没有猜对,就再次提示用户是否继续
  5. 用户输出 y ,就再给 3 次机会。 输入 n 则退出游戏
n = 0
while n < 3:
    bef_n = n
    n += 1
    # 1.  提示用户输入一个数字 inp = input()
    num = input("输入数字:")
    # 2.  判断用户输入的值是否等于 18 == inp
    if not num.isdigit():
        print("请输入数字")
        n = bef_n
        continue
    num = int(num)

    if num == 18:
        print("猜对了")
    elif num > 18:
        print("大了")
    else:
        print("小了")
    # 3.  允许用户尝试 3 次
# 4.  假如 3 次机会都没有猜对,就再次提示用户是否继续
    if n == 3:
        while True:
            inp = input("是否继续,[y:继续游戏, n:退出游戏]")
            if inp == 'y':
                n = 0
                break
            elif inp == 'n':
                exit('退出游戏')

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352