111cccc
7-1 sdut-oop-2 Shift Dot(類和對象)
分數 10
作者 周雪芹
單位 山東理工大學
給出平面直角坐標系中的一點,并順序給出n個向量,求該點根據給定的n個向量位移后的位置。
設計點類Point,內含:
(1)整型屬性x和y,表示點的橫坐標和縱坐標;
(2)帶參構造方法,便于使用初始值構造該類對象;
(3)點移動的方法move(x1,y1),其 中x1和y1表示移動的向量,該方法返回移動后的新的點對象;
(4)展示點對象的字符串方法toString(),以“(橫坐標,縱坐標)”的形式。
輸入格式:
多組輸入。
第一行是三個整數x,y,n,表示點的坐標(x,y),和向量的個數n。
接下來n行,每行兩個數xi,yi,表示第i個向量。
題目中所有數據不會超出整型范圍。
輸出格式:
對于每組輸入,輸出一行,形式為:“(x,y)”,表示點的最終點位置的橫坐標和縱坐標。
輸入樣例:
0 0 1
2 3
0 0 2
1 2
2 3
7-2 sdut-Time類的定義與使用
分數 10
作者 周雪芹
單位 山東理工大學
設計一個時間類Time。它擁有:
私有數據成員:hour(時)、minute(分)、second(秒);
公開的成員函數:
setHour(int)設置數據成員hour的值(采用12小時制),非法的輸入默認為12;
setMinue(int)設置數據成員minute的值,非法輸入默認為0;
setSecond(int)設置數據成員second的值,非法輸入默認為0;
setTime(int,int,int)設置時、分、秒三個數據成員的值;
showTime()顯示時間對象的值。
在主函數main()中調用相應成員函數,使得時間對象的值能從鍵盤接收,并正確顯示。
7-3 sdut-誰是最強的女漢子
分數 10
作者 周雪芹
單位 山東理工大學
眾所周知,一年一度的女漢子大賽又來啦。由于最近女漢子比較流行,所以參加女漢子比賽的人數變得很多很多。所以賽事組找來了你,讓你寫一個程序找出誰是最強的女漢子。
大家都知道,越是不漂亮的女生就越容易成為女漢子(漂亮的怎么會成為漢子?),而越是力量大的女生也越成為女漢子(畢竟女漢子還是比較有力量的)。
所以,就給女漢子兩個屬性,一個是漂亮值x,一個是力量值y。當然x的值越大,就代表這個女生就越漂亮。現在想讓你求出來最不漂亮的女生有多少個,她們的力量和是多少。
t=int(input()) minn,s,ss=10000,0,0 for i in range(t):x,y=map(int,input().split())if x<minn:s=yss=1minn=xelif x==minn:s+=yss+=1 print(ss,s)7-4 sdut-oop-5 計算長方體和四棱錐的表面積和體積(類的繼承)
分數 10
作者 周雪芹
單位 山東理工大學
計算如下立體圖形的表面積和體積。
7-5 sdut-oop-6 計算各種圖形的周長(多態)
ss.count(" ")
分數 10
作者 周雪芹
單位 山東理工大學
定義接口或類 Shape,定義求周長的方法length()。
定義如下類,實現接口Shape或父類Shape的方法。
(1)三角形類Triangle (2)長方形類Rectangle (3)圓形類Circle等。
定義測試類ShapeTest,用Shape接口(或類)定義變量shape,用其指向不同類形的對象,輸出各種圖形的周長。并為其他的Shape接口實現類提供良好的擴展性。
提示: 計算圓周長時PI取3.14。
while True:try:ss=input()PI=3.14if ss.count(" ")==0:if int(ss)<=0:print("0.00")else:print("%.2f"%(2*PI*int(ss)))elif ss.count(" ")==1:m,n=map(float,ss.split())if m<=0 or n<=0:print("0.00")else:print("%.2f"%(2*(m+n)))else:m,n,r=map(float,ss.split())if m+n>r and m+r>n and n+r>m:if m<=0 or n<=0 or r<=0:print("0.00")else:print("%.2f"%(m+n+r))else :print("0.00")except:break7-6 sdut-oop-9 計算長方形的周長和面積(類和對象)
分數 10
作者 周雪芹
單位 山東理工大學
設計一個長方形類Rect,計算長方形的周長與面積。
成員變量:整型、私有的數據成員length(長)、width(寬);
構造方法如下:
(1)Rect(int length) —— 1個整數表示正方形的邊長
(2)Rect(int length, int width)——2個整數分別表示長方形長和寬
成員方法:包含求面積和周長。(可適當添加其他方法)
要求:編寫主函數,對Rect類進行
while True:try:ss=input()if ss.count(" ")==0:ss=int(ss)if ss<=0:ss=0print("%d %d %d %d"%(ss,ss,4*ss,ss**2))else:m,n=map(int,ss.split())if m<=0 or n<=0:m,n=0,0print("%d %d %d %d"%(m,n,2*(m+n),m*n))except:break7-1 sdut-分數的化簡
from fractions import Fraction
print(Fraction(n,m))
分數 10
作者 周雪芹
單位 山東理工大學
輸入一個分數,對該分數化簡后輸出其最簡分式的形式。
輸入格式:
輸入有若干行,每行輸入一個分數。
輸出格式:
對每行輸入,輸出其真最簡分式的形式。
7-2 sdut-oop-8 分數四則運算(類和對象)
分數 10
作者 周雪芹
單位 山東理工大學
定義類Fraction,在其中定義屬性:numerator和denominator,分別表示分子和分母。
然定再定義兩個分數的加、減、乘、除運算的方法。
在主類中輸入2個分數,計算它們的四則運算結果。
提示:若用Python語言來實現,不必自行創建類,可直接使用 fractions模塊處理分數的表示與運算。
from fractions import Fraction for i in range(int(input())):ss=input()x,y='',''cnt=0for i in ss:if i!='+' and i!='-' and i!='*' and i!='\\':x+=ielse:y=ss[cnt+1:len(ss)]if i=='+': print(Fraction(x)+Fraction(y))elif i=='-':print(Fraction(x)-Fraction(y))elif i=='*': print(Fraction(x)*Fraction(y))else: print(Fraction(x)/Fraction(y))cnt+=17-3 sdut-分數加減法
分數 10
作者 周雪芹
單位 山東理工大學
編寫一個程序,實現兩個分數的加減法。
輸入格式:
輸入包含多行數據。
每行數據是一個字符串,格式是"a/boc/d"。
其中a, b, c, d是一個0-9的整數。o是運算符"+“或者”-"。
輸出格式:
對于輸入數據的每一行輸出兩個分數的運算結果。
注意:結果應符合書寫習慣,沒有多余的符號、分子、分母,并且化簡至最簡分數。
from fractions import Fraction while True:try:ss=input()x,y='',''cnt=0for i in ss:if i!='+' and i!='-': #記得\\,否則EOFx+=ielse:y=ss[cnt+1:len(ss)]if i=='+': print(Fraction(x)+Fraction(y))else:print(Fraction(x)-Fraction(y))cnt+=1except:break7-5 sdut-驗證“哥德巴赫猜想”
分數 10
作者 周雪芹
單位 山東理工大學
著名的“哥德巴赫猜想”的大致意思是:任何一個大于2的偶數總能表示為兩個素數之和。比如:24=5+19,其中5和19都是素數。本實驗的任務是設計一個程序,驗證20億以內的偶數都可以分解成兩個素數之和。
輸入格式:
在一行中,給出一個(2, 2 000 000 000]范圍內的偶數N。
輸出格式:
在一行中,按照格式“N=p+q”輸出N的素數分解,其中p ≤ q均為素數。又因為這樣的分解不唯一(例如:24還可以分解為7+17),要求必須輸出所有解中p最小的解。
7-6 sdut-學生互助組隊
down=stu[n-1:n//2-1:-1]
down.remove(j) #刪除元素j
分數 10
作者 周雪芹
單位 山東理工大學
“一對一學習互助小組”是中小學中常見的學習組織方式,老師把學習成績靠前的學生跟學習成績靠后的學生排在一組。
請你編寫程序幫助老師完成這個分配工作,即:在得到全班學生的排名后,在當前尚未分組的學生中,將名次最靠前的學生與名次最靠后的異性學生分為一組。
輸入格式:
第一行給出正偶數N(≤50),即全班學生的人數。
此后N行,按照名次從高到低的順序給出每個學生的性別(0代表女生,1代表男生)和姓名(不超過8個英文字母的非空字符串),以1個空格分隔。
n=int(input()) #全班學生的人數。 stu=[] for i in range(n): #此后N行stu.append(list(input().split())) #,按照名次從高到低的順序給出每個學生的性別和姓名 #名次前半段的學生 up=stu[:n//2] #不包含下標為n//2的第n//2+1位 #名次總最低到最高的后半段的學生的性別 down=stu[n-1:n//2-1:-1] #不包含下標為n//2-1的第n//2位 for i in up:for j in down:if i[0]!=j[0]: #異性print(i[1],j[1])down.remove(j) #刪除元素jbreak7-7 sdut-求指定層的元素個數
分數 10
作者 周雪芹
單位 山東理工大學
輸入一個嵌套列表,再輸入層數,求該層的元素個數。
輸入格式:
第一行輸入列表,第二行輸入層數。
輸出格式:
在一行中輸出元素個數。
7-3 sdut-求誤差小于輸入值的e的近似值
while 1/math.factorial(i)>=n:
分數 10
作者 周雪芹
單位 山東理工大學
自然常數e可以用級數1+1/1!+1/2!+?+1/n!來近似計算。ei代表前i項求和。輸入誤差范圍error,當
99.jpg,則表示e的近似值滿足誤差范圍。
輸入格式:
在一行輸入誤差范圍,誤差小于等于0.01。
輸出格式:
在一行輸出e的近似值(保留6位小數)。
輸入樣例1:
0.01
輸出樣例1:
2.716667
7-8 sdut-入門-4 A+B for Input-Output Practice (IV)
分數 10
作者 周雪芹
單位 山東理工大學
你的任務是計算一些整數的和。
輸入格式:
輸入包含多個測試用例。
每個測試用例包含一個整數N,然后在同一行中跟隨N個整數。以0開始的測試用例終止輸入,并且這個測試用例不被處理。
輸出格式:
對于每一組輸入整數,您應該在一行中輸出它們的和,輸入的每一行都有一行輸出。
輸入樣例:
while True:num=list(map(int,input().split()))if num[0]==0:breakelse:print(sum(num)-num[0])7-18 sdut-水仙花數
分數 10
作者 周雪芹
單位 山東理工大學
水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。
請計算所有N位水仙花數。
輸入格式:
在一行內,給出一個正整數N(3≤N≤5)。
輸出格式:
按遞增順序輸出所有N位水仙花數,每個數字占一行。
7-19 sdut-最大公約數和最小公倍數
分數 10
作者 周雪芹
單位 山東理工大學
給定2個正整數,求它們的最大公約數和最小公倍數,并輸出。
輸入格式:
輸入有若干組。
每組數據,在一行中給出兩個正整數M和N(≤1000),中間有1個空格。
輸出格式:
對于每組輸入,在一行中順序輸出M和N的最大公約數和最小公倍數,兩數字間以1個空格分隔。
7-22 sdut-冒泡排序中數據交換的次數
range(n-i-1):
分數 10
作者 周雪芹
單位 山東理工大學
聽說過冒泡排序么?一種很暴力的排序方法。今天我們不希望你用它來排序,而是希望你能算出從小到大冒泡排序的過程中一共進行了多少次數據交換。
輸入格式:
第一行為一個正整數 T ,表示有 T 組測試數據。
接下來T行,每行第一個整數N, 然后有N個整數,無序。0<N <= 100。
t=int(input()) for k in range(t):lst=list(map(int,input().split()))n=lst[0]lst=lst[1:]num=0for i in range(n):for j in range(n-i-1):if lst[j]>lst[j+1]:lst[j],lst[j+1]=lst[j+1],lst[j]num+=1print(num)7-2 sdut-字符之比較大小
***lst[i]=chr(lst[i])print(lst,sep=“<”)**
分數 10
作者 周雪芹
單位 山東理工大學
輸入3個不同整數,這3個整數分別對應3個字母的ASCII碼值,把這3個字母按它的ASCII碼值從小到大輸出。
輸入格式:
輸入在一行中給出3個整數,其間以空格分隔。
輸出格式:
在一行中將3個字母按ASCII碼值從小到大輸出,其間以“<”相連。
7-3 sdut-判斷回文字符串
if res[i]!=res[len(res)-i-1]:
分數 10
作者 周雪芹
單位 山東理工大學
回文就是字符串中心對稱,從左向右讀和從右向左讀的內容是一樣的。
輸入一個字符串,判斷該字符串是否為回文,只考慮數字和字母字符,字母的大小寫沒有區別。
輸入格式:輸入一個字符串。
輸出格式:
判斷字符串是否為回文,若是,則在一行內輸出yes,否則輸出no。
7-4 sdut-刪除字符
str=input().strip()
ch=input().strip()
分數 10
作者 周雪芹
單位 山東理工大學
輸入一個字符串 str,和要刪除字符 c,將字符串 str 中出現的所有字符 c (不區分大小寫)刪除。
提示:去掉輸入的字符串或字符兩端的空格。
輸入格式:
第一行中輸入一行字符串str;
第二行輸入待刪除的字符 c。
輸出格式:
在一行內輸出刪除指定字符c后的字符串。形式為:result:
7-6 sdut-輸出字符串中最大字符及其索引位置
rfind(str[-1])
分數 10
作者 周雪芹
單位 山東理工大學
輸入字符串,排序后輸出最大字符及該字符在原字符串中的索引。
相同字符的索引取最大值。
輸入格式:
一行輸入字符串。
輸出格式:
在一行內輸出最大字符及其最大索引位置。字符和數字間有3個空格。
輸入樣例1:
Hello Python
輸出樣例1:
y 7
輸入樣例2:
HELLO EVERYONE YEAR 2021
輸出樣例2:
Y 15
7-9 sdut-整數的二進制相加
分數 10
作者 周雪芹
單位 山東理工大學
輸入兩個整數,大小在[0,63]之間。求它們的和,對二進制形式展示數據。
二進制用8位表示。
輸入格式:
在一行輸入一個十進制整數,在第二行輸入另一個十進制整數。
輸出格式:
求它們和,并輸出數據的二進制形式。
7-10 sdut-漢明距離
x=“{:>032s}”.format(bin(x)[2:])
y=“{:>032s}”.format(bin(y)[2:])
print(sum(a!=b for a,b in zip(x,y)))
分數 10
作者 周雪芹
單位 山東理工大學
兩個整數間的漢明距離指的是這兩個數對應二進制位不同的位置的數目。
輸入兩個整數x,y, 0<=x,y<=2
31
。輸出x,y的漢明距離。
輸入格式:
在一行輸入x,y;中間有一個空格。
輸出格式:
在一行內 輸出x與y的漢明距離。
7-11 sdut-輸出一個字符串的字符的16-10-8-2進制數
分數 10
作者 周雪芹
單位 山東理工大學
輸入一行字符串,去掉非16進制字符,將它轉換成16、10、8、2進制數,輸出。
輸入格式:
輸入一行字符串。
輸出格式:
輸出轉換后的16、10、8、2進制數。數據之間有1個空格。(16進制字母小寫)
7-6 sdut-字母替換
分數 10
作者 周雪芹
單位 山東理工大學
編寫程序,將輸入字符串中的大寫英文字母按以下對應規則替換,其他字符不變。
(Python實現提示:轉換表用元組實現)
lst=input() for i in lst:if i.isupper():i=chr(90-(ord(i)-65)) print(i,end='')7-8 sdut- 輸出10個不重復的英文字母
分數 10
作者 周雪芹
單位 山東理工大學
輸入一個字符串,把最左邊的10個不重復的英文字母(不區分大小寫)挑選出來進行輸出
如沒有10個英文字母,顯示信息“not found”。
輸入格式:
在一行中輸入字符串。
輸出格式:
在一行中輸出最左邊的10個不重復的英文字母;或者顯示信
7-10 sdut-猴子選大王
n=int(input()) p=0 for i in range(2,n+1):p=(p+3)%i print(p+1)-14 sdut-判斷上、下三角矩陣
分數 10
作者 周雪芹
單位 山東理工大學
給定一個三角矩陣,判斷其是否為:上三角矩陣、下三角矩陣。
上三角矩陣指主對角線以下的元素都為0的矩陣;
下三角矩陣指主對角線以上的元素都為0的矩陣;
主對角線為從矩陣的左上角至右下角的連線。
輸入矩陣是三種情況之一:上三角矩陣、下三角矩陣或者都不是。
t=int(input()) while t:t-=1isup=0islow=0n=int(input())for i in range(n):lst=list(map(int,input().split()))if i and sum(lst[:i])!=0:isup=1elif i<n-1 and sum(lst[i+1:])!=0:islow=1elif isup==1 and islow==1:breakif isup==0:print("upper")elif islow==0:print("lower")else:print("no")-20 sdut- 矩陣轉置(II)
分數 10
作者 周雪芹
單位 山東理工大學
從鍵盤輸入一個m(2<=m<=6)*n(2<=n<=6)階的矩陣,編程輸出它的轉置矩陣。
輸入格式:
在第一行輸入矩陣的行數m和列數n的值;
在第二行按照矩陣格式輸入矩陣的數據,同行數據之間用空格隔開。
輸出格式:
矩陣格式輸出,同行數據之間用一個空格隔開。
7-3 sdut-圖的字典表示
分數 10
作者 周雪芹
單位 山東理工大學
現在用PYTHON的數據結構表示圖。圖中有若干個頂點,每個頂點的表示方式為:頂點名稱和該頂點相連的所有的其他頂點的名稱,所組成的邊的長度。
7-9 sdut-字典合并
分數 10
作者 周雪芹
單位 山東理工大學
輸入用字符串表示兩個字典,輸出合并后的字典。字典的鍵用一個字母或數字表示。
注意:1和‘1’是不同的關鍵字!
輸入格式:
在第一行中輸入第一個字典字符串;
在第二行中輸入第二個字典字符串。
輸出格式:
在一行中輸出合并的字典,輸出按字典序。
7-15 sdut-查字典
分數 10
作者 周雪芹
單位 山東理工大學
遇到單詞不認識怎么辦? 查字典啊!
已知字典中有n個單詞,現有m個不認識的單詞,詢問這m個單詞是否出現在字典中,如果在字典中就輸出其含義,如果不在字典中,就輸出:Not found!
while True:n,m=map(int,input().split()) #字典中存在的n個單詞,和要查詢的m個單詞.if m==n==0: #結束條件若n=0&&m=0 程序結束break#初始化dic={} for i in range(n): #緊跟著n行key,val=map(str,input().split(":")) #輸入dic[key]=val #加入字典for i in range(m): #要查詢的m個單詞。find=input() #本次要查詢的m個單詞。if find in dic: #若在字典中存在print(dic[find])else:print("Not found!")7-6 sdut-學生互助組隊
分數 10
作者 周雪芹
單位 山東理工大學
“一對一學習互助小組”是中小學中常見的學習組織方式,老師把學習成績靠前的學生跟學習成績靠后的學生排在一組。
請你編寫程序幫助老師完成這個分配工作,即:在得到全班學生的排名后,在當前尚未分組的學生中,將名次最靠前的學生與名次最靠后的異性學生分為一組。
輸入格式:
第一行給出正偶數N(≤50),即全班學生的人數。
此后N行,按照名次從高到低的順序給出每個學生的性別(0代表女生,1代表男生)和姓名(不超過8個英文字母的非空字符串),以1個空格分隔。
這里保證本班男女比例是1:1,并且沒有并列名次。
輸出格式:
每行輸出一組兩個學生的姓名,其間以1個空格分隔。
名次高的學生在前,名次低的學生在后。
小組的輸出順序按照前面學生的名次從高到低排列。
輸入樣例:
n=int(input()) #全班學生的人數。 stu=[] for i in range(n): #此后N行stu.append(list(input().split())) #,按照名次從高到低的順序給出每個學生的性別和姓名 #名次前半段的學生 up=stu[:n//2] #不包含下標為n//2的第n//2+1位 #名次總最低到最高的后半段的學生的性別 down=stu[n-1:n//2-1:-1] #不包含下標為n//2-1的第n//2位 for i in up:for j in down:if i[0]!=j[0]: #異性print(i[1],j[1])down.remove(j) #刪除元素jbreak總結
- 上一篇: 2叉树实现及其原理
- 下一篇: k8s控制器——Replicaset和D