非計算機專業同學的Python自我修養-3
記錄本科大一下的學習程序
WEEK-5例題
Ps:用手機看效果打折扣
Q1:統計高于平均分的人數
特別鳴謝:XRJGG
【問題描述】
從若干學生成績中統計高于(嚴格的大于)平均分的人數,用-1做為學生成績資料的結束標志,如果沒有輸入成績,則輸出0,
【輸入形式】
一組學生的成績
【輸出形式】
高于平均分的學生人數
#樣例輸入
70 50 80 -1
#樣例輸出
2
代碼:
a=input().split(' ') #這里的a是list形式
score=0
number=0
if a[0] != '-1':#如果輸入的值是-1,那么直接去最后面的else輸出0
for i in a:
i=int(i) #這里把i從str變成int格式
score += i #score會把之前的數全部加起來
number += 1 #number統計輸入數字個數
average_score=(score+1)/(number-1)
greater=0
#這里再次使用for in 不得不說 真的可
for j in a:
j=int(j)
if j > average_score :
greater += 1
print(greater) #同理,可print
else:#為什么要把else放在后面和第一個if并列?
#不把else放在后面,前面統計number=0,而0作除數時會報錯
print('0')
X設計的代碼還是非常巧妙,
輸出示例:無
Q2:逆序排列
【問題描述】
撰寫程式對標準輸入的10個整數置逆序排列并輸出,
【輸入形式】
標準輸入的前十行代表參與計算的十個整數,
【輸出形式】
標準輸出的一行表示逆序后的陣列,以空格作為間隔,
#樣例輸入
1
2
3
4
5
6
7
8
9
10
#樣例輸出
10 9 8 7 6 5 4 3 2 1
代碼:
a = [] #這題依舊使用list做法
count=0
while True:
integer = input() #把input放在while下面實作分行輸入
a.append(integer) #str.append(),輸入數字依次放在a中
count +=1
if count == 10: #計數.當滿足10個數字時打斷輸入
break
a.reverse() #reverse陳述句,很方便的實作倒敘排列
#這里其實也用了格式化切片[::-1],但是效果不好,僅限個位數,你輸入的90會變成09,109會變成901.
a=' '.join(a) #將list轉換為字串
print(a)
**輸出示例:無
Q3: Python日期格式轉換程式
來源:python求輸入某年某月某日,判斷這一天是這一年的第幾天
【問題描述】
輸入“05/24/2003”,輸出日期“May 24,2003.”
提示:12個月份英文名字串,構成一個串列
演算法:
(1)輸入日期,格式為:mm/dd/yyyy格式,并保存在dateStr變數中;
(2)利用斜杠分離日期資訊,將dateStr分成月份、日期、年份的字串 (提示:split)
(3)將月份的字串轉換為月份數字;
(4)利用數字月份查找這個月份的名稱;
(5)創建一個新的日期字串,格式為:月份,日期,年份
(6)輸出這個新的日期字串
【輸入形式】
輸入日期,格式為:mm/dd/yyyy格式
【輸出形式】
輸出新的日期字串,格式為:月份,日期,年份
#樣例輸入(僅日期)
Enter a date (mm/dd/yyyy):11/13/2003
#樣例輸出
The converted date is:November 13,2003
代碼:
date=input('Enter a date (mm/dd/yyyy):')
mm=int(date[0:2])
dd=date[3:5]
yyyy=date[6:10]
temp=['January','February','March','April','May','June','July','August','September','October','November','December']
month=temp[mm-1:mm]
month=''.join(month)
print('The converted date is:',month,' ',dd,',',yyyy,sep='')
這題還算簡單,我用了類似字典?的做法,利用格式化切片去定位月份,然后串列轉字串,
Q4:數列翻轉
【問題描述】
撰寫程式對串列中的資料進行翻轉轉換,即將陣列中第一個數和最后一個數交換、第二個數和倒數第二個數交換,依此類推,
建議使用串列的reverse方法,在搜索引擎輸入“python reverse”可以檢索到該方法的用法描述,
【輸入形式】
陣列元素的個數(n) 以及n個整數,采用空格隔開它們
【輸出形式】
交換以后的陣列,采用空格隔開它們
【樣例輸入】
4 100 200 300 400
【樣例輸出】
400 300 200 100
代碼:
list1=[]
lista1=list(input().strip().split())
lista2=list1[1:]
number=int(list1[0])
for i in range(number,0,-1):
print(list1[i],end=' ')
這里沒有用推薦的reserve方法,reserve應該更簡單,
這里使用的是for in 倒敘 也有可取之處
Q5: 一年中第幾天
【問題描述】
輸入某年某月某日,判斷這一天是這一年的第幾天?程式分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,
特殊情況:閏年且輸入月份大于3時需考慮多加一天,
提示:(1) 閏年的2月有29天,平年的2月有28天;
(2) 如果年份滿足以下兩個條件之一,則該年就是閏年,
i) 年份能被4整除且不能被100整除
ii) 年份能被400整除
【輸入形式】
輸入一行,一行三個整數,用空格隔開,分別代表年月日,如2012 2 7
代表2012年2月7日,注意,不要輸入任何漢字,
【輸出形式】
輸出只有一個數字,即所對應的日期是該年的第幾天,
#樣例輸入
2012 1 1
#樣例輸出
1
代碼:
year,month,day=map(int,input().split(' ')) #這樣都是int格式,也可以運用到前面幾題中
day += (month-1) * 30#將月數轉化為日
if month < 9:
day += month//2
else:
day += (month+1)//2
if month > 2:
if year%400 ==0 or year%4 == 0 and year%100 !=0 :
day -= 1
else:
day -= 2
print(day)
下面是輸出示例
這個代碼運用的非常巧妙,完美詮釋了這首歌:
一三五七八十臘,三十一天永不差; 四六九冬是小月,唯有二月二十八,
細品吧

Q6:Fib數列計算
來源忘記了,后面可補上
使用的新函式已經記下了
【問題描述】
一個整數數列,它的第一項是m,第二項是n,以后每項都是前兩項之和,
例如數列:1,1,2,3,5,8,13,21......
撰寫程式,輸入整型數值m和n,求解該數列,保存到一個串列,求前20項之和并輸出,
【輸入形式】
輸入的第一行表示m的值;
輸入的第二行表示n的值,
【輸出形式】
輸出該數列的前20項的和,若輸入資料含小數,則輸出"illegal input",
#樣例輸入
1
1
#樣例輸出:
17710
代碼:
a=eval(input())
b=eval(input())
count=0
d=a+b
if isinstance(a,int)==False or isinstance(b,int)==False: #判斷輸入的對不對
print('illegal input')
else:
while count < 18:#因為已經輸入了2個數,后面進行計算只要重復18遍
c = a + b #c會將前兩個數字加起來
a = b
b = c #這兩行相當于將a 和b 整體向后移了一位
d += c #d是統計所有的
count += 1
print(d)
經典的斐波那契數列
isinstance() 函式用于
:判斷一個物件是否是一個已知的型別
Q7:統計字串中小寫字母個數最多的字符
來源:python找出一個字串中出現次數最多的字_第十一屆藍橋杯Python組第二場試題
【問題描述】
輸入小寫字串,輸出字串中出現次數最多的字母及其出現次數,如果有多個字母出現次數一樣,則按字符從小到大順序輸出字母及其出現次數,
【輸入形式】
一個字串,
【輸出形式】
出現次數最多的字母及其出現次數
#樣例輸入
abcccddd
#樣例輸出:
c 3
d 3
代碼:
cnt = [0]*26#cnt是一個擁有26個‘0’的list,對應26個字母
s = input()
for alpha in s:
cnt[ord(alpha) - ord('a')] += 1 #這里轉換為ord,找出數字差用于切片
#如果alpha=a,那么你的cnt第一個0就會+1
#同理,如果alpha=c,那么第三個數將會+1
for i in range(26):
if cnt[i] >= max(cnt):
#重新看一下cnt這個list,如果出現2個字母相同的情況,也能print出來
print(chr(i+ord('a')),cnt[i])
這個題用的方法跟上周的凱撒加密差不多,比凱撒加密更簡單,
2021/4/2 18:26已更新
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272247.html
標籤:python
