2020-09-26數(shù)字和列表及作業(yè)

day4 - 數(shù)字和列表

數(shù)字

python中和數(shù)字相關(guān)的類型:int(整型)赠摇、float(浮點(diǎn)型)、bool(布爾)、complex(復(fù)數(shù))

  1. int(整型) -- 所有整數(shù)對應(yīng)的類型

    python 中整數(shù)支持的4中寫法:十進(jìn)制數(shù)、二進(jìn)制數(shù)士飒、八進(jìn)制數(shù)、十六進(jìn)制數(shù)

    基數(shù) 程序中表示 其他進(jìn)制轉(zhuǎn)換
    十進(jìn)制 0 - 9 直接寫:1,2,52,36,0
    二進(jìn)制 0 和 1 0b/0B: 0b1011 bin(數(shù)字)
    八進(jìn)制 0 - 7 0o/0O: 0o1574 oct(數(shù)字)
    十六進(jìn)制 0 - 9蔗崎,a-f(A-F) 0x/0X: 0x12aff hex(數(shù)字)
  1. floa(浮點(diǎn)型) -- 所有小數(shù)對應(yīng)的類型

    # 支持科學(xué)技術(shù)法: xey  - x乘以10的y次方
    # 計算機(jī)在存儲浮點(diǎn)數(shù)的時候可能會出現(xiàn)誤差
    
    num = 3e7
    num2 = 3.24e-4
    
  1. bool(布爾)

    bool類型的本質(zhì)就是一種特殊的整型酵幕,其中True,就是1,F(xiàn)alse就是0

    print(1 + True) # 2
    print(1 + False) # 1
    
  2. complex(復(fù)數(shù))

    由實(shí)部和虛部組成的數(shù)字就是復(fù)數(shù)蚁趁,數(shù)學(xué)中虛數(shù)單位是i裙盾,python中虛數(shù)單位是j:A + Bj
    `注意:如果虛部是1這個1不能省`
    
    num5 = 10+ 32j
    num6 = 2 + 1j
    print(type(num5))  # <class 'complex'>
    print(num5 + num6)  # (12+33j)
    print(num5 * num6)  # (-12+74j)
    

列表

  1. 什么是列表(list)

    1)列表是容器型數(shù)據(jù)類型(序列),將[]作為容器的標(biāo)志,里面多個元素用逗號隔開:[元素1,元素2,元素3番官,....]

    1. 列表是可變的(元素個數(shù)可變庐完,元素值可變);列表是有序(元素在容器中有順序)

    3)任何類型的數(shù)據(jù)都可以作為列表的元素

    # 1)空列表
    list1 = []
    print(list1,type(list1))  # []  <class 'list'>
    
    # 2) 列表元素是任何類型的數(shù)據(jù)
    list2 = [45,'ad',True,[1,5],'adfd']
    
  1. 列表的增刪改查

    1. 查 - 獲取元素

      a.獲取單個元素

      # 列表[下標(biāo)]   -  獲取列表中指定下標(biāo)對應(yīng)的元素
      # 列表  - 想要獲取元素對應(yīng)的列表
      # []   - 固定寫法
      # 下標(biāo)  -  又叫索引徘熔;是元素在列表中位置信息對應(yīng)的標(biāo)號门躯,每個元素對應(yīng)的下標(biāo)有兩種:從0開始依次增加(0表示第一個...)從-1開始依次減小(-1表示第一個...)  
      movies = ['八佰','花木蘭','信條']
      print(movies[1])  # 花木蘭
      
      # 注意:下標(biāo)不能越界
      # print(movies[10])  # 報錯  IndexError: list index out of range
      
      

      b.遍歷 - 將列表中的元素一個一個的全部取出來

      """
      for 變量 in 列表:
        循環(huán)體
        
      這兒的變量獲取到的就是列表中的元素
      """
      # 直接遍歷
      for i in movies:
          print(i)
      

      c.遍歷同時獲取列表元素和元素對應(yīng)的下標(biāo)

      """
      for 變量1酷师,變量2 in 列表:
        循環(huán)體
        
      變量1獲取到的是每個元素對應(yīng)的下標(biāo)讶凉,變量2獲取到的是每個元素
      """
      for x,y in movies:
          print('x:',x,'y:',y)
          
      # 通過遍歷列表中每個元素的下標(biāo)來間接的遍歷元素
      for i in range(3):
          print(movies[i])
      
      list1 = [25,56,8,63,9,8,2,522,52]
      for x in range(len(list1)):
          print(list1[x])
      
      
  1. 增 - 添加元素

    a.列表.append(元素) -- 在指定列表的最后添加指定的元素

    hero_list = ['魯班七號','亞瑟','盧錫安']
    hero_list.append('妲己')
    print(hero_list)
    

    b.列表.insert(下標(biāo),元素) -- 在列表指定的下標(biāo)對應(yīng)的元素前插入指定的元素

    hero_list = ['魯班七號','亞瑟','盧錫安']
    hero_list.insert(1,'妲己')
    print(hero_list)
    
  2. 刪 - 刪除元素

    a.del 列表[下標(biāo)] - 刪除列表中指定下標(biāo)對應(yīng)的元素

    masters = ['貂蟬','小喬','王昭君','周瑜']
    del masters[1]
    print(masters)
    

    b.remove(元素) - 刪除列表指定的元素

    masters = ['貂蟬','小喬','王昭君','周瑜']
    masters.remove('小喬')
    print(masters)
    

    c.pop() - 取出列表最后一個元素

    ? pop(下標(biāo)) - 取出列表指定下標(biāo)對應(yīng)的元素

    masters = ['魯班七號', '盲嶒', '妲己','亞瑟', '盧錫安', '妲己']
    x = masters.pop()
    print(masters,x)  #  ['魯班七號', '盲嶒', '妲己', '亞瑟', '盧錫安'] 妲己
    
    x = masters.pop(1)
    print(masters,x)  #  ['魯班七號', '妲己', '亞瑟', '盧錫安'] 盲嶒
    
  3. 改 - 修改元素的值

    列表[下標(biāo)] = 新值 - 將列表指定下標(biāo)對應(yīng)的元素修改成新值

    teleplays = ['人名的名義','甄嬛傳','絕命毒師','請回答1988']
    teleplays[0] = '特種兵'
    print(teleplays)
    

作業(yè)

1.已知一個數(shù)字列表山孔,求列表中心元素懂讯。

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

if len(list1) & 1:
    print(list1[len(list1) // 2])
else:
    print(list1[len(list1) // 2 - 1], list1[len(list1) // 2])
    
"""
奇數(shù):count // 2
個數(shù)  下標(biāo)
5 -> 2
7 -> 3
9 -> 4

偶數(shù):count // 2, count // 2 - 1
4 -> 1,2
6 -> 2,3
8 -> 3,4
"""

2.已知一個數(shù)字列表,求所有元素和台颠。

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sum = 0
for s in list1:
    sum += s
print(sum)

print(sum(list1))

3.已知一個數(shù)字列表褐望,輸出所有奇數(shù)下標(biāo)元素。

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(len(list1)):
    if i & 1:
        print(list1[i])
        
for index in range(1,len(list1),2)
    print(list1[index])
        
print(list1[1::2])

4.已知一個數(shù)字列表串前,輸出所有元素中瘫里,值為奇數(shù)的元素。

list1 = [25, 65, 98, 99, 2, 12, 65, 35, 65]
for num in list1:
    if num & 1:
        print(num)

5.已知一個數(shù)字列表荡碾,將所有元素乘二谨读。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 修改列表元素
for index in range(len(list1)):
    list1[index] *= 2

6.有一個長度是10的列表,數(shù)組內(nèi)有10個人名坛吁,要求去掉重復(fù)的
例如:names = ['張三', '李四', '大黃', '張三'] -> names = ['張三', '李四', '大黃']

names = ['張三', '李四', '大黃', '張三']
# 方法一:
names1 = []
for i in range(0,len(names)):
    for j in range(i+1,len(names)):
        if names[i] == names[j]:
            break
    else:
        names1.append(names[i])
print(names1)


names = ['張三', '李四', '大黃', '張三','張三','李四','王五','張三','小明','小紅']
# 方法二:
new_names = []
for i in names:
    if i not in new_names:
        new_names.append(i)
print(new_names)

# 方法四:  # 拷貝一個新列表 遍歷新列表劳殖,刪除原列表
for name in names.copy():
    if names.count(name) > 1:
        names.remove(name)
print(names)

# 方法三:集合,集合是可迭代的
names = set(names)
print(names)

7.用一個列表來保存一個節(jié)目的所有分?jǐn)?shù),求平均分?jǐn)?shù)(去掉一個最高分拨脉,去掉一個最低分闷尿,求最后得分)

# 方法一:
scores = [96,87,63,84,82,100,75,56]
max = min = scores[0] # 假設(shè)第一個數(shù)為最大值、最小值
sum = 0
for i in range(len(scores)):
    if max < scores[i]:
        max = scores[i]
    elif min > scores[i]:
        min = scores[i]
    sum += scores[i]
print('最后平均分:',(sum - max - min) / (len(scores) -2))

# 方法二:
scores = [96,87,63,84,82,100,75,56]
sum =0
scores.remove(max(scores))
scores.remove(min(scores))
for i in scores:
    sum += i
print(float(sum / len(scores)))

# 方法三:
scores.remove(max(scores))
scores.remove(min(scores))
print(sum(scores) / len(scores))

8.有兩個列表A和B女坑,使用列表C來獲取兩個列表中公共的元素
例如: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] --> C = [1, 'a']

A = [1, 'a', 4, 90,1]
B = ['a', 8, 'j', 1]
C = []
for a in A:
     if a in B and a not in C:
         C.append(a)
print(C)  # [1, 'a']

9.有一個數(shù)字列表,獲取這個列表中的最大值.(注意: 不能使用max函數(shù))

例如: nums = [19, 89, 90, 600, 1] —> 600

scores = [96,87,63,84,82,100,75,56]
max = 0 # 假設(shè)一個最大值
for i in scores:
    if max < i:
        max = i
print(max)

max_score = scores[0]
for score in scores[1:]:
    if score > max_score:
        max_score = score
print(max_score)

10.獲取列表中出現(xiàn)次數(shù)最多的元素

例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

nums = [1, 2, 3,1,4,2,1,3,2,7,3,3]
count = 0
cou = 0
cou_i = 0
for i in range(len(nums)):
    for j in range(i+1,len(nums)):
        if nums[i] == nums[j]:
            count += 1
    if cou < count:
        cou = count
        cou_i = i
print(nums[cou_i])

# 方法二:
nums = [1, 2, 3,1,4,2,1,3,7,3,3
max_count = 0
for x in nums:
    count = nums.count(x)
    if count > max_count:
        max_count = count

new_num = []
for x in nums:
    if nums.count(x) == max_count and x not in new_num:
        new_num.append(x)
print(new_num)

  1. 判斷101-200之間有多少個素數(shù)统舀,并輸出所有素數(shù)匆骗。

    count = 0
    nums = []
    for i in range(101, 200):
        for j in range(2, i):
            if i % j == 0:
                break
        else:
            count += 1
            nums.append(j)
    print('101-200之間共有{}個素數(shù):'.format(count),nums)
    
  1. 求整數(shù)1~100的累加值,但要求跳過所有個位為3的數(shù)誉简。

    sum = 0
    for i in range(101):
        if i % 10 == 3:
            continue
        sum += i
    print(sum)
    
    
  1. 有?分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數(shù)列的第20個分?jǐn)?shù)

    n = 20
    p1,p2 = 2,1
    if n == 1:
      p1,p2 = 2,1
    else:
        for x in range(n-1):
            p1,p2 = p1+p2 ,p1
    print(p1,'/',p2)
    
  1. 寫程序計算 n 的階乘 n! 的結(jié)果

  2. 求1+2!+3!+...+20!的和

  3. 寫程序求表達(dá)式 a + aa + aaa + aaaa+ ... 的結(jié)果碉就,其中a是1~9的數(shù)字,求和的項(xiàng)數(shù)用n來控制闷串。(a和n可以用變量來表示)

    例如:a為3瓮钥, n為5的時候: 3 + 33 + 333 + 3333 + 33333

  4. 控制臺輸出三角形

    a.根據(jù)n的值的不同,輸出相應(yīng)的形狀
    n = 5時             n = 4
    *****               ****
    ****                ***
    ***                 **
    **                  *
    *
    n = 4
    for j in range(n):
        for i in range(j,n):
            print('*',end=' ')
        print('')
    
    b.根據(jù)n的值的不同,輸出相應(yīng)的形狀(n為奇數(shù))
    n = 5               n = 7
      *                    *
     ***                  ***
    *****                *****
                        *******
    
    c. 根據(jù)n的值的不同碉熄,輸出相應(yīng)的形狀
    n = 4
       1
      121
     12321
    1234321
    
    n = 5
        1
       121
      12321
     1234321
    123454321
    
  1. 小明單位發(fā)了100元的購物卡桨武,小明到超市買三類洗化用品,洗發(fā)水(15元)锈津,香皂(2元)呀酸,牙刷(5元)。要把100元正好花掉琼梆,可有哪些購買結(jié)合性誉?

  2. 一張紙的厚度大約是0.08mm,對折多少次之后能達(dá)到珠穆朗瑪峰的高度(8848.13米)茎杂?

  3. 古典問題:有一對兔子错览,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子煌往,假如兔子都不死倾哺,問每個月的兔子總數(shù)為多少?

  4. 將一個正整數(shù)分解質(zhì)因數(shù)携冤。例如:輸入90,打印出90=2x3x3x5悼粮。

  5. 某個公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù)曾棕,在傳遞過程中是加密的扣猫,加密規(guī)則如下:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換翘地,第二位和第三位交換申尤。求輸入的四位整數(shù)加密后的值

  6. 將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2x3x3x5衙耕。

  7. 本金10000元存入銀行昧穿,年利率是千分之三。每過1年橙喘,將本金和利息相加作為新的本金时鸵。計算5年后,獲得的本金是多少厅瞎。

  8. 輸入一個整數(shù)饰潜,計算它各位上數(shù)字的和。(注意:輸入的整數(shù)可以是任意位)

  9. 求兩個數(shù)的最大公約數(shù)和最小公倍數(shù)和簸。(提示:公約數(shù)一定小于等于兩數(shù)中的小的那個數(shù)彭雾,且能同時被兩個數(shù)整除;公倍數(shù)一定大于等于兩數(shù)中的大數(shù)锁保,且是大數(shù)的倍數(shù)又能被兩數(shù)中的小數(shù)整除)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末薯酝,一起剝皮案震驚了整個濱河市半沽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吴菠,老刑警劉巖者填,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異橄务,居然都是意外死亡幔托,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蜂挪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來重挑,“玉大人,你說我怎么就攤上這事棠涮∶В” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵严肪,是天一觀的道長史煎。 經(jīng)常有香客問我,道長驳糯,這世上最難降的妖魔是什么篇梭? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮酝枢,結(jié)果婚禮上恬偷,老公的妹妹穿的比我還像新娘。我一直安慰自己帘睦,他們只是感情好袍患,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著竣付,像睡著了一般诡延。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上古胆,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天肆良,我揣著相機(jī)與錄音,去河邊找鬼逸绎。 笑死妖滔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桶良。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沮翔,長吁一口氣:“原來是場噩夢啊……” “哼陨帆!你這毒婦竟也來了曲秉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤疲牵,失蹤者是張志新(化名)和其女友劉穎承二,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纲爸,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亥鸠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了识啦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片负蚊。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖颓哮,靈堂內(nèi)的尸體忽然破棺而出家妆,到底是詐尸還是另有隱情,我是刑警寧澤冕茅,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布伤极,位于F島的核電站,受9級特大地震影響姨伤,放射性物質(zhì)發(fā)生泄漏哨坪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一乍楚、第九天 我趴在偏房一處隱蔽的房頂上張望当编。 院中可真熱鬧,春花似錦炊豪、人聲如沸凌箕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牵舱。三九已至,卻和暖如春缺虐,著一層夾襖步出監(jiān)牢的瞬間芜壁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工高氮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慧妄,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓剪芍,卻偏偏與公主長得像塞淹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子罪裹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353