關於面試總結4-python筆試題


前言

現在面試測試崗位,一般會要求熟悉一門語言(python/java),為了考驗求職者的基本功,一般會出2個筆試題,這些題目一般不難,主要考察基本功。
要是給你一台電腦,在編輯器里面邊寫邊調試,沒多大難度。主要是給你一張紙和筆,讓你現場寫出來,那就沒那么容易了。
(本篇代碼都是基於python3.6)

1.統計

統計在一個隊列中的數字,有多少個正數,多少個負數,如[1, 3, 5, 7, 0, -1, -9, -4, -5, 8]

方法一

# coding:utf-8
a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8]

# 用列表生成式,生成新的列表
b = [i for i in a if i > 0]
print("大於0的個數:%s" % len(b))

c = [i for i in a if i < 0]
print("小於0的個數:%s" % len(c))

方法二

# coding:utf-8
a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8]

# 用傳統的判斷思維,累加
m = 0
n = 0
for i in a:
    if i > 0:
        m += 1
    elif i < 0:
        n += 1
    else:
        pass
print("大於0的個數:%s" % m)
print("小於0的個數:%s" % n)

2.字符串切片

字符串 "axbyczdj",如果得到結果“abcd”

方法一

# 字符串切片
a = "axbyczdj"
print(a[::2])

方法二

# 傳統思維
a = "axbyczdj"

c = []
for i in range(len(a)):
    if i % 2 == 0:
        c.append(a[i])
print("".join(c))

3.字符串切割

已知一個字符串為“hello_world_yoyo”, 如何得到一個隊列 ["hello","world","yoyo"]

a = "hello_world_yoyo"
b = a.split("_")
print(b)

4.格式化輸出

已知一個數字為1,如何輸出“0001”

a = 1

print("%04d" % a)

5.隊列

已知一個隊列,如: [1, 3, 5, 7], 如何把第一個數字,放到第三個位置,得到:[3, 5, 1, 7]

a = [1, 3, 5, 7]

# insert插入數據
a.insert(3, a[0])
print(a[1:])

6.交換

已知 a = 9, b = 8,如何交換a和b的值,得到a的值為8,b的值為9

方法1

a = 8
b = 9

a, b = b, a
print(a)
print(b)

方法2

a = 8
b = 9

# 用中間變量c
c = a
a = b
b = c
print(a)
print(b)

7.水仙花

打印出100-999所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。

sxh = []
for i in range(100, 1000):
    s = 0
    m = list(str(i))
    for j in m:
        s += int(j)**len(m)
    if i == s:
        print(i)
        sxh.append(i)

print("100-999的水仙花數:%s" % sxh)

8.完全數

如果一個數恰好等於它的因子之和,則稱該數為“完全數”,又稱完美數或完備數。 例如:第一個完全數是6,它有約數1、2、3、6,除去它本身6外,其余3個數相加,
1+2+3=6。第二個完全數是28,它有約數1、2、4、7、14、28,除去它本身28外,其余5個數相加,1+2+4+7+14=28。
那么問題來了,求1000以內的完全數有哪些?

a = []

for i in range(1, 1000):
    s = 0
    for j in range(1, i):
        if i % j == 0 and j < i:
            s += j
    if s == i:
        print(i)
        a.append(i)
print("1000以內完全數:%s" % a)

9.排序

用python寫個冒泡排序

a = [1, 3, 10, 9, 21, 35, 4, 6]

s = range(1, len(a))[::-1]
print(list(s))  # 交換次數

for i in s:
    for j in range(i):
        if a[j] > a[j + 1]:
            a[j], a[j + 1] = a[j + 1], a[j]
    print("第 %s 輪交換后數據:%s" % (len(s)-i+1, a))
print(a)

10.sort排序

已知一個隊列[1, 3, 6, 9, 7, 3, 4, 6]

  • 按從小到大排序
  • 按從大大小排序
  • 去除重復數字
a = [1, 3, 6, 9, 7, 3, 4, 6]

# 1.sort排序,正序
a.sort()
print(a)

# 2.sort倒敘
a.sort(reverse=True)
print(a)

# 3.去重
b = list(set(a))
print(b)

交流QQ群:779429633


免責聲明!

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



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