環境:Win10操作系統;Python3.7;Pycharm
題目來源:PTA
編程實例1:日期格式化
世界上不同國家有不同的寫日期的習慣。比如美國人習慣寫成“月-日-年”,而中國人習慣寫成“年-月-日”。下面請你寫個程序,自動把讀入的美國格式的日期改寫成中國習慣的日期。
輸入格式:
輸入在一行中按照“mm-dd-yyyy”的格式給出月、日、年。題目保證給出的日期是1900年元旦至今合法的日期。
輸出格式:
在一行中按照“yyyy-mm-dd”的格式給出年、月、日。
輸入樣例:
03-15-2017
輸出樣例:
2017-03-15
str = input() mm = str.split("-",2)[0] dd = str.split("-",2)[1] yy = str.split("-",2)[2] date = yy+"-"+mm+"-"+dd print(date)
split()方法:
str.split(str="", num=string.count(str)).
- str -- 分隔符,默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
- num -- 分割次數。默認為 -1, 即分隔所有。
編程實例2:整數四則運算
本題要求編寫程序,計算2個正整數的和、差、積、商並輸出。題目保證輸入和輸出全部在整型范圍內。
輸入格式:
輸入在一行中給出2個正整數A和B。
輸出格式:
在4行中按照格式“A 運算符 B = 結果”順序輸出和、差、積、商。
輸入樣例:
3 2
輸出樣例:
3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1
方法1:
a,b = map(int,input().split()) print("{} + {} = {}".format(a,b,a+b)) print("{} + {} = {}".format(a,b,a-b)) print("{} * {} = {}".format(a,b,a*b)) print("{} / {} = {}".format(a,b,a//b))
方法2:
A,B = map(int, input().split()) c = str(A) d = str(B) print(c+" + "+d+" =",A+B); print(c+" - "+d+" =",A-B); print(c+" * "+d+" =",A*B); print(c+" / "+d+" =",A//B);
map()方法:
會根據提供的函數對指定序列做映射。
第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。
map(function, iterable, ...)
- function -- 函數
- iterable -- 一個或多個序列
format方法:
Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。
基本語法是通過 {} 和 : 來代替以前的 % 。
format 函數可以接受不限個參數,位置可以不按順序。
舉個栗子:
print("{}{}".format(" hello ", " world ")) #一一對應,輸出 hello world print("{0}{1}".format(" hello ", " world ")) #輸出 hello world print("{1}{0}".format(" hello ", " world ")) #設置指定位置,輸出 world hello print("{0}{0}{1}".format(" hello ", " world ")) #設置指定位置,輸出 hello hello world
format另一個常用用法是分割字符串
print('{:.2f}'.format(11.25555)) #表示保留兩位小數,輸出11.26 print('{:.2%}'.format(0.1125555)) #表示轉化為保留兩位小數的百分位數,輸出11.26%
編程實例3:計算各對應位乘積之和
讀入兩個整數a和b,輸出絕對值a和絕對值b的各對應位乘積之和,如a=1234,b=608,則輸出值為:“1×0+2×6+3×0+4×8“的值,即44。
輸入格式:
在一行中輸入兩個數
輸出格式:
在一行中輸出對應位乘積之和
輸入樣例:
在這里給出一組輸入。例如:
1234 608
輸出樣例:
在這里給出相應的輸出。例如:
44
a,b = map(int,input().split()) a = abs(a) b = abs(b) a = str(a) b = str(b) sum = 0 if len(a)>len(b): for i in range(0,len(b)): sum = sum + int(a[i+len(a)-len(b)])*int(b[i]) if len(a)<len(b): for i in range(0,len(a)): sum = sum + int(b[i+len(b)-len(a)])*int(a[i]) if len(a)==len(b): for i in range(0,len(a)): sum = sum + int(a[i])*int(b[i]) print(sum)
編程實例4:求出歌手的得分
輸入一個正整數n (n>4),再輸入n個實數,求出歌手的得分(保留2位小數)。設一歌唱評獎晚會上有n(n>4)個評委為歌手打分.評分規則:每個評委依次打分,再去掉2個最高分和2個最低分,計算余下的分數平均值為歌手的得分.
輸入格式:
在第一行中輸入n 在第二行中輸入n個分數
輸出格式:
在一行中輸出平均分數
輸入樣例:
在這里給出一組輸入。例如:
10
10 10 9 9 9 8 8 8 7 7
輸出樣例:
在這里給出相應的輸出。例如:
aver=8.50
n = input() num = [int(n) for n in input().split()] num.sort() for i in range(0,4): num.pop() num.reverse() sum = 0 for j in range(len(num)): sum += num[j] aver = sum/len(num) print("{:.2f}".format(aver))
import numpy as np n = input() num = [int(n) for n in input().split()] num.sort() for i in range(0,4): num.pop() num.reverse() sum = 0 for j in range(len(num)): sum += num[j] #可以使用numpy自帶的均值函數 avg = np.mean(num) print("{:.2f}".format(avg))
reverse()方法:
將表中的元素反向存儲
pop()方法:
Python 字典 pop() 方法刪除字典給定鍵 key 及對應的值,返回值為被刪除的值。key 值必須給出。 否則,返回 default 值。
pop(key[,default])
-
key: 要刪除的鍵值
-
default: 如果沒有 key,返回 default 值
注意1:在調用pop函數后,會對原來的列表產生影響,也就是說,pop函數刪除的是原列表的值
舉個栗子:
num = [1,2,3,4,5] num.pop() print(num) #輸出[1, 2, 3, 4]
注意2:pop函數里加入不同的值結果是不同的,默認列表中的元素首位標號為0,末尾元素為-1,依次類推
舉個栗子:
num = [1,2,3,4,5] num.pop(-1) print(num)#輸出[1, 2, 3, 4] num.pop(0) print(num)#輸出[2, 3, 4]
編程實例5:刪除字符
輸入一個字符串 str,再輸入要刪除字符 c,大小寫不區分,將字符串 str 中出現的所有字符 c 刪除。
輸入格式:
在第一行中輸入一行字符 在第二行輸入待刪除的字符
輸出格式:
在一行中輸出刪除后的字符串
輸入樣例:
在這里給出一組輸入。例如:
Bee
E
輸出樣例:
在這里給出相應的輸出。例如:
result: B
str = list(input().strip()) x = input().strip() s = [i for i in str if not(i.lower() == x or i.upper() == x)] print(s) print('result: %s' %''.join(s).strip())
strip()方法:
Python strip() 方法用於移除字符串頭尾指定的字符(默認為空格或換行符)或字符序列。
注意:該方法只能刪除開頭或是結尾的字符,不能刪除中間部分的字符。
str.strip([chars]);
- chars -- 移除字符串頭尾指定的字符序列。
舉個栗子:
str = "123abcrunoob321" print (str.strip( '12' )) # 字符序列為 12,輸出3abcrunoob3 str1 = " 123456 " print(str1.strip()) #輸出123456,無首位空格
lower()方法與upper()方法:
Python lower() 方法轉換字符串中所有大寫字符為小寫。 python upper()方法轉換字符串中所有小寫字符為大寫
舉個栗子:
str = "hello!" print (str.upper()) # 輸出HELLO! str1 = "HELLO!" print(str1.lower()) #輸出hello!
編程實例6:jmu-python-統計成績
輸入一批學生成績,計算平均成績,並統計不及格學生人數。
輸入格式:
每行輸入一個數據,輸入數據為負數
結束輸入
輸出格式:
平均分=XX,不及格人數=XX
,其中XX
表示對應數據。如果沒有學生數據,輸出沒有學生
輸入樣例:
30
50
70
80
90
20
-1
輸出樣例:
平均分=56.67,不及格人數=3
a = float(input()) list = [] sum = a list.append(a) count = 1 if a >= 0: while 1: a = float(input()) if a < 0: break list.append(a) sum = a + sum count = count + 1 print("平均分={:.2f},不及格人數=".format(sum / count), end="") n = 0 for i in list: if i < (sum / count): n = n + 1 print("%d" % n) else : print("沒有學生")
編程實例7:jmu-python-重復元素判定
每一個列表中只要有一個元素出現兩次,那么該列表即被判定為包含重復元素。
編寫函數判定列表中是否包含重復元素,如果包含返回True
,否則返回False
。
然后使用該函數對n行字符串進行處理。最后統計包含重復元素的行數與不包含重復元素的行數。
輸入格式:
輸入n,代表接下來要輸入n行字符串。
然后輸入n行字符串,字符串之間的元素以空格相分隔。
輸出格式:
True=包含重復元素的行數, False=不包含重復元素的行數,
后面有空格。
輸入樣例:
5
1 2 3 4 5
1 3 2 5 4
1 2 3 6 1
1 2 3 2 1
1 1 1 1 1
輸出樣例:
True=3, False=2
n = int(input()) f = 0 t = 0 for i in range(n): a = input() a = list(a.split()) if len(list(a)) == len(set(a)): f += 1 else: t += 1 print('True=%d, False=%d' %(t,f))
set()方法:
set() 函數創建一個無序不重復元素集,可進行關系測試,刪除重復數據,還可以計算交集、差集、並集等。
舉個栗子:
x = set('aaabbc') print(x) #輸出{'a', 'c', 'b'} y = set('abcddee') print(y) #輸出{'d', 'c', 'b', 'a', 'e'} print(set(x&y)) #輸出{'a', 'b', 'c'} print(set(x|y)) #輸出{'d', 'a', 'c', 'b', 'e'} print(set(y-x)) #輸出{'d', 'e'}