day05-列表

1.輸出函數(shù):print()

  1. 默認每一個print函數(shù),輸出完內容之后會輸出一個換行
  2. 一個print函數(shù)輸出多個內容的時候,內容之間是用空格隔開的
  3. 內容后邊加end=來設置結束標志(默認是'\n')
  4. 通過設置sep的值,來設置多個內容之間的間隔符(默認是' ')
print('aaa', 100, end='\n', sep=',')
print('bb')

結果:

aaa,100
bb

2. 輸入函數(shù):input()函數(shù)

  1. input()函數(shù)可以接收從控制臺輸入的內容(以回車為結束標志)
  2. input函數(shù)會阻塞線程,程序執(zhí)行到input的時候會停下來,等待用戶的輸入,輸入完成后才會接著執(zhí)行下面的內容
  3. 接收到的數(shù)據(jù)是以字符串的形式返回的(python2.x中輸入的是數(shù)字的時候,可能返回int類型或者浮點型數(shù)據(jù))
value = input('請輸入:')
print('aaa', value, type(value))

結果:

請輸入:12
aaa 12 <class 'str'>

練習:猜數(shù)字游戲

隨機產生一個1-100的整數(shù),輸入的數(shù)字如果和產生的隨機數(shù)是一樣的,就提示猜對了,并且游戲結束
如果輸入的數(shù)大于或者小于隨機數(shù),就提示輸入的數(shù)字偏大或者偏小,然后讓重新輸入

import random
number = random.randint(1, 100)
count = 0
while True:
    value = int(input('猜:'))
    count += 1
    if number == value:
        if count >= 6:
            print('智商著急')
        if count == 1:
            print('運氣不錯')
        print('對了')
        break
    elif number > value:
        print('小了,重新猜:')
    elif number < value:        # 或者直接else:
        print('大了,重新猜:')

結果:

猜:50
大了,重新猜:
猜:20
小了,重新猜:
猜:40
大了,重新猜:
猜:30
小了,重新猜:
猜:38
大了,重新猜:
猜:35
小了,重新猜:
猜:36
智商著急
對了

3. 列表、字典、元組、集合都是序列,都是容器類型的數(shù)據(jù)類型

列表(list):用來存儲多個數(shù)據(jù)的一種數(shù)據(jù)類型。里面存儲的單個數(shù)據(jù),我們叫元素
特點:1. 有序的 2. 可變的(可變指的是容器中的內容的個數(shù)和值可變) 3. 元素可以是任何類型的數(shù)據(jù)
列表的值:用[] 將列表中的元素括起來,多個元素之間用逗號隔開。[] --> 空列表

  1. 怎么聲明一個列表
    a. 聲明一個變量,賦一個列表值
list1 = []      # 創(chuàng)建一個空的列表
print(type(list1))

結果:

<class 'list'>
list2 = [1, 2.4, 'abc', True, [1, 2], {'a': 1}]
print(list2, type(list2))

結果:

[1, 2.4, 'abc', True, [1, 2], {'a': 1}] <class 'list'>

b. 將其他的數(shù)據(jù)類型轉換成列表

list3 = list('asd12')
print(list3)

結果:

['a', 's', 'd', '1', '2']

c. 將取出來的值乘以2創(chuàng)建一個列表

list4 = list(i*2 for i in range(10))
print(list4)

結果:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

d. 創(chuàng)建一個100以內3的倍數(shù)的列表

list5 = list(i for i in range(100) if i % 3 == 0)
print(list5)

結果:

[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
  1. 獲取列表元素
    列表中的每一個元素都對應一個下標:0 ~ 列表長度-1 ; -1 ~ - 列表長度
    names = ['哮天犬', '小狗', '孫悟空', '老沙', 'Faker']
    a. 獲取單個元素
    • 列表名[下標]
    • 下標不能越界
print(names[1])
print(names[-3])

結果:

小狗
孫悟空

b. 獲取部分元素(切片)

  • 列表名[起始下標:結束下標]:獲取從起始下標開始,到結束下標前的所有元素。結果是一個列表
  • 列表名[起始下標:結束下標:步進] 從起始下標開始,每次下標值加步進獲取下一個元素,直到結束下標前為止
  • 起始下標和結束下標都可以缺?。喝绻竭M是正數(shù),起始下標缺省就是從第一個元素開始獲??;如果步進是負數(shù),就從最后一個元素開始獲取
  • 結束下標缺省,步進是正數(shù),獲取到最后一個元素;步進是負數(shù),就從后往前獲取到第一個元素
print(names[1:4])
print(names[-4:-1])
print(names[0:4:2])
print(names[:])     # 獲取列表中的所有元素,重新創(chuàng)建一個新的列表

結果:

['小狗', '孫悟空', '老沙']
['小狗', '孫悟空', '老沙']
['哮天犬', '孫悟空']
['哮天犬', '小狗', '孫悟空', '老沙', 'Faker']

c. 一個一個的獲取列表的所有元素(遍歷列表)
scores = [12, 89, 43, 36, 98, 34, 56]
for循環(huán)遍歷:

for item in scores:
        print(item)

結果:

12
89
43
36
98
34
56

while循環(huán)遍歷:

index = 0
while index < len(scores):
    print(scores[index])
    index += 1

結果:

12
89
43
36
98
34
56
  1. 獲取列表的長度(獲取列表元素的個數(shù))
    len(列表)
    print(len(scores))
    結果:
7

4. 添加列表元素

skills = []
print(skills)

結果:

[]
  1. append函數(shù)
    列表.append(元素)
    在列表的末尾添加一個元素
skills.append('龜派氣功')
print(skills)
skills.append('居里夫人')
print(skills)

結果:

['龜派氣功']
['龜派氣功', '居里夫人']
  1. insert函數(shù)
    列表.insert(下標,元素)
    在列表的指定的下標前插入一個元素

注意:在這兒,下標可以越界,如果越界,就會插入到列表的最前面或者最后面

skills.insert(1, '無敵風火輪')
print(skills)

結果:

['龜派氣功', '無敵風火輪', '居里夫人']
  1. 加:+
    列表1 + 列表2
    將列表2中的元素和列表1中的元素合并后創(chuàng)建一個新的列表
new_skills = skills + ['如來神掌', '一個達布妞']
print(new_skills)

結果:

['龜派氣功', '無敵風火輪', '居里夫人', '如來神掌', '一個達布妞']

練習:從控制臺輸入10個學生的成績,然后保存在一個列表中

scores = []
for _ in range(10):
    score = float(input('輸入學生的成績:'))
    scores.append(score)
print(scores)

結果:

輸入學生的成績:1
輸入學生的成績:2
輸入學生的成績:3
輸入學生的成績:4
輸入學生的成績:5
輸入學生的成績:6
輸入學生的成績:7
輸入學生的成績:8
輸入學生的成績:9
輸入學生的成績:10
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]

5. 刪除列表元素

注意:不管是添加元素還是刪除元素,都會重新分配下標
films = ['天線寶寶', '一人之下', '我不是藥神', '神奇寶貝', '植物大戰(zhàn)僵尸', '天線寶寶']

  1. del語句
    del語句可以刪除任何數(shù)據(jù)
    del 列表[下標]:刪除列表中指定下標的元素
    注意:這里的下標不能越界
del films[1]
print(films)

結果:

['天線寶寶', '我不是藥神', '神奇寶貝', '植物大戰(zhàn)僵尸', '天線寶寶']
  1. remove方法
    列表.remove(元素):刪除列表中的指定的元素(如果同一個元素有多個,只刪除最前面那一個)
    注意:如果要刪除的元素不在列表中,會報錯
films.remove('天線寶寶')
print(films)

結果:

['我不是藥神', '神奇寶貝', '植物大戰(zhàn)僵尸', '天線寶寶']
  1. pop方法
    列表.pop():將列表中的最后一個元素取出來
    列表.pop(下標):將列表中指定下標的元素取出來
    注意:這里的下標不能越界
film = films.pop()
print(film)

film = films.pop(1)
print(films, film)

結果:

天線寶寶
['我不是藥神', '植物大戰(zhàn)僵尸'] 神奇寶貝

練習:scores = [23,31,78,56,89,68,1,97],刪除所有小于60分的成績

scores = [23, 31, 78, 56, 89, 68, 1, 97]
for score in scores[:]:     # 這里的scores[:] 相當于[23, 31, 78, 56, 89, 68, 1, 97],一個新的地址,只更新不用它
    if score < 60:
        scores.remove(score)
print(scores)

結果:

[78, 89, 68, 97]

作業(yè):

  1. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是?一個數(shù)字。例例如2+22+222+2222+22222(此時共有5個數(shù)相 加),?幾個數(shù)相加有鍵盤控制
a = int(input('請輸入a的值:'))
time = int(input('請輸入有幾個數(shù)相加:'))
sum = 0
num = 0
for i in range(time):
    num = num * 10 + a
    sum = sum + num
print('結果為:',sum)

結果:

請輸入a的值:2
請輸入有幾個數(shù)相加:5
結果為: 24690
  1. 打印圖形1
    n = 4
    @
    @@
    @@@
    @@@@
    n = 5
    @
    @@
    @@@
    @@@@
    @@@@@
n = int(input('請輸入n:'))
for i in range(1, n+1):
    for j in range(1, i+1):
        print('@', end='')
    print('')
請輸入n:5
@
@@
@@@
@@@@
@@@@@
  1. 打印圖形2


    22.png
n = int(input('請輸入n:'))
for i in range(1,n+1):
    print(' '*(n-((2*i-1)//2)-1) + '@'*(2*i-1))
請輸入n:5
    @
   @@@
  @@@@@
 @@@@@@@
@@@@@@@@@
  1. 打印圖形3
    n = 3
    @@@
    @@
    @
n = int(input('輸入n:'))
for i in range(1,n+1):
    print('@'*(n-i+1))
輸入n:3
@@@
@@
@
  1. 輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
num1 = int(input('請輸入第一個數(shù):'))
num2 = int(input('請輸入第二個數(shù):'))
min1 = min(num1,num2)
max1 = max(num1,num2)
big = []
for i in range(1,min1+1):
    if num1 % i == 0 and num2 % i == 0:
        big.append(i)
    for j in range(max1,num1*num2 + 1):
        if j % num1 == 0 and j % num2 == 0:
            break
print('最小公倍數(shù):', j)
print('最大公約數(shù):', max(big))
請輸入第一個數(shù):4
請輸入第二個數(shù):18
最小公倍數(shù): 36
最大公約數(shù): 2
  1. 一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為 "完數(shù) "。例如6=1+2+3.編程 找出1000以內的所有完數(shù)
for i in range(1, 1001):
    sum = 0
    for j in range(1, i):
        if i % j == 0:
            sum = sum + j
            if sum == i:
                print(i)
6
24
28
496
  1. 輸出9*9口訣
for i in range(1, 10):
    for j in range(1, i+1):
        num = i * j
        print('%d*%d=%d  ' % (j,i, num),end = '')
    print()
1*1=1  
1*2=2  2*2=4  
1*3=3  2*3=6  3*3=9  
1*4=4  2*4=8  3*4=12  4*4=16  
1*5=5  2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81
  1. 一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同。
num = int(input('請輸入一個五位數(shù):'))
ge = num % 10
shi = num % 100 // 10
qian = num % 10000 // 1000
wan = num // 10000
if ge == wan and shi == qian:
    print('%d是回文數(shù)' % (num))
elif len(str(num)) != 5:
    print('你輸入的不是五位數(shù)')
else:
    print('%d不是回文數(shù)' % (num))
請輸入一個五位數(shù):12333
12333不是回文數(shù)
請輸入一個五位數(shù):12321
12321是回文數(shù)
請輸入一個五位數(shù):123
你輸入的不是五位數(shù)
  1. 打印圖形(菱形)


n = int(input('請輸入n:'))
for i in range(1, n+1):
    print(' '*(n-((2*i-1)//2)-1) + '@' * (2*i-1))
for j in range(1, n):
    print(' '*j + '@' * (2*(n-j)-1) )
請輸入n:4
   @
  @@@
 @@@@@
@@@@@@@
 @@@@@
  @@@
   @
  1. 輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。
a = input('請輸入一行字符:')
letter = 0
space = 0
number = 0
other = 0
for i in range(len(a)):
    if a[i].isalpha():
        letter += 1
    elif a[i].isspace():
        space += 1
    elif a[i].isdigit():
        number += 1
    else:
        other += 1
print('字母有%d個,空格有%d個,數(shù)字有%d個,其他字符有%d個' % (letter, space, number, other))
請輸入一行字符:123ad * &
字母有2個,空格有2個,數(shù)字有3個,其他字符有2個
  1. 已知一個列表,求列表中心元素。
list1 = [1, 2, 3, 4, 5]
a = len(list1)
print(list1[a//2])
3
  1. 已知一個列列表,求所有元素和。
list1 = [1,2,3,4,5]
sum1 = 0
for i in range(len(list1)):
    sum1 += int(list1[i])
print(sum1)
15
  1. 已知一個列表,輸出所有奇數(shù)下標元素。
list1 = [1,2,3,4,5]
len1 = len(list1)
list2 = []
for i in range(len1):
    if i % 2 == 0:
        list2.append(list1[i])
print('奇數(shù)下標元素為:',list2)
奇數(shù)下標元素為: [1, 3, 5]
  1. 已知一個列表,輸出所有元素中,值為奇數(shù)的。
list1 = [1,2,3,4,5]
list2 = []
for i in range(len(list1)):
    if list1[i] % 2 != 0:
        list2.append(list1[i])
print('值為奇數(shù)的有:',list2)
值為奇數(shù)的有: [1, 3, 5]
  1. 已知一個列表,將所有元素乘二。
list1 = [1, 2, 3, 4, 5]
list2 = []
for i in range(len(list1)):
    list2.append(list1[i] * 2)
print(list2)
[2, 4, 6, 8, 10]
  1. 已知一個列表,將所有元素加到第一個元素中。
list1 = [1, 2, 3, 4, 5]
sum1 = 0
for i in range(len(list1)):
    sum1 += list1[i]
list1.insert(0,sum1)
print(list1)
[15, 1, 2, 3, 4, 5]
  1. 已知一個列表A,將奇數(shù)位置元素存到B列表中,偶數(shù)元素存到C列表中。
list1 = [1, 2, 3, 4, 5]
B = []
C = []
for i in range(len(list1)):
    if i % 2 == 0:
        B.append(list1[i])
    else:
        C.append(list1[i])
print('奇數(shù)列表:',B,'\n','偶數(shù)列表:',C)
奇數(shù)列表: [1, 3, 5] 
 偶數(shù)列表: [2, 4]
  1. 把A列表的前5個元素復制到B列表中。
A = [1, 2, 3, 4, 5, 6, 7, 8]
B = []
for i in range(len(A)):
    if i <= 4:
        B.append(A[i])
print('A列表:',A)
print('B列表:',B)
A列表: [1, 2, 3, 4, 5, 6, 7, 8]
B列表: [1, 2, 3, 4, 5]
  1. 把1----36分別放入列表中,計算列表數(shù)組對角元素之和。6 * 6的列表
sum = 0
list1 = [[0 for _ in range(6)]for _ in range(6)]
for i in range(6):
    for j in range(6):
        list1[i][j] = i * 6 + j + 1
sum = list1[0][0] + list1[0][5] + list1[5][0] + list1[5][5]
print('對角元素和為',sum)
對角元素和為 74
  1. 有一個長度是10的列表,列表內有10個不重復的數(shù)字,要求按從大到小排序。
list1 = [1, 3, 2, 4, 6, 5, 7, 8, 10, 9]
for i in range(len(list1)-1):
    for j in range(i+1, len(list1)):
        if list1[i] < list1[j]:
            temp = list1[j]
            list1[j] = list1[i]
            list1[i] = temp
print(list1)
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
  1. 有一個長度是10的列表,要求刪除某一個位置的元素
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
p = int(input('請輸入要刪除第幾個元素:'))
del list1[p-1]
print('刪除后的列表為:',list1)
請輸入要刪除第幾個元素:2
刪除后的列表為: [1, 3, 4, 5, 6, 7, 8, 9, 10]
  1. 有一個長度是10的列表,按遞增排列,用戶輸入一個數(shù),插入適當位置。
list1 = [1, 2, 3, 4, 5, 6, 11, 8, 9, 10]
num = int(input('請輸入要插入的數(shù)字:'))
list1.append(num)
for i in range(len(list1)-1):
    for j in range(i+1, len(list1)):
        if list1[i] > list1[j]:
            temp = list1[j]
            list1[j] = list1[i]
            list1[i] = temp
print(list1)
請輸入要插入的數(shù)字:7
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  1. 有一個長度是10的列表,數(shù) 組內有10個人名,要求去掉重復的
list1 = ['孫悟空', '豬八戒', '沙悟凈', '唐僧', '觀音', '紅孩兒', '孫悟空', '唐僧', '蜘蛛精', '佛祖']
for i in list1[:]:
    count = 0
    for j in list1[:]:
        if i == j:
            count += 1
            if count > 1:
                list1.remove(j)
print(list1)
['豬八戒', '沙悟凈', '觀音', '紅孩兒', '孫悟空', '唐僧', '蜘蛛精', '佛祖']
  1. 把A列表的第三到第六位之間的元素刪除。
A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
del A[2:5]
print(A)
[1, 2, 6, 7, 8, 9, 10]
  1. 已知A列表,B列表,定義一個列表C,要求C包含A,B數(shù)組中的數(shù)據(jù)(無重復值)。
A = [1, 2, 3, 4]
B = [3, 4, 5, 6]
C = []
for i in A[:]:
    for j in B[:]:
        if i == j:
            A.remove(i)
C = A + B
print(C)
[1, 2, 3, 4, 5, 6]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一 輸入輸出函數(shù) 輸出函數(shù): print()函數(shù) 默認每一個print函數(shù),輸出完內容后會輸出一個換行符 一個p...
    pubalabala閱讀 590評論 0 7
  • 1. 列表 列表、字典、元組、集合都是序列,都是容器類的數(shù)據(jù)類型。 列表list:用來存儲多個數(shù)據(jù)的一種數(shù)據(jù)類型。...
    LPP27149閱讀 401評論 0 8
  • 一、輸入函數(shù) 1、輸出函數(shù) : print() 1、默認每一個print函數(shù),輸出完內容后輸出一個換行2、一個pr...
    七夜_174e閱讀 2,264評論 0 6
  • 誰繡的花 一凋零就是好幾個季節(jié) 又拾起來的時候 那時的笑容只在夢里 誰編的巾 交織著一路以來的點滴 冬天過了很久 ...
    白運參閱讀 229評論 0 0
  • 伴著路上的燈光,和先生打著電話,剛回到溫暖的家,見到了親愛的女兒,開始寫今天的感恩日記。 今天一直在單位加班到現(xiàn)在...
    慧心如蓮閱讀 602評論 0 0

友情鏈接更多精彩內容