python3 ---數(shù)據(jù)類型 (2)

為什么編程語言中要有類型

類型有以下幾個(gè)重要角色:

  1. 對(duì)機(jī)器而言,類型描述了內(nèi)存中的電荷是怎么解釋的。
  2. 對(duì)編譯器或者解釋器而言,類型可以協(xié)助確保上面那些電荷、字節(jié)在程序的運(yùn)行中始終如一地被理解。
  3. 對(duì)程序員而言,類型可以幫助他們命名、組織概念,幫助編纂文檔,支持交互式編輯環(huán)境等。

以上觀點(diǎn)是 Edwin Brady 在《Type-driven Development with Idris》中的說法。

一、數(shù)據(jù)類型與數(shù)據(jù)轉(zhuǎn)換

1. 數(shù)據(jù)類型

1.1 整形

任何僅含數(shù)字的序列在 Python 中都被認(rèn)為是整型

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

進(jìn)制在 Python 中的表示形式

>>> 11            # 十進(jìn)制
>>> 0b01011  # 二進(jìn)制
>>> 0o13        # 八進(jìn)制
>>> 0xb          # 十六進(jìn)制

1.2浮點(diǎn)型

帶小數(shù)點(diǎn)的數(shù)字, 就是平常我們說的小數(shù)。

0.1
-0.7

1.3字符串類型

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

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

1.4布爾類型

布爾值只有兩個(gè)

  • True 表示真
  • False 表示假
True
False
1 == True
0 == False
------------典型案例--------------------------
a= False
b = 0
a == b
True         //即使 a = b 他們兩個(gè)id也不相同
id(0)  
1945857024
id (False)
1945366720

2.數(shù)據(jù)類型之間的轉(zhuǎn)換

2.1 把其他類型轉(zhuǎn)換為整型

# 轉(zhuǎn)換
>>> int(0.1)
0
>>> int(0.9)
0

int 不能對(duì)字符串類型表示的浮點(diǎn)數(shù)進(jìn)行轉(zhuǎn)換

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 把其他類型轉(zhuǎn)換為浮點(diǎn)型

# 轉(zhuǎn)換
>>> float(1)
1.0
>>> float('1')
1.0
>>> float('-1')
-1.0
>>> float(-1)
-1.0
>>> float('1.3')
1.3

2.3 把其他類型轉(zhuǎn)換為字符串

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

2.4 把其他類型轉(zhuǎn)換為布爾型

image

三、擴(kuò)展進(jìn)制運(yùn)算

image
image

四、運(yùn)算符

1. 基本算術(shù)運(yùn)算符

n = 1 + 100
print(n)

print(100 / 4)
print(100 // 4)      #除數(shù)取整
print(2 **  10)      #冪數(shù)相乘
print(10 % 3)      #取余數(shù)

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

2運(yùn)算的判斷

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的使用:判斷一個(gè)變量是否為真
r1 = True
r2 =False
if r1:
    print('ok')
if not r1:
    print('ok')      //不正確非輸出
if not  r2:
    print('ok')

2.3 鏈?zhǔn)脚袛?/h4>
image

3. “假” 在各種數(shù)據(jù)類型中的表示

image

五、流程控制語句

1. if 判斷語句

基本的語法格式:
if 條件語句: # 注意這里必須以英文的冒號(hào)結(jié)束
條件語句為真時(shí),執(zhí)行的語句

n = input("輸入數(shù)字>>:")
n = int(n)    # input 接收到的數(shù)據(jù),都是字符串類型
if n == 5:
    print('相等')

n = input("輸入數(shù)字>>:")
n = int(n)
if n == 5:
    print('相等')
else:               # else 后邊必須有英文的冒號(hào)
    print('No')

n = input("輸入數(shù)字>>:")
# 必須輸入數(shù)字來測(cè)試
n = int(n)

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

2. if嵌套語句

n = input("輸入數(shù)字>>:")
if n.isdigit():
    f_n = int(n)
    if f_n == 5:
        print('ok')
    elif f_n > 5:
        print('大了')
    else:
        print('小了')
else:
    print('請(qǐng)輸入數(shù)字')

典型案例展示:嵌套語句

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

3. while循環(huán)

方法一:                  
while True:
    n = input("輸入數(shù)字>>:")
    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("輸入數(shù)字>>:")
    n = int(n)
    if n == 5:
        print('相等')
        break
    elif n > 5:
        print('大了')
    else:
        print('小了')

4. 迭代

  • 什么是迭代

? 迭代 是重復(fù)反饋過程的活動(dòng),其目的通常是為了接近并到達(dá)所需的目標(biāo)或結(jié)果。

? 每一次對(duì)過程的重復(fù)被稱為一次“迭代”。

  • for 循環(huán)(英語:for loop)

? 是一種編程語言的迭代陳述,能夠讓程式碼反復(fù)的執(zhí)行。

? 它跟其他的循環(huán),如while循環(huán),最大的不同,是它擁有一個(gè)循環(huán)計(jì)數(shù)器。

? 這使得for循環(huán)能夠知道在迭代過程中的執(zhí)行順序,記住上次被循環(huán)元素的位置。

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

range(n)

產(chǎn)生一個(gè)可被循環(huán)的整數(shù)序列,默認(rèn)序列的元素從 零 開始

產(chǎn)生的元素?cái)?shù)量是 n 個(gè)

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

break (只能跳出最近的循環(huán)或者迭代)和 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("循環(huán)到", i)
    if i == 4:
        continue   //只終端這一條后續(xù)繼續(xù)執(zhí)行
    print(i)
    if i == 6:
        break

range(開始索引號(hào):結(jié)束索引號(hào):步長(zhǎng))
其道理和切片一樣

擴(kuò)展知識(shí)

for … else

?1. 當(dāng) for 循環(huán)體正常執(zhí)行完畢時(shí),再執(zhí)行一下 else 后面的代碼

?2. 當(dāng) 執(zhí)行了 break 后,就不再執(zhí)行 else 后面的代碼了

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

6. 猜數(shù)游戲

要求:

  1. 提示用戶輸入一個(gè)數(shù)字 inp = input()
  2. 判斷用戶輸入的值是否等于 18 == inp
  3. 允許用戶嘗試 3 次
  4. 假如 3 次機(jī)會(huì)都沒有猜對(duì),就再次提示用戶是否繼續(xù)
  5. 用戶輸出 y ,就再給 3 次機(jī)會(huì)。 輸入 n 則退出游戲
n = 0
while n < 3:
    bef_n = n
    n += 1
    # 1.  提示用戶輸入一個(gè)數(shù)字 inp = input()
    num = input("輸入數(shù)字:")
    # 2.  判斷用戶輸入的值是否等于 18 == inp
    if not num.isdigit():
        print("請(qǐng)輸入數(shù)字")
        n = bef_n
        continue
    num = int(num)

    if num == 18:
        print("猜對(duì)了")
    elif num > 18:
        print("大了")
    else:
        print("小了")
    # 3.  允許用戶嘗試 3 次
# 4.  假如 3 次機(jī)會(huì)都沒有猜對(duì),就再次提示用戶是否繼續(xù)
    if n == 3:
        while True:
            inp = input("是否繼續(xù),[y:繼續(xù)游戲, n:退出游戲]")
            if inp == 'y':
                n = 0
                break
            elif inp == 'n':
                exit('退出游戲')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容