1.輸出函數(shù):print()
- 默認每一個print函數(shù),輸出完內容之后會輸出一個換行
- 一個print函數(shù)輸出多個內容的時候,內容之間是用空格隔開的
- 內容后邊加end=來設置結束標志(默認是'\n')
- 通過設置sep的值,來設置多個內容之間的間隔符(默認是' ')
print('aaa', 100, end='\n', sep=',')
print('bb')
結果:
aaa,100
bb
2. 輸入函數(shù):input()函數(shù)
- input()函數(shù)可以接收從控制臺輸入的內容(以回車為結束標志)
- input函數(shù)會阻塞線程,程序執(zhí)行到input的時候會停下來,等待用戶的輸入,輸入完成后才會接著執(zhí)行下面的內容
- 接收到的數(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ù)
列表的值:用[] 將列表中的元素括起來,多個元素之間用逗號隔開。[] --> 空列表
- 怎么聲明一個列表
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]
- 獲取列表元素
列表中的每一個元素都對應一個下標: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
- 獲取列表的長度(獲取列表元素的個數(shù))
len(列表)
print(len(scores))
結果:
7
4. 添加列表元素
skills = []
print(skills)
結果:
[]
- append函數(shù)
列表.append(元素)
在列表的末尾添加一個元素
skills.append('龜派氣功')
print(skills)
skills.append('居里夫人')
print(skills)
結果:
['龜派氣功']
['龜派氣功', '居里夫人']
- insert函數(shù)
列表.insert(下標,元素)
在列表的指定的下標前插入一個元素
注意:在這兒,下標可以越界,如果越界,就會插入到列表的最前面或者最后面
skills.insert(1, '無敵風火輪')
print(skills)
結果:
['龜派氣功', '無敵風火輪', '居里夫人']
- 加:+
列表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)僵尸', '天線寶寶']
- del語句
del語句可以刪除任何數(shù)據(jù)
del 列表[下標]:刪除列表中指定下標的元素
注意:這里的下標不能越界
del films[1]
print(films)
結果:
['天線寶寶', '我不是藥神', '神奇寶貝', '植物大戰(zhàn)僵尸', '天線寶寶']
- remove方法
列表.remove(元素):刪除列表中的指定的元素(如果同一個元素有多個,只刪除最前面那一個)
注意:如果要刪除的元素不在列表中,會報錯
films.remove('天線寶寶')
print(films)
結果:
['我不是藥神', '神奇寶貝', '植物大戰(zhàn)僵尸', '天線寶寶']
- 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è):
- 求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
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
@
@@
@@@
@@@@
@@@@@
-
打印圖形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
@
@@@
@@@@@
@@@@@@@
@@@@@@@@@
- 打印圖形3
n = 3
@@@
@@
@
n = int(input('輸入n:'))
for i in range(1,n+1):
print('@'*(n-i+1))
輸入n:3
@@@
@@
@
- 輸入兩個正整數(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
- 一個數(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
- 輸出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
- 一個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ù)
-
打印圖形(菱形)
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
@
@@@
@@@@@
@@@@@@@
@@@@@
@@@
@
- 輸入一行字符,分別統(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個
- 已知一個列表,求列表中心元素。
list1 = [1, 2, 3, 4, 5]
a = len(list1)
print(list1[a//2])
3
- 已知一個列列表,求所有元素和。
list1 = [1,2,3,4,5]
sum1 = 0
for i in range(len(list1)):
sum1 += int(list1[i])
print(sum1)
15
- 已知一個列表,輸出所有奇數(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]
- 已知一個列表,輸出所有元素中,值為奇數(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]
- 已知一個列表,將所有元素乘二。
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]
- 已知一個列表,將所有元素加到第一個元素中。
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]
- 已知一個列表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]
- 把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----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
- 有一個長度是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]
- 有一個長度是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]
- 有一個長度是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]
- 有一個長度是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)
['豬八戒', '沙悟凈', '觀音', '紅孩兒', '孫悟空', '唐僧', '蜘蛛精', '佛祖']
- 把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]
- 已知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]

