Python習題練習 + 簡單語法總結

之前學了語法知識,很長時間過去了,不做題跟本啥也想不起來,此博客主要爲了 回憶語法 ,找了一些水題來練習。

貨幣系統

在這裏插入圖片描述

money = input()
if money[0] in ['R', 'r']:
    U = eval(money[3: ]) / 7.01
    print("RMB{:.2f}".format(U))
elif money[0] in ['U', 'u']:
    R = 7.01 * eval(money[3: ])
    print("USD{:.2f}".format(R))


語法總結:
1、使用input輸入字符串;
2、eval()方法將字符串類型的值轉換爲數字類型的值,也可以直接用來提取用戶輸入的多個值,得到多個以逗號分隔的數值(如a,b = eval(input()))
3、格式化函數str.format,基本語法是通過{}和:來表示,如 {:.2f}表示保留小數點後兩位。

統計字符串中每個字符出現的次數

str = "Sometimes I believe, at times I'm rational"
str = str.replace(" ", "")
dict = {}

for i in str:
    dict[i] = str.count(i)
print(dict)

語法總結:
1、str.replace()可以替換字符;
2、dict{}是字典類型,我們最終要的結果就是字典類型;
3、str.count()用於統計字符串裏某個字符出現的次數,默認爲從開始到結尾。
4、round()返回浮點數x的四捨五入值(此題未使用,這裏只是複習),floor() 返回數字的下舍整數, 運算符 // 也是向下取整。

複數運算

在這裏插入圖片描述

z = 4.53e-2 + 9j
print(z.real)
print(z.imag)

1、z.real返回實部,z.imag返回虛部

判斷是否迴文

a = input()
if a[::-1] == a:
    print("是迴文")
else:
    print("不是迴文")

語法總結:1、列表切片a[: : -1]相當於將原字符串倒序

分段函數

在這裏插入圖片描述
在這裏插入圖片描述

import math
x = eval(input())
if x > 2:
    print("y=" + "{:.3f}".format(abs(1.23 * x - 1.79)))
elif x == 2:
    print("y=" + "{:.3f}".format(math.e ** x + x ** 3))
else:
    print("y=" + "{:.3f}".format(math.cos(x)))

語法:1、math.e 和,math.cos();

英制單位英寸與公制單位釐米換算

在這裏插入圖片描述
在這裏插入圖片描述

a = input()
if a[-2:] == "英寸" or a[-2:] == "in":
    b = eval(a[:-2]) * 2.54
    print(a[:-2] + "英寸=" + "{:.2f}".format(b)+"釐米")
elif a[-2:] == "釐米" or a[-2:] == "CM" or a[-2:] == "cm":
    b = eval(a[:-2]) / 2.54
    print(a[:-2] + "釐米=" + "{:.2f}".format(b)+"英寸")
else:
    print("單位無效")

語法:注意a[-2: ]和a[:-2]的區別,一個表示後兩個字符,一個表示除後兩個之外的字符

二進制轉換爲十進制

在這裏插入圖片描述
方法一:秦九韶算法:k進制轉十進制的方法是,從高位到低位,不斷乘k,然後加上這一位
在這裏插入圖片描述

a = input()
d = 0
for ch in a:
    d = d * 2 + int(ch)
print(d)

方法二:按位展開相加

s = input()
length = len(s)
d = 0
for i in range(length):
    d = d + int(s[i]) * 2 ** (length - 1 - i)
print(d)

方法三:非循環方法(eval)

print(eval('0b' + input()))

方法四:非循環方法(int)

print(int(input(), 2))

分類統計字符個數

在這裏插入圖片描述

str = input()
str = str.lower()

letter, digit,other = 0, 0, 0
for x in str:
    if 'a' <= x <= 'z':
        letter += 1
    elif '0' <= x <= '9':
        digit += 1
    else :
        other += 1
print("letter={}, digit={}, other={}".format(letter, digit, other))

函數表示:(與題目稍有不同)

def count(s):
    s=s.lower()
    n=len(s)
    lettercount=0
    digitcount=0
    for n in s:
        if 'a' <= n <= 'z':
            lettercount=lettercount+1
        elif '0' <= n <= '9':
            digitcount=digitcount+1
    return(lettercount,digitcount)
s = input()
lettercount,digitcount=count(s)
print("英文字母個數={},數字個數={}".format(lettercount,digitcount))

用戶登錄

在這裏插入圖片描述

error_num = 0
while error_num < 3:
    name = input()
    password = input()
    if (name == "admin" or name == "administrator") and password == "123456":
        print("登錄成功")
        break
    else:
        print("登錄失敗")
        error_num += 1

1-n的階乘之和

在這裏插入圖片描述

def fact(n):
    s = 1
    for i in range(1, n + 1):
        s *= i
    return s
def main():
    n = eval(input())
    s = 0
    for i in range(1, n + 1):
        s = s + fact(i)
    print(s)
main()

判斷元素在列表中出現的次數

在這裏插入圖片描述

def Count(lst, n):
    return lst.count(n)
lst = [8,6,8,10,8,20,10,8,8]
x = eval(input())
print("{}出現{}次".format(x, Count(lst, x)))

統計列表元素

在這裏插入圖片描述

a = eval(input())
b = eval(input())
c = eval(input())
d = eval(input())
e = eval(input())
list = [a, b, c, d, e]
print(list)
ave = (a + b + c + d + e) / 5
print("列表元素的平均數是{}".format(ave))
sum = 0
for i in list:
    if i > ave:
       sum += 1
print("高於平均數的元素個數是{}".format(sum))
list.sort(reverse = True)#降序
print(list)

語法總結:
1、list.sort()用於對原列表進行排序,如果指定參數,則使用比較函數指定的比較函數.reverse – 排序規則,reverse = True 降序, reverse = False 升序(默認)

購物

在這裏插入圖片描述

d = {"egg":6,"meat":40, "sausage":12 }
Sum=0
for a,b in d.items():
    c=eval(input())
    money=int(b)*c
    Sum+=money
    print("{}斤{}".format(c,a),end=",")    
print("共計{:.2f}元".format(Sum))

語法總結:
1、d.items()以列表返回可遍歷的(鍵, 值) 元組數組
比如:

d={1:"a",2:"b",3:"c"}
result=[]
for k,v in d.items():
    result.append(k)
    result.append(v)

print(result)

輸出[1, 'a', 2, 'b', 3, 'c']

在這裏插入圖片描述

dic={"apple":"蘋果","pear":"梨","cat":"貓","dog":"狗"}
a = input()
print("{}-{}".format(a,dic.get(a,"error")))

語法總結:
1、字典(Dictionary) get() 函數返回指定鍵的值,如果值不在字典中返回默認值。
dict.get(key, default=None)
在這裏插入圖片描述

字母頻率統計

在這裏插入圖片描述

s="Hooray! It's snowing! It's time to make a snowman.James runs out. He makes a big pile of snow. "
s=s.lower()
d={}
for i in s:
    if i not in [' ','!','.',',','\'']:
        d[i]=d.get(i,0)+1
for key,value in d.items():
    print("{}:{}".format(key,value))

英漢字典

在這裏插入圖片描述

dic={"apple":"蘋果","pear":"梨","cat":"貓","dog":"狗"}
a = input()
print("{}-{}".format(a,dic.get(a,"error")))

1、語法總結:dict.get(key, default=None)
2、key – 字典中要查找的鍵。
3、default – 如果指定鍵的值不存在時,返回該默認值值。

十進制轉二進制、八進制、十六進制

a = int(input())
print("轉換爲二進制爲:{}".format(bin(a)))
print("轉換爲八進制爲:{}".format(oct(a)))
print("轉換爲十六進制爲:{}".format(hex(a)))

在這裏插入圖片描述
bin():其他進制轉二進制
oct():其他進制轉八進制
int():其他進制轉十進制
hex():其他進制轉十六進制

快速排序

n = int(input())
s = list(map(int, input().split()))

def quick_sort(q, l, r):
    if l < r:
        i = l - 1
        j = r + 1
        x = q[(i + j) // 2]
        while i < j:
            while 1:
                i += 1
                if q[i] >= x : break
            while 1:
                j -= 1
                if q[j] <= x : break
            if i < j :
                q[i], q[j] = q[j], q[i] # 交換值

        quick_sort(q, l, j)
        quick_sort(q, j + 1, r)

quick_sort(s, 0, n - 1)
print(' '.join(map(str, s)))

語法總結:
1、python join()方法:用於將序列中的元素以指定的字符連接生成一個新的字符串,如此題用空格連接每個字符。
2、python map()的常見用法:

  • map()函數可以格式化輸入一行整數:
a = list(map(int,input().split()))
  • 第一個參數接收一個函數名,第二個參數接收一個可迭代對象,也可以進行類型轉換
list4 = [1,2,3,4]
def add(a):
    a += 1
    return a
list5 = map(add,list4)
print list5

結果爲[2,3,4,5]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章