day3 變量、數(shù)學(xué)比較邏輯賦值、按位運算、字符基操

1.變量

1.聲明變量(定義) --假的聲明

說明:變量名 - 標識符(不能是關(guān)鍵字)

  • 1.遵守PEP8命名規(guī)范(所有字母都小寫,多個單詞組成,單詞之間用下劃線隔開)
  • 2.見名知意 看到名字就知道意思
  • 3.變量名 = 值。= :賦值符號。將右邊的值賦給左邊的變量。
    值:可以使任何有結(jié)果的表達式。
    例:190 變量,10+20,調(diào)用函數(shù)表達式。
  • 4.使用變量的時候,就是使用變量中保存的值;
  • 5.變量先聲明(賦值),再使用

2.聲明變量的方式

  • 1.直接賦值
age = 18
name = 'lorry'
print(age)
  • 2.同時聲明多個變量,并且賦一樣的值
a1 = a2 =a3= a4 =a5 =10
print(a1,a2,a3,a4,a5,sep=' $ ')
  • 3.同時聲明多個變量,賦不同的值,變量的個數(shù)和值得個數(shù)要保持一致
aa,bb = 10,20
print(aa,bb)
[x,y] = ["lorry","lorrybz"]
print(x,y)
  • 4.給同一個變量,后賦的值會覆蓋原先的值,同一個變量可以存儲不同類型的值
num1 = 1
num1 = 2
print(num1)
num1 = "lorry"
print(num1)
num1 =  [1,2,3,"lorry"]
print(num1)  
aaa = [1,2,3,"lorry"]
aaa[0]="lorrbz"
print(aaa)

3.聲明變量的本質(zhì)

  • 1.結(jié)論:python所有的變量存的都是數(shù)據(jù)在內(nèi)存中的地址。內(nèi)存地址大小一樣。用一個變量給另外一個變量賦值,實質(zhì)是將變量中的地址賦給另外一個變量。使用變量的時候,是使用變量中地址對應(yīng)的值。
  • 2.3.變量的三要素:值、地址和類型
    值:變量中存的地址對應(yīng)的值
    地址:變量中存儲的地址
    類型:變量中存的地址對應(yīng)的值的類型
name1 = "小明"
name2 = name1
print(name1)  #使用變量拿到變量中地址對應(yīng)的值
print(id(name1))  #  id(變量)  獲取變量中存儲的地址
print(id(name2))
print(type(name1),type(name2 ))

2.運算符

python 中的運算符:數(shù)學(xué)運算符、比較運算符、邏輯運算符、賦值運算符

1.數(shù)學(xué)運算符

  • 1.基本操作:+:加法運算 -:減法運算 *:乘法運算 /:÷法運算(基操)
  • 2.稍微高點的基操:
    • %:取余(求余數(shù))
      獲取一整數(shù)的最低一位或者幾位的值
print(10%3)
a = 35648
print(a % 10,a % 100)
  • //:整除
  1. 判斷一個數(shù)是否能被另外一個數(shù)整除;2. 整除 取商的部分.
print(10 // 3,10 % 3) 
print(3.9 // 3,3.9 % 3)
num1 = 289
print(num1 // 100)  
  • **:冪運算 x的y次方
print(2**10)   #2的10次方
print(9**0.5)  #9開平方
print(int(8**(1/3)))  #8開3次方   取整

2.比較運算符 : >, <, ==,!=,>=,<=

注意:比較運算符的運算結(jié)果都是布爾值

print(100 >10,10>100,10 > 10 )
print(11 == 10,11 !=10,"lorry" == "lorry")

3.邏輯運算符:and or not

邏輯運算符的運算對象是布爾值,運算符結(jié)果也是布爾值

    1. and(邏輯與運算)
      布爾1 and 布爾2 ;值1 and 值2
      如果值1和值2的結(jié)果都為true,結(jié)果才是true。只要有一個false,結(jié)果為fals
and 值1(true) 值2(false)
值1(false) false false
值2(true) true false

注意:邏輯與運算相當于生活中的“并且”;當需要多個條件同事滿足就使用 and 鏈接在一起
例子:例子:要求成績 > 90分,并且表現(xiàn)分>95.

name = input("名字:")
grade = int(input("表現(xiàn)分數(shù):"))  #成績
score = int(input("成績分數(shù):"))   #分數(shù)
print('%s 是否獲得獎學(xué)金:'%name,grade >90 and score >90)
    1. or(邏輯或運算)
      值1 or 值2 如果值1和值2中有一個true,就是true,兩個false才為false
or 值1(true) 值2(false)
值1(false) true false
值2(true) true true

邏輯 或 運算 相當于生活中的“或者”,當需要多個條件中至少有一個條件滿足,就使用 or 連接在一起
例:要求成績 > 90分或者表現(xiàn)分>95.

name = input("名字:")
grade = int(input("表現(xiàn)分數(shù):"))  #成績
score = int(input("成績分數(shù):"))   #分數(shù)
print('%s 是否獲得獎學(xué)金,表現(xiàn)分數(shù)%s,成績分數(shù)%s'%(name,grade,score),grade,grade >90 or score >90)
    1. not (邏輯 非 運算) 用來對某個條件否定。
      not值 :如果值是true,結(jié)果是false;如果值是false,結(jié)果是true
      例:是否能進入網(wǎng)吧的條件:年齡不小于18
age = 21
print("是否能進入網(wǎng)吧",not age < 18)
print("是否能進入網(wǎng)吧:",age >= 18)

4.賦值運算符

=; +=; -=; *=; /= ;%=
所有賦值運算符的左邊必須是變量;組合的賦值運算符左邊的變量必須已經(jīng)賦值
所有的賦值運算符最終都會進行賦值操作。

  • 1.# 1.= 直接賦值
num = 1
    1. += -= *= /= %=
      變量 += 值 相當于:變量 = 變量 + 值()
      變量 -= 值 相當于:變量 = 變量 - 值()
      變量 *= 值 相當于:變量 = 變量 * 值()
      變量 /= 值 相當于:變量 = 變量 / 值()
a = 1
a +=1      # a = 1+1
print(a)
a *=2     # a= 2*2
print(a)
a /= 2     # a =4/2
print(a)
a %= 2    # a =  2%2
print(a)
    1. 運算符的優(yōu)先級
      **數(shù)學(xué)運算符 > 比較運算符 > 邏輯運算符 > 賦值運算符 **
      優(yōu)先級高的先算。如果有括號先算括號里面的。
數(shù)學(xué)運算符中:** > *,/,%,// > +,- 
num = 10 +20 > 25 and True < 2
# num = 30 > 25 and True < 2
# num = True  and  True
# num = True
print(num)
num = 10 +(20 > 25 and True < 2)
print(num)
# num = 10 +(False and True)   and 前面如果False不會管后面,直接False
# num = 10
num = 10+2*3**2
print(num)

5.位運算符

位運算是正對二進制中每一位進行的相關(guān)操作

位運算(bit)  &(與) |(或) ^(異或)  ~(取反) >>(左移)  <<(右移)
  • a.(數(shù)字1) & (數(shù)字2) ->二進制的每一位進行" 與" 運算,運算時:如果都為1,結(jié)果為1,否則為0.
    1 & 1 為1
    0 & 1 為0
    1 & 0 為0
    0 & 0 為0
    特點:一位上的數(shù)如果和1與,就會保留這一位上的數(shù),如果和0與,就會是0.
    應(yīng)用:判斷一個數(shù)的奇偶性(最優(yōu)解答)
    將數(shù)字和1 與,如果結(jié)果是0,數(shù)字是偶數(shù),如果結(jié)果是1,數(shù)字是奇數(shù)。
a = int(input("輸入任意數(shù):"))
b = 1
c = a & b
print(c)
if c == 1:
    print("%s"%a+"是"+"奇數(shù)")
elif c == 0:
    print("%s" % a + "是" + "偶數(shù)")

舉例 11010
舉例 00111
結(jié)果 00010

3(原) = 0011
2(原) = 0010
3 & 2 =  0 0 1 0(補碼)
3 & -2
3(原/補) =                 0011
2(原) = 0010
-2(原碼) 1010 = 1101(反) = 1110(補碼)
                            0010(補碼,依然是正數(shù))
print(3 & 2)
print(3 & -2)
print(5 & 1,100 & 1)
  • b. 數(shù)字1 | 數(shù)字2 如果有一位是1結(jié)果是1,兩個都為0結(jié)果才是0.
    1 | 1 - 1
    1 | 0 - 1
    0 | 1 - 1
    0 | 0 - 0
    1101 | 1010 結(jié)果 1111
3 | 20
3(原) = 000011
20(原) = 010100
000011 | 010100 = 0100111

-3 | 20
-3(原碼) = 100011(原碼) = 111100(反碼) = 111101(補碼)
20(原碼/補碼) =                             010100   
                 -3 | 20                     111101(補碼)
                 補碼轉(zhuǎn)反碼 -1               111100(反碼)
                                             100011(原碼)= -3
print(-3|20)
  • c.按位取反
    ~ 數(shù)字 將每一位取反(0變成1,1變成0)
print(~2)
# 010 > 101(補碼)  = 100(反碼) = 111 = -3
  • d.按位異或
    (數(shù)字1) ^ (數(shù)字2) -判斷每一位相同為0,不同為1
    可判斷 數(shù)字是否相同。
11 - 01011
2  - 00010
11^2 01001(補碼)

print(11^2)
  • e.左移<<
    (數(shù)字1 )<< n (位數(shù)) - 將指定的數(shù)字的每一位向左移指定的位數(shù),就是在二進制的后面加指定的0.
左移1位 乘以2,左移2位 乘以4  相當于x * (2**n)
10 << 1  左移過程
00001010(補碼)  - 00010100(補碼)
-10 <<1
11010 -> 10101(反碼)=10110(補碼) << 1  = 101100(補碼) = 101011(反碼) = 110100 = -20
代碼:
print(10 <<1,10 <<2,10<<3,10<<4)
  • f.右移 >> ;(數(shù)字1 )>>n(位數(shù)) 將數(shù)字的二進制位向右移動指定的位數(shù)(將低位刪除指定的位數(shù)).
    相當于:** 數(shù)字1 //(2n)
20  右移過程
10100 >> 2 = 0101 =5
0101 >> 1 = 010 = 2
010 >> 1 = 01= 1
01 >> 1 = 0 = 0

3.字符串

1.什么是字符串

是python中常用的有序的但不可變的容器類的數(shù)據(jù)類型,可以同時存儲多個字符。屬于序列
字面量:使用單引號或者雙引號將任意字符引起來。

a = ('allal我是你爸爸,the top is your dad?')
b = len(a)
print("這句話:"+a+"有%s"%b+'個字符')

2.字符串的內(nèi)容

a.普通字符:包含數(shù)字字符、字母、普通符號:+ - * /
"1 2 3","sdsds","&&%90"
b.轉(zhuǎn)義字符:通過 \ 將一些字符轉(zhuǎn)換成有特殊功能或者特殊意義的字符
例如:
\t(制表符),
\n(換行)

print("ads\nsda5")
print("\tads\nsda5")
print("adssda5",end="\t")
print("lorry",end="\t")
print("2222222")

' 一個單引號
" 一個雙引號
\\ 單純的 \ 不會換行

print('ads\'sda5',"ads'sda5")   #加\用來區(qū)分字符
print("ads\\nsda5")

注意:一個轉(zhuǎn)義字符代表一個字符
c.阻止轉(zhuǎn)義:在字符串前面加R/r,可以阻止轉(zhuǎn)義字符轉(zhuǎn)義

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

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,557評論 0 13
  • 1.recode 1.常用快捷鍵ctrl + sctrl + cctrl + vctrl + x - 剪切ctr...
    Gary134閱讀 342評論 0 0
  • 一·recode 1.常用快捷鍵ctrl + sctrl + cctrl + vctrl + x - 剪切ctr...
    fakerkb閱讀 195評論 0 0
  • 本書作者饒雪莉,除了是一名優(yōu)秀的小學(xué)語文教師外,她也是一位母親,和所有家長一樣,希望自己的孩子快樂成長。家長,老師...
    菜小東西閱讀 564評論 0 0
  • 我朝自己開了一槍 卻不知道 貌似犀利的子彈 能否穿透油膩的中年 曾經(jīng)滄海 除卻巫山 這世上還有什么可以讓我卑躬屈...
    竹子河閱讀 235評論 0 4

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