1. 程式人生 > 其它 >Python實驗報告二

Python實驗報告二

技術標籤:運算子、內建函式和列表、元祖的基本用法python

實驗二:Python運算子、內建函式和列表、元組的基本用法(2)
1、實驗目的
1)熟練應用Python運算子和內建函式;
2)養成對使用者輸入立即進行型別轉換的習慣;
3)瞭解列表、元組的概念和基本用法
2、實驗環境
Python3.8
3、實驗內容
1)編寫程式,輸入一個包含若干整數的列表,輸出新列表,要求新列表中所有元素為
原列表的降序排列,使用sorted()函式。

>>> x=[2,5,6,9,7,78,39,156]
>>> sorted(x,reverse=True)
[156
, 78, 39, 9, 7, 6, 5, 2]

sorted()函式格式:

sorted(iterable, cmp=None, key=None, reverse=False)

iterable:是可迭代型別;
cmp:用於比較的函式,比較什麼由key決定;
key:用列表元素的某個屬性或函式進行作為關鍵字,有預設值,迭代集合中的一項;
reverse:排序規則. reverse = True 降序 或者 reverse = False 升序,有預設值(預設為升序)。
返回值:是一個經過排序的可迭代型別,與iterable一樣。

引數說明:
(1) cmp引數
cmp接受一個函式,拿整形舉例,形式為:

def f(a,b):
return a-b
如果排序的元素是其他型別的,如果a邏輯小於b,函式返回負數; a邏輯等於b,函式返回0; a邏輯大於b,函式返回正數就行了

(2) key引數
key也是接受一個函式,不同的是,這個函式只接受一個元素,形式如下
def f(a):
return len(a)
key接受的函式返回值,表示此元素的權值,sort將按照權值大小進行排序

(3) reverse引數
接受False 或者True 表示是否逆序

(摘抄自https://www.cnblogs.com/sysu-blackbear/p/3283993.html)

另外詳見可轉載

2)編寫程式,輸入一個包含若干整數的列表,輸出新列表,要求輸出列表中所有整數

連乘的結果。

>>> x=[1,96,9,3,9,89]
>>> from functools import reduce
>>> n=reduce(lambda x,y:x*y,x)
>>> print(n)
2076192

reduce()函式詳見轉載

lambda ()匿名函式詳見轉載

3)編寫程式,輸入兩個各包含兩個整數的列表,分別表示城市中兩個地點的座標,輸
出兩點間的曼哈頓距離。

曼哈頓距離百度百科

x=eval(input("請輸入第一個座標:"))
y=eval(input("請輸入第二個座標:"))
def ManhadunDistance(x,y):
    return sum(map(lambda i,j:abs(i-j),x,y))
print("兩點間的曼哈頓距離為:",ManhadunDistance(x,y))

(程式碼摘抄自Python書上)

在這裡插入圖片描述

4)編寫程式,輸入等比數列的首項和公比(不等於1且小於36的正整數)和自然數n,
輸出這個等比數列前n項的和。要求用內建函式int()。

a1=int(input("請輸入首項(不等於1且小於36的正整數)a1="))
q=int(input("請輸入公比(不等於1且小於36的正整數)q="))
n=int(input("請輸入項數n="))
s=int((a1*(1-q**n))/(1-q))
print("前%d項和為:"%n,s)

在這裡插入圖片描述
int()函式詳見轉載

5)設計一個程式,使使用者輸入攝氏度,能輸出華氏度;反之,輸入華氏度,能輸出攝
氏度。例如:輸入“-30C”,輸出“-22.00F”;輸入“82F”,輸出“27.78C”

#華氏度和攝氏度對應公式:F=32+1.8*C
temp=input("請輸入一個溫度(攝氏度C/華氏度F):")
if temp[-1]in['F','f']:
    #['F', 'f'] 列表型別,表示實際兩個元素F和f
    #用temp[-1]表示獲取temp這樣一個變數字串的倒數第一個字元
    C=(eval(temp[0:-1])-32)/1.8
    #temp[0:-1]表示從0開始但不到字串的最後一個字元的字元子串
    print("對應的攝氏度為:{:.2f}C".format(C))
elif temp[-1]in['C','c']: 
    F=1.8*eval(temp[0:-1])+32
    print("對應的華氏度為:{:.2f}F".format(F))
else: 
            print("輸入格式有誤")
#使用保留字if elif else 構成條件判斷的分支結構,注意“:”是語法的一部分

在這裡插入圖片描述

知識點:
變數[0:-1] 表示返回此變數字串從0開始但不到-1的字元段。相當於去掉末尾輸出;
變數[1:] 相當於去掉第一個字元輸出;
format()函式的基本用法是:
{} 和 : 來代替以前的 %。可以接受不限個引數,位置可以不按順序。
eg:
a="{} {}".format{“hello”,“world”}
print(a)
輸出的則為 hello world
%.af表示輸出保留小數點後a位,並且考慮四捨五入(f指的是浮點型)
eval() 函式用來執行一個字串表示式,並返回表示式的值。