實驗2 內置數據類型
實驗性質:驗證性
一、實驗目的
1.掌握內置函數、列表、切片、元組的基本操作;
2.掌握字典、集合和列表表達式的基本操作。
二、實驗預備知識
1.掌握Python內置函數的基/本操作。
2.閱讀並掌握python中列表、元組、字典和集合的基本操作。
三、實驗內容
1.編寫程序,輸入任意大的自然數,輸出各位數字之和。
def get_sum(n):
n=abs(n) # 對於負數取一下絕對值成爲正數
sum = 0
while n > 0:
sum = sum + int(n % 10)
n = int(n / 10)
return sum
測試
if __name__ == '__main__':
print(get_sum(367))
2.編寫程序,輸入兩個集合 setA 和 setB,分別輸出它們的交集、並集和差集 setA-setB。
def oper_set(setA, setB):
union = setA | setB # 並集
inter = setA & setB # 交集
# 差集
diff = setA - setB
return union, inter, diff
測試
運行結果:
3.編寫程序,輸入一個自然數,輸出它的二進制、八進制、十六進制表示形式。
def format_num(num):
print('二進制:{}'.format(bin(num)))
print('八進制:{}'.format(oct(num)))
print('十六進制:{}'.format(hex(num)))
if __name__ == '__main__':
format_num(18)
4.編寫程序,用戶輸入一個三位以上的整數,輸出其百位以上的數字。例如用戶輸入1234,則程序輸出12。(提示:使用整除運算。)
def get_hundreds(num):
return int(num/100)
測試:
if __name__ == '__main__':
print(get_hundreds(34567)) # 345
5.編寫程序,輸入一個大於 2 的自然數,然後輸出小於該數字的所有素數組成的集合。
def func_get_prime(n):
num = [] # 用來存儲結果的集合
for i in range(2, n):
for j in range(2, i):
if (i % j == 0): # 如果不是素數就跳過,接着判斷下一個數
break
else:
num.append(i);
return num
運行結果:
6.首先生成包含1000個隨機字符的字符串,然後統計每個字符的出現次數。(使用字典)
import string
import random
def random_str():
# 先取出大小寫字母
strs = string.ascii_letters
# 隨機生成1000個字符
ch = [random.choice(strs) for i in range(1000)]
# 先創建一個列表保存不重複的字符,用來當作字典的key
new_list = []
for i in ch:
if i not in new_list:
new_list.append(i)
res = {}
for i in new_list:
res[i] = ch.count(i)
print(res)
運行結果:
{‘C’: 21, ‘o’: 26, ‘T’: 23, ‘u’: 20, ‘W’: 22, ‘y’: 27, ‘p’: 18, ‘F’: 12, ‘s’: 16, ‘n’: 18, ‘f’: 17, ‘M’: 19, ‘H’: 21, ‘N’: 22, ‘l’: 32, ‘L’: 20, ‘B’: 23, ‘O’: 13, ‘h’: 16, ‘K’: 18, ‘k’: 22, ‘Z’: 20, ‘V’: 20, ‘X’: 20, ‘z’: 17, ‘E’: 23, ‘D’: 14, ‘j’: 21, ‘i’: 19, ‘g’: 17, ‘e’: 18, ‘a’: 24, ‘b’: 19, ‘c’: 17, ‘R’: 21, ‘x’: 26, ‘P’: 17, ‘Q’: 18, ‘J’: 17, ‘A’: 14, ‘Y’: 17, ‘G’: 19, ‘I’: 12, ‘U’: 19, ‘m’: 16, ‘t’: 16, ‘S’: 22, ‘r’: 25, ‘d’: 18, ‘q’: 22, ‘w’: 13, ‘v’: 13}
7.阿凡提與國王比賽下棋,國王說要是自己輸了的話阿凡提想要什麼他都可以拿得出來。阿凡提說那就要點米吧,棋盤一共64個小格子,在第一個格子裏放1粒米,第二個格子裏放2粒米,第三個格子裏放4粒米,第四個格子裏放8粒米,以此類推,後面每個格子裏的米都是前一個格子裏的2倍,一直把64個格子都放滿。需要多少粒米呢?
def archimedes(n):
sum = 0
for i in range(1, n + 1):
sum += 2 ** i
return sum
輸出結果: 36893488147419103230