一、填空題
1.Python標準庫math中用來計算平方根的函數是__________。
sqrt
計算平方根可以用pow(x,0.5)或者x**0.5,但這裏問的是那個函數專門用來求平方根
2.在python中__________表示空類型。
None表示空類型
- 列表、元組、字符串是Python的_________(有序?無序)序列。
有序
這裏的有序不是指裏面的元素遞增或遞減,而是指下標是有序的
4.查看變量類型的Python內置函數是________________。
type()
type()函數查看變量類型
- 查看變量內存地址的Python內置函數是_____________。
id()
id()函數可以查看變量的內存地址
- 表達式[1, 2, 3]*3的執行結果爲______________________。
[1, 2, 3, 1, 2, 3, 1, 2, 3]
- list(map(str, [1, 2, 3]))的執行結果爲_____________________。
[‘1’, ‘2’, ‘3’]
map(function, iterable, …)
function是指函數,這裏是str,iterable是指可迭代對象,這裏是[1,2,3],把函數 f 依次作用在 list 的每個元素上,得到一個新的 list 並返回。這裏就是把str()作用在列表上,返回一個新列表,其結果就是每個元素變成了str類型
- 已知 x = 3,並且id(x)的返回值爲 496103280,那麼執行語句 x += 6 之後,表達式 id(x) == 496103280 的值爲___________。
(False)
我們可以試一試
可以看到3和9已經放到了不相鄰的內存地址了
- 已知 x = 3,那麼執行語句 x *= 6 之後,x的值爲____。
(18)
- 表達式“[3] in [1, 2, 3, 4]”的值爲________________。
(False)
- 假設列表對象aList的值爲[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那麼切片aList[3:7]得到的值是______________________。
[6, 7, 9, 11]
下標從零開始,左閉右開
- 使用列表推導式生成包含10個數字5的列表,語句可以寫爲_______________。
[5 for i in range(10)]
題目中說用列表推導式,不然可以直接寫成[5]*10
- 假設有列表a = [‘name’, ‘age’, ‘sex’]和b = [‘Dong’, 38, ‘Male’],請使用一個語句將這兩個列表的內容轉換爲字典,並且以列表a中的元素爲“鍵”,以列表b中的元素爲“值”,這個語句可以寫爲_____________________。
c = dict(zip(a, b))
zip() 函數用於將可迭代的對象作爲參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。
- 任意長度的Python列表、元組和字符串中最後一個元素的下標爲________。
-1
- Python語句’’.join(list(‘hello world!’))執行的結果是____。
‘hello world!’
Python join() 方法用於將序列中的元素以指定的字符連接生成一個新的字符串。
但這裏’hello world!'是不用符號去join,所有還是原樣
- 轉義字符’\n’的含義是___________________。
回車換行
- Python語句list(range(1,10,3))執行結果爲____________。
[1, 4, 7]
- 切片操作list(range(6))[::2]執行結果爲________________。
[0, 2, 4]
- 表達式 ‘ab’ in ‘acbed’ 的值爲________。
False
- Python 3.x語句 print(1, 2, 3, sep=’:’) 的輸出結果爲________。
1:2:3
- 表達式 int(4**0.5) 的值爲____________。
2
- 達式 sorted([111, 2, 33], key=lambda x: -len(str(x))) 的值爲____________。
[111, 33, 2]
sorted(iterable, cmp=None, key=None, reverse=False)
iterable – 可迭代對象。
cmp – 比較的函數,這個具有兩個參數,參數的值都是從可迭代對象中取出,此函數必須遵守的規則爲,大於則返回1,小於則返回-1,等於則返回0。
key – 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
reverse – 排序規則,reverse = True 降序 , reverse = False 升序(默認)。
這裏key可看成是比較的一種方法,key是指求字符串x的相反數,用這個key值進行比較,111的key值是-3,2的key值是-1,33的key值是-2,
排序應該是-3,-2,-1,對應的就是[111,33,2]
- 已知列表對象x = [‘11’, ‘2’, ‘3’],則表達式 max(x) 的值爲__。
‘3’
爲什麼是‘3’而不是’11‘呢?
要注意的是這裏的不是數字,而是字符串,字符串的比較先從第一位開始,如果第一位相等,在比較第二位,題中第一位先進行比較,應該是’1‘,’2‘,’3’,當然是‘3’開頭的大。
- 表達式 min([‘11’, ‘2’, ‘3’]) 的值爲_________________。
‘11’
和上一題相同只是這個是比較誰更小
- 已知列表對象x = [‘11’, ‘2’, ‘3’],則表達式max(x, key=len) 的值__。
‘11’
給出了key ,那就是比較key的值,這題的key給出的方法是求長度(元素個數),分別求一下key值,爲2,1,1,所以最大的應該是‘11’
- 語句 x = (3,) 執行後x的值爲_______________。
(3,)
tuple類型
- 語句 x = (3) 執行後x的值爲________________。
3
int 類型
- x = {1:2},那麼執行語句 x[2] = 3之後,x的值爲________________。
{1: 2, 2: 3}
-
字典對象的_____________方法返回字典中的“鍵-值對”列表。>items()
-
使用列表推導式得到100以內所有能被13整除的數的代碼可以寫作____________。
[i for i in range(100) if i%13==0]
- 表達式 3 ** 2 的值爲_________。
9
- 表達式 3 * 2的值爲___________。
6
- 已知 x = [3, 5, 7],那麼執行語句 x[len(x):] = [1, 2]之後,x的值爲______________。
[3, 5, 7, 1, 2]
len(x)爲3
x[len(x):]就是x[3:],表示在第3個無素後添加1,2
- 表達式 list(zip([1,2], [3,4])) 的值爲_______________。
[(1, 3), (2, 4)])
zip()函數上面的題目介紹過了
- 已知 x = [1, 2, 3, 2, 3],執行語句 x.pop() 之後,x的值爲_____。
[1, 2, 3, 2]
pop() 函數用於移除列表中的一個元素(默認最後一個元素),並且返回該元素的值。
- 表達式 [x for x in [1,2,3,4,5] if x<3] 的值爲______。
[1, 2]
- 表達式 [index for index, value in enumerate([3,5,7,3,7]) if value == max([3,5,7,3,7])] 的值爲__________________。
[2, 4]
index指下標
這裏的max應該是7,也就是說如過值等於7,就把下標加入到列表中
- 已知 path = r’c:\test.html’,那麼表達式 path[:-4]+‘htm’ 的值爲_____。
‘c:\test.htm’
一個簡單的對字符串的操作,值得注意的是,下標從右往左數的時候是從-1開始的,而不是從0開始
- 表達式 ‘%d,%c’ % (65, 65) 的值爲________。
‘65,A’
65對應的字符是A
- 表達式 ‘The first:{1}, the second is {0}’.format(65,97) 的值爲_______。
‘The first:97, the second is 65’
1和0可以看成是下標
- 表達式 ‘:’.join(‘abcdefg’.split(‘cd’)) 的值爲______________。
‘ab:efg’
在cd處將字符分爲兩部分,在用:把這兩部分連接
- 表達式 isinstance(‘abcdefg’, str) 的值爲____________。
True
isinstance() 函數來判斷一個對象是否是一個已知的類型,類似 type()。 判斷給的數據是否與給的類型相一致
- 表達式 ‘Hello world. I like Python.’.find(‘python’) 的值爲__。-
-1
Python find() 方法檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結束) 範圍,則檢查是否包含在指定範圍內,如果包含子字符串返回開始的索引值,否則返回-1。
- 表達式 ‘,’.join('a b ccc\n\n\nddd '.split()) 的值爲__________。
‘a,b,ccc,ddd’
Python split() 通過指定分隔符對字符串進行切片,如果參數 num 有指定值,則分隔 num+1 個子字符串
默認以空格爲分隔符,包含 \n
還可以指定num的值來規定分隔次數,默認爲-1,分隔所有
- 已知 x = ‘123’ 和 y = ‘456’,那麼表達式 x + y 的值爲____。
‘123456’
- 表達式 ‘abcab’.replace(‘a’,‘yy’) 的值爲___________。
‘yybcyyb’
把‘a’替換爲’yy’
- 已知 table = ‘’.maketrans(‘abcw’, ‘xyzc’),那麼表達式 ‘Hellow world’.translate(table) 的值爲______________________。
‘Helloc corld’
str.translate(table[, deletechars])
Python translate() 方法根據參數table給出的表(包含 256 個字符)轉換字符串的字符,要過濾掉的字符放到 del 參數中。
table – 翻譯表,翻譯表是通過maketrans方法轉換而來。
deletechars – 字符串中要過濾的字符列表。
在本題,就是把’a’替換爲’x’,‘b’替換爲’y’,‘c’替換爲’z’,‘w’替換爲’c’
- 已知x = {‘b’:1, ‘a’:2},那麼執行語句x.update({‘a’:3, ‘d’:4})之後,表達式sorted(x.items())的值爲____________________。
[(‘a’, 3), (‘b’, 1), (‘d’, 4)]
- 已知x = list(range(20)),那麼語句print(x[100:200])的輸出結果爲_______________。
[]
- 表達式sorted({‘a’:9, ‘b’:3, ‘c’:78}.values())的值爲_____________。
[3, 9, 78]
取出值之後還要排序
- type(1+2*3.14)的結果是:_____________。
<class ‘float’>
二、閱讀程序
- 寫出下面代碼的執行結果。
def Join(List, sep=None):
return (sep or ',').join(List)
print(Join(['a', 'b', 'c']))
print(Join(['a', 'b', 'c'],':'))
a,b,c
a: b :c
第二行沒有空格,不留空格,兩個冒號會變成🅱️
- 若k爲整數,下述while循環執行的次數爲:
k=1000
while k>1:
print(k)
k=k//2
9次
這裏看得出是執行了10次的,但爲什麼是9次呢,答案是在第9次的3.90625後k/2的結果是1.93125,題目規定的k是整數,取整後就是1,此時第10次不會再進行了、
- 寫出下面代碼的運行結果。
def Sum(a, b=3, c=5):
return sum([a, b, c])
print(Sum(a=8, c=2))
print(Sum(8))
print(Sum(8,2))
13
16
15
b,c是有默認值的,當不給定bc值的時候,就取默認值
- 寫出下面代碼的運行結果。
i=1
while i+1:
if i>4:
print("%d"%i)
i+=1
break
print("%d"%i)
i+=1
i+=1
1
3
5
需要注意的只有 while i+1:這個地方的 i 的值不會改變
- 寫出下面代碼的運行結果
def Sum(*p):
return sum(p)
print(Sum(3, 5, 8))
print(Sum(8))
print(Sum(8, 2, 10))
16
8
20
*p指傳入一個序列
**p就是傳入一個字典
- 寫出下面代碼的運行結果
s = 0
for i in range(1,101):
s += i
else:
print(1)
1
- 寫出下面代碼的運行結果
s = 0
for i in range(1,101):
s += i
if i == 50:
print(s)
break
else:
print(1)
1275
當for循環正常結束時,纔會執行else語句,在本題,當i=50時,通過break結束循環,不會執行else語句
- 寫出下面代碼的運行結果
x = list(range(10))
for index, value in enumerate(x):
if value == 3:
x[index] = 5
else:
print(x)
[0, 1, 2, 5, 4, 5, 6, 7, 8, 9]
這個循環是指找到值爲3的元素,並把值改爲5
9.閱讀下面的代碼,解釋其功能:
import string
x = string.ascii_letters +string.digits
import random
print(''.join(random.sample(x,10)))
輸出由英文字母大小寫或數字組成的長度爲10且不重複的隨機字符串
10.寫出下面代碼的運行結果
def demo():
x = 5
x = 3
demo()
print(x)
demo()裏的x是demo()函數的局部變量,demo()函數結束這個x被回收,與要執行的x不是同一個
11.寫出下面代碼的運行結果
def demo(lst, k):
if k < len(lst):
return lst[k:] + lst[:k]
lst=[1,2,3,4,5,6]
demo(lst,4)
[5, 6, 1, 2, 3, 4]
返回一個列表,將傳進來的列表在k處前後交換
12.寫出下面代碼的運行結果
def foo(s):
if s=="":
return s
else:
return s[1:]+s[0]
print (foo('Happy New Year!'))
appy New Year!H
把字符串的第一個元素放到最後
13.寫出下面代碼的運行結果
l1=[1,2,3,6,87,3]
l2=['aa','bb','cc','dd','ee','ff']
d={}
for index in range(len(l1)):
d[l1[index]]=l2[index]
print(d)
{1: ‘aa’, 2: ‘bb’, 3: ‘ff’, 6: ‘dd’, 87: ‘ee’}
d是一個字典,for循環就是給字典賦值的過程,以L1爲key,以L2爲value
14.寫出下面代碼的運行結果
list1=[1,2]
list2=list1[::]
list1[0]=3
print(list1,list2)
[3, 2] [1, 2]
list1[::]就是list1整體,但如果是list1[::-1]就是把list1逆序
15.寫出下面代碼的運行結果
age, subject,college=(24,"計算機","非重點")
if (age > 25 and subject=="電子信息工程") or (college=="重點" and subject=="電子信息工程" ) or (age<=28 and subject=="計算機"):
print("恭喜,你已獲得我公司的面試機會!")
else:
print("抱歉,你未達到面試要求")
恭喜,你已獲得我公司的面試機會!
滿足第三個條件
16.寫出下面代碼的運行結果
for num in range(2,10):
if num % 2 == 0:
continue
print("Find a odd numer", num)
Find a odd numer 3
Find a odd numer 5
Find a odd numer 7
Find a odd numer 9
17.寫出下面代碼的運行結果
for i in range(1, 7):
print(' ' * 2 * (6 - i), end='')
for j in range(i, 0, -1):
print(j, end=" ")
print()
他這個地方打不出這麼多空格,只能放截圖了
第一個print控制空格
第二個print控制數字
第三個輸出換行,print的end參數默認是換行
- 下面程序輸入>>>rev(‘I love you’)返回值爲
def rev1(s):
s=s.split()
s1=' '.join(reversed(s))
return s1
you love I
先按空格分成[I,love,you]三部分,再把這三部分逆序,然後用空格把三部分連接起來
- 閱讀程序,打印結果是
def addInterest(balance,rate):
newBalance=balance*(1+rate)
balance=newBalance
def main():
amount=1000
rate=0.05
addInterest(amount,rate)
print (amount)
main()
1000
amount傳進去就是形參了,形參的改變不會引起實參的改變,看一眼就知道是1000
- 閱讀程序,打印結果是
def demo(newitem,old_list=[]):
old_list.append(newitem)
return old_list
def main():
print(demo('a'))
print(demo('b'))
main(
[‘a’]
[‘a’, ‘b’]
'a’傳入後old_list就有元素a了,把’b’傳進去就有[‘a’,‘b’]了
- 閱讀程序,打印結果是
def func5(a, b, *c):
print(a, b)
print("length of c is %d, c is " % len(c), c)
func5(1, 2, 3, 4, 5, 6)
1 2
length of c is 4, c is (3, 4, 5, 6)
- 閱讀程序,打印結果是
def demo(*para):
avg = sum(para)/len(para)
g = [i for i in para if i>avg]
return (avg,)+tuple(g)
print(demo(1,2,3,4))
(2.5, 3, 4)
demo()函數的意思是先求出傳入元素的平均值,返回由平均值和大於平均值的元素組成的元組
- 閱讀程序,打印結果是
def f(w=1,h=2):
print(w,h)
f()
f(w=3)
f(h=7)
f(a=3)
1 2
3 2
1 7
錯誤
最後這個報錯信息明顯不是打印一個錯誤,但答案就是這麼寫的,我們就不多糾結了
- 閱讀程序,打印結果是
def sort(number1,number2):
if number1<number2:
return number1,number2
else:
return number2,number1
n1,n2=sort(3,2)
print('n1 is ',n1)
print('n2 is ',n2)
n1 is 2
n2 is 3
- 閱讀程序,打印結果是
def demo(m, n):
if m>n:
m, n = n, m
p = m*n
while m!=0:
r = n%m
n = m
m = r
return (n,p//n)
print( demo(20, 30)
(10, 60)
注意輸出格式,返回的是一個元組
三、 程序填空題
- 下面代碼的功能是,隨機生成50個介於[1,20]之間的整數,然後統計每個整數出現頻率。請把缺少的代碼補全
import random
x = [random.____________(1,20) for i in range(_______)]
r = dict()
for i in x:
r[i] = r.get(i, _____)+1
for k, v in r.items():
print(k, v)
分別填寫randint、50、0
randint用於產生隨機整數,
字典的get()方法,是通過鍵名找對對應的值,這裏通過把x的元素當作鍵名,把找到的次數當作值,每找到一次,value就加一,一次得到每個整數對應的頻率
- 生成包含1000個隨機字符的字符串,然後統計前20個高頻字符,最後以15個位左對齊輸出高頻字符,以5個位右對齊輸出個數。請把缺少的代碼補全。
import random
_____________
x = string.ascii_letters + string.digits + string.punctuation
y = [__________for i in range(1000)]
d = dict()
for ch in y:
d[ch] = d.get(ch, 0) + 1
items = list(d.items())
items.sort(_________, reverse = True)
for i in range(20):
word,count = items[i]
print(________ % (word, count))
- import string
- randmo.choice(x)
#隨機選擇序列x的一個元素- key= lambda x:x[1]
#這裏的x指items的每個元素,每個x又是一個元組,x[1]就是每個元組的第二個元素,元組的第一個元素是字符,第二個是字符對應的次數,從而實現通過次數的多少來實現排序- “%-15s%5d”
- 用戶輸入5,打印如右圖字符金字塔圖形,請補全代碼:
n = input('輸入行數:')
____________
for i in range(1, n + 1):
print(_______, end = '')
for j in range(1, 2 * i):
print('&',___________ )
print()
- n=int(n)
- ’ '*(n-i)
- end=’’
- 質因數分解,如輸入60,則得到60 = 2 * 2 * 3 * 5. 請補全代碼:
x = eval(input("請輸入小於1000的整數:"))
k = 2
_________________
while x > 1:
if_________:
print(k, end=" ")
x = x // k
if x > 1:
print("*", end=" ")
else:
__________
- print(x,’=’,end=’’)
- x%k==0
- k+=15.
- 驗證哥德巴赫猜想:一個大於等於6的偶數可以表示爲兩個素數之和,請補全代碼。
import math
x = eval(input("輸入一個數"))
while x < 6 or x % 2 == 1: # 大於6的偶數
x = eval(input("輸入一個數"))
for n1 in___________:
m1 = int(math.sqrt(n1) + 1)
for i in range(2, m1): # 2-sqrt(n1)
if_________:
break
else:
___________
m2 = math.ceil(math.sqrt(n2) + 1)
for j in range(2, m2):
if n2 % j == 0 and j < n2:
_____________
else:
print(x,'=',n1,'+',n2)
- range(3,x//2,2)
- n1%i==0
- n2 = x - n1
- break
- 右對齊九九乘法表,請補全代碼
for i in range(1, 10):
___________________
s1 = str(i) + '×' + str(j) + '=' + str(i * j)
print(________________)
print()
- for j in range(1,i+1):
- ‘%8s’%(s1),end=’’
- 輸出右邊圖形,請補充程序
for i ————————————————:
print((' * ' * (2 * i-1)).center(30))
for i in range(6, 0, -1):
print(——————————————————)
- in range(6)
- (’ * ’ * (2 * i-1)).center(30)
前5行由第一個for循環控制
- 下面代碼判斷迴文串,請補全代碼:
s = '霧鎖山頭山鎖霧'
low = 0
high =____________
while low < high:
if__________: # 倒序和順序不一樣
print(s, "不是迴文")
__________
low += 1
_______________
else:
print(s, "是迴文串")
- len(s)-1
- s[low]!=s[jhigh]
- break
- high-=1
- 輸出右邊圖形,請補充程序
s='''I am a teacher! You are students!'''
print('='*30)
print('統計信息'.center(28))
print(_____________)
item_width=25
line=s.count('\n')+1
word=s.split()
char=list(s) #包含空格、標點符號
w_num=0
for w in word:
w_num+=____________
print('%-*s %5d'%(item_width-3,'行數',line))
print('%-*s %5d'%(_______________,'單詞數',len(word)))
print('%-*s %5d'%(item_width-10,'字符數(包含空格)',_____________))
print('%-*s %5d'%(item_width-11,'字符數(不包含空格)',w_num))
print('-'*30)
- ‘_’*30
- len(w)
- item_width-4
- len(char)
通過上下文的提示可知
item_width用來制定輸出大小
line用於求行數
char是該字符串轉化的列表
word是字符串的單詞
w_num通過求每個單詞的長度疊加求得字符數(不含空格)
- 輸出右邊圖形,請補充程序
def demo(t):
print([1])
______________
line = [1, 1]
for i in range(2, t):
_______________
for j in range(0, len(line) - 1):
r.append(______________)
line = [1] + r + [1]
print(line)
demo(__________)
- print([1,1])
- r=[]
- line[j]+line[j+1]
- 10
老楊輝三角了
四、 編程題
- 編寫程序,在D盤根目錄下創建一個文本文件test.txt,並向其中寫入字符串hello world。
fp = open(r'D:\test.txt', 'a+')
print('hello world', file=fp)
fp.close()
- 編寫程序,生成一個包含20個隨機整數的列表,然後對其中偶數下標的元素進行降序排列,奇數下標的元素不變。(提示:使用切片和sort排序函數。)
import random
x = [random.randint(0,100) for i in range(20)]
print(x)
y = x[::2]
y.sort(reverse=True)
x[::2] = y
print(x)
通過[;;2]的方法把偶數下標對應的元素提取出來,先排好序在直接修改x列表的值
- 編寫函數,判斷一個數字是否爲素數,是則返回字符串YES,否則返回字符串NO。再編寫測試函數。
import math
def IsPrime(v):
n = int(math.sqrt(v)+1)
for i in range(2,n):
if v%i==0:
return 'No'
else:
return 'Yes'
print(IsPrime(77))
sqrt()函數是求平方根
最後的測試可以是其它數字
- 編寫函數,模擬Python內置函數sorted(lst)。
def sorted(v):
t = v[::]
r = []
while t:
tt = min(t)
r.append(tt)
t.remove(tt)
return r
print(sorted([1,3,2,4]))
先選出最小的,加入到列表r中,再把這個最小的剔除,重複上述步驟,返回r列表
- 編寫程序,生成包含20個隨機數的列表,然後將前10個元素升序排列,後10個元素降序排列,並輸出結果。
import random
x = [random.randint(0,100) for i in range(20)]
print(x)
y = x[0:10]
y.sort()
x[0:10] = y
y = x[10:20]
y.sort(reverse=True)
x[10:20] = y
還是sort()函數好,數據結構的什麼冒泡排序,簡單選擇排序,希爾排序,快速排序學得腦闊痛
- 編寫程序,運行後用戶輸入4位整數作爲年份,判斷其是否爲閏年。如果年份能被400整除,則爲閏年;如果年份能被4整除但不能被100整除也爲閏年
x = input('Please input an integer of 4 digits meaning the year:')
x = eval(x)
if x%400==0 or (x%4==0 and not x%100==0):
print('Yes')
else:
print('No')
- 編寫程序,實現分段函數計算,如下表所示。
x = input('Please input x:')
x = eval(x)
if x<0 or x>=20:
print(0)
elif 0<=x<5:
print(x)
elif 5<=x<10:
print(3*x-5)
elif 10<=x<20 :
print(0.5*x-2)
- 已知有一個包含一些同學成績的字典,計算成績的最高分、最低分、平均分,並查找最高分同學,最後打印最高分、最低分、平均分、最高分同學。
scores = {"Zhang San": 45, "Li Si": 78, "Wang Wu": 40, "Zhou Liu": 96, "Zhao Qi": 65, "Sun Ba": 90, "Zheng Jiu": 78, "Wu Shi": 99, "Dong Shiyi": 60}
highest = max(scores.values())
lowest = min(scores.values())
average = sum(scores.values())/len(scores)
highestPerson = [name for name, score in scores.items() if score == highest] #分行
print(highest,lowest,average,highestPerson)
- 統計不及格的學生及成績,要求:給定一些學生姓名和成績;詢問用戶是否還需要輸入更多的學生姓名和成績,用戶回答是就繼續輸入,繼續詢問;打印所有補考學生名單和成績。
d=[["張三",76],["李四",45],["王五",83],["鄭六",66],['a',54],['c',68],['b',89]]
s1=input("輸入數據Y or N:").strip()#去掉前後空格
while s1 == 'Y':
s2=input("請輸入學生及成績(空格隔開)")
name,grade=s2.split()
d.append([name,grade])
#d[name]=int(grade)
s1=input("繼續輸入Y or N:").strip()
else:
print(d)
print("不及格的名單:")
for name,grade in d:
if float(grade) < 60:
print("姓名:",name,"\t","成績:",grade)
- 由用戶一個一個輸入一個數值型列表,然後將每個元素逐一打印。
lst=[]
n=eval(input('請輸入數字個數:'))
for i in range(n):
number=eval(input('請輸入數字:'))
lst.append(number)
for value in lst:
print(value,end=' ')
- 序列求和,n通過用戶輸入:
n=int(input("請輸入N的值:"))
s=0
fh=1
for i in range(1,n+1):
s += fh * 1 / i # 求和語句
fh = -fh # 正負交替
print("1-1/2+1/3-1/4...+(-1)^(n-1)/n=",s,i)
- 生成一個包含50個兩位隨機整數的列表,然後刪除其中的所有奇數(提示從後向前刪)
import random
lst=[random.randint(1,100) for i in range(50)]
print('50個隨機兩位整數:',lst)
k=len(lst)-1
for i in range(k,-1,-1):#從後往前刪,減少列表元素移動
if lst[i] % 2==1:
lst.pop(i)
print("偶數爲",lst)
- 愷撒(kaisa)密碼:原文ABCDEFGHIJKLMNOPQRSTUVWXYZ,對應的密文爲:DEFGHIJKLMNOPQRSTUVWXYZABC,請設計程序實現之。
plaincode = input('請輸入明文:')
for p in plaincode:
if 'a' <= p <= 'z':
c = chr(ord('a') + (ord(p) - ord('a') + 3) % 26)
# ord是字符編碼的值,都減掉ord('A')纔可以得到字符的順序0-25
print(c, end='')
elif 'A' <= p <= 'Z':
c = chr(ord('A') + (ord(p) - ord('A') + 3) % 26)
print(c, end='')
else:
print(p, end='')
- 如果一個字符串從前往後和從後往前讀時是一樣的,那麼這個字符串就是迴文串。請編寫一個函數判斷是否爲迴文串,同時編寫測試代碼檢驗迴文串。(提示使用切片,注意列表索引的使用)
def isPalindrome(s):
if s == s[::-1]: # 切片操作,倒序和順序一樣
return True
else:
return False
s=input('input a string:')
if isPalindrome(s):
print('%s is a palindrome!' % s)
else:
print('%s is not a palindrome!'%s)
- 輸入一串字符,統計每個字符數,用字典輸出.
s=input("輸入一行字符串或句子:")
char_counts={}
for char in s:
char_counts[char]= char_counts.get(char,0)+1
print(char_counts)
- 生成包含100個隨機字符的字符串,然後統計前20個高頻字符.
import string,random
str1=string.ascii_letters +string.digits
str1=str1.lower()
str2=[random.choice (str1) for i in range(100)]
print(str2)
str_count={}
for char in str2:
str_count[char]=str_count.get(char,0)+1
print(str_count)
items=list(str_count.items())
items.sort(key=lambda x:x[1],reverse=True) #以數量降序
for i in range(20):
word, count = items[i]
print("%-15s %5d" % (word, count)) # -表示左對齊,s表字符,d表示整數
- 編程,如圖,在文件score.txt中寫入五名學生的姓名、學號和3門考試課的成績,然後將所有兩門以上(含兩門)課程不及格的學生信息輸出到文件bad.txt、其他學生信息輸出到pass.txt。
fw = open(r'score2.txt', 'w')
s = ['張三,', ' 2017010101,', ' 66,', ' 77,', ' 88', '\n']
fw.writelines(s)
fw.write('李四, 2017010102, 60, 70, 80\n')
fw.write('王五, 2017010103, 64, 73, 82\n')
fw.write('趙六, 2017010104, 56, 67, 48\n')
fw.write('錢七, 2017010105, 46, 57, 68\n')
fw.close()
f1 = open(r'score2.txt', 'r')
f2 = open(r'bad2.txt', 'w')
f3 = open(r'pass2.txt', 'w')
lines = f1.readlines()
for line in lines:
data = list(line.split(','))
print(data) # ['張三', ' 2017010101', ' 66', ' 77', ' 88\n']
k = 0
for i in data[2:]:
if int(i) < 60:
k += 1
if k >= 2: # 兩門以上(含兩門)課程不及格
f2.write(line)
else:
f3.write(line)
f1.close()
f2.close()
f3.close()