【Python入門】 —— 和我一起用pycharm寫7道PTA的題目吧!


環境: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'}

 

 

 

 


免責聲明!

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



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