簡答題
1. Python語言有哪些資料型別?
? int float bool complex string 元組(Tuple) 串列(list) 字典(Distrionary) 集合(Set)
2. 為什么要在程式中加注釋?怎樣在程式中加注釋?加入注釋對程式的執行有沒有影響?
? 注釋的作用是幫助理解程式的有效的手段之一,幫助自己和他人理解程式,注釋有單行注釋,多行注釋等,快捷鍵 加注釋的方法:選中一部分,同時按ctrl+/,給這些行加上注釋(適用于批量加注釋),注釋對程式沒有影響,
3. 什么叫字串?有哪些常用的字符編碼方案?
? 有限字符的序列
? Unicode、ASCII、GBK、GB2312、UTF-8
4.什么叫序列?它有哪些型別?各有什么特點?
? 指的是一塊可存放多個值的連續記憶體空間,這些值按一定順序排列,可通過每個值所在位置的編號(稱為索引)訪問它們
? 序列型別包括字串、串列、元組、集合和字典
特點
? 1. 元素有序存放,且每個元素的位置都有一個數字標識,第一個為0,第二個為1,以此類推,也可以從后往前數,最后一個是-1,倒數第二個是-2,以此類推,元素的位置也叫索引,有時也稱下標,
-
序列能夠進行索引操作、切片操作、加法運算、乘法運算和檢查元素操作,索引操作指能夠根據索引修改或查找元素的值,也能夠根據元素的值查找元素的索引,切片操作指能夠獲取序列中任意一段的資料,
-
python能夠自動計算出序列型別的長度、最大值和最小值,
5.集合有哪兩種型別?分別如何創建?
? 可變集合(set),不可變集合(frozenset)
可變集合
1. 用一對大括號將多個用逗號分隔的資料括起來
2. 使用set()函式
不可變集合
- frozenset()函式
6.Python支持的集合運算有哪些?集合的比較運算有哪些?集合物件的方法有哪些?
? 有并集,交集,差集,對稱差集,比較,并入,遍歷
? ==,!=,<,>,<=,>=
可變和不可變
issubset()
issuperset()
isdisjoint()
union()
intersection()
difference()
symmetric_difference()
copy
可變集合
add()
update()
intersection_update()
difference_update()
symmetric_difference_update()
remove
discard()
pop()
clear()
7.什么叫lambda函式?舉例說明,
? lambda 函式是一個可以接收任意多個引數(包括可選引數)并且回傳單個運算式值的匿名函式,
f = lambda x,y:x+y
print(f(2017,2018))
8.什么叫裝飾器?它有何作用?
? 可以理解為一個函式,一個用來包裝函式的函式,經常用于為已經存在的函式添加額外的功能
9.類的屬性有哪幾種?如何訪問它們?
? 公有屬性,私有屬性
? 公有屬性直接在類外通過物件名訪問,私有屬性需要在前面加兩個下劃線
10.繼承與派生有何關系?如何實作類的繼承?
? 繼承是從已有的類中派生出新的類,新類具有原類的資料屬性和行為,并能擴展新的行為
? Python繼承與派生有何關系如何實作類的繼承
? 在類名后的小括號()中寫入要繼承的父類名,如果要繼承多個類則中間用逗號分隔
11.什么是多型?在Python中如何體現?
? 同一名字的方法產生了多個不同的動作行為,也就是不同的物件收到相同的訊息時產生不同的行為方式
? 在運行時確定其狀態,在編譯階段無法確定其型別
? 在運行時通過引數型別確定其具體的計算程序
? 同一操作具有不同的形態
12.文本檔案的操作步驟是什么?
13.二進制檔案的操作步驟是什么?
? Python對文本檔案和二進制檔案采用統一的操作步驟:即“打開—操作—關閉”,
14.程式的邏輯錯誤能否算作例外?為什么?
? 算,因為例外是指程式運行程序中出現的錯誤或遇到的意外情況
15.什么叫例外?例外處理有何作用?在Python中如何處理例外?
? 例外是指程式運行程序中出現的錯誤或遇到的意外情況
? 對各種可預見的例外情況進行處理
? 在Python中,例外也是物件,Python提供了try-except和try-finally陳述句來進行處理
16.陳述句try-except和try-finally有何不同?
? try-except出錯的時候執行, Except有特定的錯誤型別
? try-finally無論如何都強制執行
編程題
1. 輸入三個整數給a,b,c,然后交換它們的值:把a中原來的值給b,把b中原來的值給c,c中原來的值給a,
a, b, c = eval(input('please input 3 numbers:'))
print(a, b, c)
a, b, c = c, a, b
print(a, b, c)
2. 輸入是三個數,判斷它們能否組成三角形,若能,則輸出三角形是等腰三角形,等邊三角形,直角三角形,還是普通三角形;若不能,則輸出“不能組成三角形”提示資訊,
a, b, c = eval(input('please input 3 numbers:'))
print(a, b, c)
if a + b > c and a + c > b and b + c > a:
# 滿足三角形
if a == b == c:
# 等邊三角形
print('等邊三角形')
elif a == b != c or a == c != b or c == b != a :
# 等腰三角形
print('等腰三角形')
elif a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or c**2 + b**2 == a**2:
# 直角三角形
print('直角三角形')
else:
print('普通三角形')
else:
print('不能組成三角形')
3.求滿足如下條件的3位數:它除以9的商等于它各位數字的平方和,例如224,它除以9的商為24,而
2 2 + 2 2 + 4 2 = 24 2^2+2^2+4^2=24 22+22+42=24
for i in range(100, 999):
s = int(i / 9)
a = int(i / 100)
b = int((i % 100) / 10)
c = int((i % 100) % 10)
if s == b ** 2 + c ** 2 + a ** 2:
print(s, a, b, c)
print(i)
4. 梅森尼數是指(2^n)-1為素數的數n,求[1,21]內有多少個梅尼森數以及最大的梅尼森數,
def sushu(n):
for i in range(2, n):
if n % i ==0:
return False
return True
def masonNumber(n):
list = []
for i in range(2, n):
if sushu(i):
if sushu(2**i-1):
list.append(2**i-1)
return list
print (masonNumber(21))
print("最大的梅森尼數為:",max(masonNumber(21)))
5. 輸入一個英文句子,將其中的小寫字母轉換成大寫字母后并輸出,
a=input()
print(a.upper())
6. 輸入5x5矩陣a,完成下列要求:
-
輸出矩陣a,
count = 1 a = [] for i in range(0, 5): temp = [] for j in range(0, 5): temp.append(count) count += 1 a.append(temp) print(a) -
將第2行和第5行元素對調后,輸出新的矩陣a,
b = a[1] a[1] = a[4] a[4] = b print(a) -
用對角線上的各元素分別去除各元素所在行,輸出新的矩陣a,
for m in range(1, 6): a[m - 1][m - 1] = a[m - 1][m - 1] / m print(a)
7. 從鍵盤輸入若干資料建立一個字典,然后讀取其鍵和值,并分別存入兩個串列中,
dic = {}
while True:
key = input('Input key:')
if key == '':
break
value = input('Input value:')
dic[key] = value
print(dic.keys())
print(dic.values())
8. 輸入全班30名學生的姓名和成績,輸出其中最高分和最低分,并求全班同學的平均分,要求利用字典實作,
count =30
s = []
for i in range(count):
print(i+1)
name = input('姓名:')
score = int(input('成績:'))
t = {}
t['姓名'] = name
t['成績'] = score
s += [t]
print(s)
sum = 0
max = s[0]['成績']
min = s[0]['成績']
i1=i2=0
for k in range(count):
if max < s[k]['成績']:
max = s[k]['成績']
i1=k
if min > s[k]['成績']:
min = s[k]['成績']
i2=k
sum += s[k]['成績']
print('最高分:' + s[i1]['姓名'] + ' ' + str(s[i1]['成績']))
print('最低分:' + s[i2]['姓名'] + ' ' + str(s[i2]['成績']))
print('平均分:' + str(sum/count))
9. 已知:
y = s ( x , n ) s ( x + 1.75 , n ) + s ( x , n + 5 ) y=\frac{s(x,n)}{s(x+1.75,n)+s(x,n+5)} y=s(x+1.75,n)+s(x,n+5)s(x,n)?
其中,s(x,n)=x+x2/2!+x3/3!+…+x^n/n!,輸入x和n的值,求y值,要求分兩種情況實作:直接在程式中定義函式s(x,n);在模塊中定義函式s(x,n),
import math
def func(n):
if n == 0 or n == 1:
return 1
else:
return (n * func(n - 1))
def s(x, n):
sum = 0
for i in range(1,n+1):
sum += math.pow(x, n) / func(n)
return sum
x = int(input("請輸入x的值:"))
n = int(input("請輸入n的值:"))
y = s(x, n) / (s(x + 1.75, n) + s(x, n + 5))
print(y)
10. 利用面向物件方法求n!,并輸出10!的值,
class Factorial:
def fac (self,num):
factorial = 1
for i in range(1,num+1):
factorial *= i
return factorial
if __name__ == '__main__':
factorial = Factorial()
n=int(input('請輸入n:'))
print(n,'!=',factorial.fac(n))
11. 設檔案integer.dat中放了一組整數,統計檔案中正整數,零和負整數的個數,將統計結果追加到檔案integer.dat的尾部,并輸出到螢屏上,
file = open("integer.dat","r+")
s=file.readline()
a,b,c=0,0,0
while s != '':
if int(s)> 0:
a+=1
elif int(s) == 0:
b+=1
else:
c+=1
s=file.readline()
print(a,b,c)
file.write('正數:'+str(a)+'\n')
file.write('零:'+str(b)+'\n')
file.write('負數:'+str(c)+'\n')
file.close()
12. 從鍵盤輸入x和y的值,計算y=In(3x-y+1)的值,要求設定例外處理,對負數求對數的情況給出提示,
import math
class LowZeroError(Exception):
def __init__(self,data):
self.data=data
class ZeroError(Exception):
def __init__(self,data):
self.data=data
x,y=eval(input('Please input x and y:'))
try:
d = 3*x+y-1
if d == 0:
raise ZeroError('零不能用于求對數')
if d < 0:
raise LowZeroError('負數不能用于求對數')
n = math.log(d)
print(n)
except ZeroError as e:
print(e)
except LowZeroError as e:
print(e)
except:
print('Error')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/235700.html
標籤:python
