1、編寫一個程序,以球體的半徑(浮點型)作為輸入,並並且輸出球體的直徑、表面積和體積
PI = 3.14
r = float(input("please input a r:")) #輸入圓的半徑
d = 2 * r
S = 4 * PI * (r**2)
V = 4 * PI * (r**3) / 3
print("球體的直徑:",d)
print("球體的表面積:",S)
print("球體的體積:",V)
2.一個雇員一周的總薪水,等於其每個小時的薪水乘以一周正常工作的小時數,再加上加班費。加班費等於總的加班時間乘以每個小時薪水的1.5倍。
編寫一個程序,以每小時的薪水、總的常規工作時間和總的加班時間作為參數,並顯示一個雇員的總周薪。
def weeklyPay(hourlypay,worktime,overtime):
return hourlypay * worktime + 1.5 * hourlypay * overtime
print(weeklyPay(8,40,8))
3.一個標准的科學實驗是:拋球並且看它能夠彈跳多高。一旦求的“彈跳性”已經確定了,這個比率值就會給出彈跳性的指數。例如,如果球從10米高落下
彈跳到6米高,這個索引就是0.6,並且球在一次彈跳之后總的運動距離是16米。如果球繼續彈跳,兩次他了之后的距離將會是10米+6米+6米+3.6米=25.6米。
注意,每次后續的彈跳運動的距離,都是到地板的距離加上這個距離的被,這被就是球反彈回來的距離。編寫一個程序,讓用戶輸入球的一個初始高度以及允許球持續彈跳的次數。輸出應該是球所運動的總距離。
h = float(input("請輸入球的初始高度為:"))
n = int(input("請輸入允許球持續彈跳次數為:"))
def sum_high(h,n):
if n > 0:
n = n - 1
return 1.6 * h + sum_high(0.6 * h,n)
else:
return 0
sum = sum_high(h,n)
print("球所運動的總高度為%.2f"%sum)
4.德國數學家Gottfrid Leibniz為求取pi的值開發了如下方法:
pi/4=1-1/3+1/5-1/7+...
編寫一個程序,讓用戶指定在這種近似的方法中使用迭代的次數,並且顯示最終的結果
n = int(input("請輸入迭代的次數:"))
sum = 0
for i in range(n):
sum = sum + float(1/((2*i+1)*((-1)**i)))
print("PI近似值為:",4 * sum)
5、略
6、工資部門將每個支付周期的雇員信息的列表保存到一個文本文件,
每一行的格式:<last name><hourly wage><hours worked>
編寫一個程序,讓用戶輸出文件名並且最終向終端輸出報表。
自行創建一個txt文件,如下圖所示:
import xlwt
text=[]
fileName=input("請輸入文件名:")
f=open(fileName,'r')
content=f.readlines()
print(content)
for line in content:
line=line.split()
text.append(line)
f.close()
print(len(text))
print(len(text[0]))
workbook =xlwt.Workbook(encoding = 'utf-8') #創建一個工作簿
worksheet =workbook.add_sheet('MySalary') #創建一個工作表
for i in range(len(text)):
for j in range(len(text[0])):
worksheet.write(i, j, text[i][j])
workbook.save('salary.xls')
7、在名為stats.py的模塊中定義一些函數:計算列數字的中位數、眾數和平均數,以列表為參數,返回一個單個的數字
#中位數
def median(lst):
lst = sorted(lst)
if len(lst) % 2 == 1:
return lst[len(lst) // 2]
else:
return (lst[len(lst) // 2-1] + lst[len(lst) // 2]) / 2.0
lst=[1,2,3]
print("這組數據的中位數為:{}".format(median(lst)))
#眾數
'''
一般來說,一組數據中,出現次數最多的數就叫這組數據的眾數。
例如:1,2,3,3,4的眾數是3。
但是,如果有兩個或兩個以上個數出現次數都是最多的,那么這幾個數都是這組數據的眾數。
例如:1,2,2,3,3,4的眾數是2和3。
還有,如果所有數據出現的次數都一樣,那么這組數據沒有眾數。
例如:1,2,3,4,5沒有眾數。
'''
def grade_mode(list):
list_set = set(list) #去重,得到list中不重復的元素
frequency_dict = {}
dict_value = []
grade_mode = []
if len(list) == 0: #如果列表元素的個數為0,這組數據沒有眾數
return "No mode"
elif len(list) == 1:#如果列表元素的個數為1,眾數就是這個數
return list[0]
else:
#列表元素的個數是2個及以上
if(len(set(list)) == 1): #如果列表去重之后,只有一個元素,則這個元素就是這組數據的眾數
return list[0]
else:#列表去重之后有2個及以上元素
for i in list_set: # 遍歷每一個list_set的元素,得到該元素何其對應的個數list.count(i)
frequency_dict[i] = list.count(i) # 創建dict; new_dict[key]=value
dict_value.append(list.count(i)) #把value添加到一個列表中
if len(set(dict_value)) == 1:#元素出現的次數都存在一個列表dict_value中,去重之后只有一個元素,則沒有眾數
return "No mode"
else:
for key, value in frequency_dict.items(): # 遍歷dict的key and value。key:value
if value == max(frequency_dict.values()):
grade_mode.append(key)
return grade_mode
list = [1,1,1,2,2,2,3,3,3,4]
print("這組數據的眾數為:{}".format(grade_mode(list)))
#平均數
def mean(list):
if len(list) == 0:
return "The list is empty!"
else:
mean_num = sum(list) / len(list)
return mean_num
list = [1,2]
print("這組數據的平均數為:{}".format(mean(list)))
8、編寫程序,允許用戶在文件的文本中導航。程序提示輸入一個文件名,並且輸出想要放入到列表中的文本 行, 實際行號范圍是從1到文件行數,如果用戶輸入0,程序退出。否則程序輸出和該行號相關的行。
fileName = input("請輸入文件名:")
addContent = input("請輸入增加的內容:")
f = open(fileName,"a+")
f.write("\n"+addContent)
f.seek(0)
content=f.readlines()
print(content)
f.close()
while True:
print("目前文件的行號范圍為1~",len(content))
num = int(input("請輸入一個行號:"))
if num == 0:
break
else:
print(content[num-1])
num = 0
第9題:將圖書館建模為圖書和讀者的一個集合,讀者在任何給定時間內,最多只能借3本圖書。每本圖書都有一個等待借閱的讀者的列表。每本圖書都有一個標題、一個作者、已經借閱了它的一名讀者的列表,以及等待這本圖書還回后再繼續借閱讀者的列表。編寫Book和Patron類來建模這些對象。
首先考慮每個類的接口或方法,然后為對象的狀態選擇適當的數據結構。此外,還要編寫一個簡短的腳本來測試這些類。
第10題:編寫一個Library 類,它能管理第9題中的圖書和讀者,應該包括添加、刪除和查找圖書和讀者的方法,還應該有借閱和歸還圖書的方法。
參考:https://blog.csdn.net/LZH_12345/article/details/79679433后,修改了一些地方
# This Python file uses the following encoding: utf-8
# 定義書籍類,基本信息有書名title和作者anthor
# 借閱者borrower和待借閱者demanders(列表)
class Book(object):
def __init__(self, title='', author=''):
self.title = title
self.author = author
def info(self):
return (self.title, self.author)
def reader(self, borrower='', demanders=[]):
self.borrower = borrower
self.demanders = demanders
# 定義借閱者類,基本信息有姓名name,性別sex,身份證號ID
# 該借閱者借閱的書籍bookName(列表)
class Patron(object):
def __init__(self, name='', sex='', ID='', borrowBooks=[]):
self.name = name
self.sex = sex
self.ID = ID
self.borrowBooks = borrowBooks
def info(self):
return (self.name, self.sex, self.ID, self.borrowBooks)
# flag=1時,代表借書,flag=0時,代表還書
def book(self, borrowBooks=[], title='', flag=1):
# 確保借閱者最多可借3本書
if len(borrowBooks) < 3 or flag == 0:
if flag == 1:
borrowBooks.append(title)
else:
borrowBooks.remove(title)
else:
print("最多可借閱三本圖書!")
return borrowBooks
class Library(object):
"""some operation on books and readers"""
# some operation on books
# add book
def addBook(self, books=[], book=Book()):
books.append(book.title)
return books
# delete book
def deleteBook(self, books, book=Book()):
books.remove(book.title)
return books
# find book,and return the index of the book
def findBook(self, books, book=Book()):
return books.index(book.title)
# some operation on readers
# add reader
def addReader(self, readers=[], patron=Patron()):
readers.append(patron.name)
return readers
# delete reader
def deleteReader(self, readers, patron=Patron()):
readers.remove(patron.name)
return readers
# find reader,and return the index of the reader
def findReader(self, readers, patron=Patron()):
return readers.index(patron.name)
# some operation on borrow and return book
# borrow book
def borrowBook(self, patron=Patron(), book=Book()):
beforeBorrowLen = len(patron.borrowBooks)
patron.book(patron.borrowBooks, book.title, 1)
afterBorrowLen = len(patron.borrowBooks)
if beforeBorrowLen < afterBorrowLen:
books.remove(book.title)
return books, patron.borrowBooks
# return book
def returnBook(self, patron=Patron(), book=Book()):
books.append(book.title)
patron.book(patron.borrowBooks, book.title, 0)
return books, patron.borrowBooks
# 測試
if __name__ == "__main__":
library = Library() # 創建Library類
books = [] # 在圖書館的書
readers = [] # 圖書館讀者列表
# 創建了4個Book類實例(4本書)
book1 = Book("Gone with the Wind", "Margaret Mitchell")
book2 = Book("Pride and Prejudice", "Jane Austen")
book3 = Book("Oliver Twist", "Charles Dickens")
book4 = Book("The Little Prince", "Antoine de Saint-Exupéry")
# 創建了5個Patron類實例(5個借閱者)
patron1 = Patron("Jack", "man", "121")
patron2 = Patron("Bob", "man", "122")
patron3 = Patron("Tim", "man", "123")
patron4 = Patron("Ann", "woman", "124")
patron5 = Patron("Jane", "woman", "125")
# 圖書的相關操作展示
# 向books添加這些書
library.addBook(books, book1)
library.addBook(books, book2)
library.addBook(books, book3)
library.addBook(books, book4)
# print("添加圖書后:{}".format(books))
# # 此時,結果:['Gone with the Wind','Pride and Prejudice','Oliver Twist','The Little Prince']
# library.deleteBook(books, book3)
# print("刪除圖書3后:{}".format(books))
# # 此時,結果:['Gone with the Wind', 'Pride and Prejudice', 'The Little Prince']
# result = library.findBook(books, book2)
# print("找到圖書2的位置:{}".format(result))
# # 此時,結果:1
# 讀者的相關操作展示
# 向readers添加這些借閱者
library.addReader(readers, patron1)
library.addReader(readers, patron2)
library.addReader(readers, patron3)
library.addReader(readers, patron4)
library.addReader(readers, patron5)
# print("添加讀者后:{}".format(readers))
# # 此時,結果:['Jack', 'Bob', 'Tim', 'Ann', 'Jane']
# library.deleteReader(readers, patron2)
# print("刪除讀者后:{}".format(readers))
# # 此時,結果:['Jack', 'Tim', 'Ann', 'Jane']
# result = library.findReader(readers, patron4)
# print("找到讀者4的位置:{}".format(result))
# # 此時,結果:2
# 借閱圖書和歸還圖書的操作
# 借閱圖書操作
library.borrowBook(patron1, book1)
library.borrowBook(patron1, book2)
# 此時,結果:books= ['The Little Prince']
# patron1.borrowBooks=['Gone with the Wind', 'Pride and Prejudice']
# 驗證一下,一個借閱者最多可借3本書
# library.addBook(books, book3)
library.borrowBook(patron1, book3)
# 當下面一句執行時,會打印最多可借3本書
library.borrowBook(patron1, book4)
# 歸還圖書操作
library.returnBook(patron1, book1)
# 此時,結果:books=['Gone with the Wind']
# patron1.borrowBooks= ['Pride and Prejudice', 'Oliver Twist', 'The Little Prince']