2019春Python程序設計練習3(0402--0408)


1-1

如a是一個列表,且a[:]與a[::-1]相等,則a中元素按順序排列構成一個回文。 (2分)

         
1-3

表達式 {1, 3, 2} > {1, 2, 3} 的值為True。 (2分)

         
1-4

已知x為非空列表,那么執行語句x[0] = 3之后,列表對象x的內存地址不變。(2分)

         
1-5

Python內置的集合set中元素順序是按元素的哈希值進行存儲的,並不是按先后順序。 (2分)

         
1-6

已知x是一個列表,那么x = x[3:] + x[:3]可以實現把列表x中的所有元素循環左移3位。 (2分)

         
7-1 圖的字典表示 (20 分)
 

捕獲.JPG

圖的字典表示。輸入多行字符串,每行表示一個頂點和該頂點相連的邊及長度,輸出頂點數,邊數,邊的總長度。比如上圖0點表示:
{'O':{'A':2,'B':5,'C':4}}。用eval函數處理輸入,eval函數具體用法見第六章內置函數。

輸入格式:

第一行表示輸入的行數 下面每行輸入表示一個頂點和該頂點相連的邊及長度的字符串

輸出格式:

在一行中輸出頂點數,邊數,邊的總長度

輸入樣例:

在這里給出一組輸入。例如:

4
{'a':{'b':10,'c':6}}
{'b':{'c':2,'d':7}}
{'c':{'d':10}}
{'d':{}} 

輸出樣例:

在這里給出相應的輸出。例如:

4 5 35
pointnum=int(input())
edgesum=0
edgenum=0
for i in range(pointnum):
  dictlist=eval(input())
  for j in dictlist:
    dict=dictlist[j]
    for k in dict:
      edgenum=edgenum+1
      edgesum=edgesum+dict[k]
    break
print(pointnum,edgenum,edgesum)
7-11 jmu-python-逆序輸出 (5 分)
 

輸入一行字符串,然后對其進行如下處理。

輸入格式:

字符串中的元素以空格或者多個空格分隔。

輸出格式:

逆序輸出字符串中的所有元素。
然后輸出原列表。
然后逆序輸出原列表每個元素,中間以1個空格分隔。注意:最后一個元素后面不能有空格。

輸入樣例:

a b  c e   f  gh

輸出樣例:

ghfecba
['a', 'b', 'c', 'e', 'f', 'gh']
gh f e c b a

str=input()
list=[]
for s in str.split(): 
  list.append(s)
print("".join(list[::-1]))
print(list)            
print(" ".join(list[::-1]))    
7-12 jmu-python-班級人員信息統計 (15 分)
 

輸入a,b班的名單,並進行如下統計。

輸入格式:

第1行::a班名單,一串字符串,每個字符代表一個學生,無空格,可能有重復字符。
第2行::b班名單,一串字符串,每個學生名稱以1個或多個空格分隔,可能有重復學生。
第3行::參加acm競賽的學生,一串字符串,每個學生名稱以1個或多個空格分隔。
第4行:參加英語競賽的學生,一串字符串,每個學生名稱以1個或多個空格分隔。
第5行:轉學的人(只有1個人)。

輸出格式

特別注意:輸出人員名單的時候需調用sorted函數,如集合為x,則print(sorted(x))
輸出兩個班級的所有人員數量
輸出兩個班級中既沒有參加ACM,也沒有參加English的名單和數量
輸出所有參加競賽的人員的名單和數量
輸出既參加了ACM,又參加了英語競賽的所有人員及數量
輸出參加了ACM,未參加英語競賽的所有人員名單
輸出參加英語競賽,未參加ACM的所有人員名單
輸出參加只參加ACM或只參加英語競賽的人員名單
最后一行:一個同學要轉學,首先需要判斷該學生在哪個班級,然后更新該班級名單,並輸出。如果沒有在任何一班級,什么也不做。

輸入樣例:

abcdefghijab
1   2 3 4 5 6 7 8 9  10
1 2 3 a b c
1 5 10 a d e f
a

輸出樣例:

Total: 20
Not in race: ['4', '6', '7', '8', '9', 'g', 'h', 'i', 'j'], num: 9
All racers: ['1', '10', '2', '3', '5', 'a', 'b', 'c', 'd', 'e', 'f'], num: 11
ACM + English: ['1', 'a'], num: 2
Only ACM: ['2', '3', 'b', 'c']
Only English: ['10', '5', 'd', 'e', 'f']
ACM Or English: ['10', '2', '3', '5', 'b', 'c', 'd', 'e', 'f']
['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
a = input()
seta = set(a)    
b = input()
setb = set(b.split()) 
acm = input()
setacm = set(acm.split())
english = input()
setenglish = set(english.split())
zhuanxue = input()
Total = seta.union(setb) 
race = setacm.union(setenglish) 
Notinrace = Total.difference(race)
ACMplusEnglish = setacm.intersection(setenglish) 
OnlyACM = setacm.difference(setenglish)
OnlyEnglish = setenglish.difference(setacm) 
ACMOrEnglish = setacm.symmetric_difference(setenglish) 
print("Total:",len(seta.union(setb)))
print("Not in race:",sorted(Notinrace),end=", ")
print("num:",len(Notinrace))
print("All racers:",sorted(race),end=", ")
print("num:",len(race))
print("ACM + English:",sorted(ACMplusEnglish),end=", ")
print("num:",len(ACMplusEnglish))
print("Only ACM:",sorted(OnlyACM))
print("Only English:",sorted(OnlyEnglish))
print("ACM Or English:",sorted(ACMOrEnglish))
if zhuanxue in seta:
    seta.remove(zhuanxue)
    print(sorted(seta))
elif zhuanxue in setb:
    setb.remove(zhuanxue)
    print(sorted(setb))

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM