30 soalan latihan Python yang patut dikumpulkan (dengan penjelasan terperinci)

王林
Lepaskan: 2023-04-14 18:01:06
ke hadapan
1772 orang telah melayarinya

30 soalan latihan Python yang patut dikumpulkan (dengan penjelasan terperinci)

1. Memandangkan rentetan ialah "hello_world_yoyo", bagaimana untuk mendapatkan baris gilir ["hello","world","yoyo"]?

Gunakan fungsi split untuk membelah rentetan dan menukar data kepada jenis senarai:

test = 'hello_world_yoyo'
print(test.split("_"))
12
Salin selepas log masuk

Hasil:

['hello', 'world', 'yoyo']
Salin selepas log masuk

Ada senarai [. "hello ", "world", "yoyo"], bagaimana hendak menyambung rentetan dalam senarai untuk mendapatkan rentetan "hello_world_yoyo"?

Gunakan fungsi join untuk menukar data menjadi rentetan:

test = ["hello", "world", "yoyo"]
print("_".join(test))
Salin selepas log masuk

Hasil:

hello_world_yoyo
Salin selepas log masuk

Jika anda tidak bergantung pada kaedah gabungan yang disediakan oleh python , anda juga boleh menggunakan gelung for , dan kemudian menggabungkan rentetan, tetapi apabila menggunakan "+" untuk menyambung rentetan, hasilnya akan menghasilkan objek baharu Apabila menggunakan join, hasilnya hanyalah untuk menggabungkan elemen dalam senarai asal, jadi join lebih efisyen.

Gelung for disambung seperti berikut:

test = ["hello", "world", "yoyo"]
# 定义一个空字符串
j = ''
# 通过 for 循环打印出列表中的数据
for i in test:
 j = j + "_" + i
# 因为通过上面的字符串拼接,得到的数据是“_hello_world_yoyo”,前面会多一个下划线_,所以把这个下划线去掉
print(j.lstrip("_"))
Salin selepas log masuk

3 Gantikan setiap ruang dalam rentetan s dengan "%20", input: s = "Kami gembira." , output : "Kami%20ada%20gembira.".

Gunakan fungsi ganti dan gantikan aksara:

s = 'We are happy.'
print(s.replace(' ', '%20'))
12
Salin selepas log masuk

Keputusan:

We%20are%20happy.
Salin selepas log masuk

4. Bagaimana cara mencetak jadual pendaraban 99 dalam Python?

untuk cetakan gelung:

for i in range(1, 10):
 for j in range(1, i+1):
 print('{}x{}={}t'.format(j, i, i*j), end='')
 print()
Salin selepas log masuk

pelaksanaan gelung sambil:

i = 1
while i <= 9:
 j = 1
 while j <= i:
 print("%d*%d=%-2d"%(i,j,i*j),end = ' ')# %d: 整数的占位符,'-2'代表靠左对齐,两个占位符
 j += 1
 print()
 i += 1
Salin selepas log masuk

hasil:

1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
Salin selepas log masuk

5 , cari kedudukan di mana perkataan "selamat datang" muncul dalam rentetan "Hello, selamat datang ke dunia saya.", kembali -1 jika tidak ditemui.

def test():
 message = 'Hello, welcome to my world.'
 world = 'welcome'
 if world in message:
 return message.find(world)
 else:
 return -1
print(test())
Salin selepas log masuk

Hasil:

7
Salin selepas log masuk

6 Kira bilangan kali huruf w muncul dalam rentetan "Hello, selamat datang ke dunia saya."

def test():
 message = 'Hello, welcome to my world.'
 # 计数
 num = 0
 # for 循环 message
 for i in message:
 # 判断如果 ‘w’ 字符串在 message 中,则 num +1
 if 'w' in i:
 num += 1
 return num
print(test())
# 结果
2
Salin selepas log masuk

7 Masukkan str rentetan dan keluarkan aksara ke-m yang hanya muncul n kali Sebagai contoh, dalam rentetan gbgkkdehh, cari aksara kedua yang hanya muncul sekali dan keluarkan hasilnya : d

def test(str_test, num, counts):
 """
 :param str_test: 字符串
 :param num: 字符串出现的次数
 :param count: 字符串第几次出现的次数
 :return:
 """
 # 定义一个空数组,存放逻辑处理后的数据
 list = []
 # for循环字符串的数据
 for i in str_test:
 # 使用 count 函数,统计出所有字符串出现的次数
 count = str_test.count(i, 0, len(str_test))
 # 判断字符串出现的次数与设置的counts的次数相同,则将数据存放在list数组中
 if count == num:
 list.append(i)
 # 返回第n次出现的字符串
 return list[counts-1]
print(test('gbgkkdehh', 1, 2))
结果:
d
Salin selepas log masuk

8 Tentukan sama ada rentetan a = "selamat datang ke dunia saya" mengandungi perkataan b = "dunia", jika ada, ia akan kembali Benar, jika tidak, ia akan kembali. palsu.

def test():
 message = 'welcome to my world'
 world = 'world'
 if world in message:
 return True
 return False
print(test())
结果:
True
Salin selepas log masuk

9 Mula mengira dari 0 dan keluarkan rentetan yang ditentukan

def test():
 message = 'hi how are you hello world, hello yoyo!'
 world = 'hello'
 return message.find(world)
print(test())
结果:
15
Salin selepas log masuk

10 Mula mengira dari 0 dan keluarkan rentetan yang ditentukan A = "hello" dalam rentetan B = The kedudukan terakhir yang muncul dalam "hai apa khabar hello dunia, hello yoyo!", jika B tidak mengandungi A, maka -1 adalah output.

def test(string, str):
 # 定义 last_position 初始值为 -1
 last_position = -1
 while True:
 position = string.find(str, last_position+1)
 if position == -1:
 return last_position
 last_position = position
print(test('hi how are you hello world, hello yoyo!', 'hello'))
结果:
28
Salin selepas log masuk

11 Diberi nombor a, tentukan sama ada nombor itu nombor ganjil atau genap.

while True:
 try:
 # 判断输入是否为整数
 num = int(input('输入一个整数:'))
 # 不是纯数字需要重新输入
except ValueError:
 print("输入的不是整数!")
 continue
 if num % 2 == 0:
 print('偶数')
 else:
 print('奇数')
 break
结果:
输入一个整数:100
偶数
Salin selepas log masuk

12 Masukkan nama untuk menentukan sama ada nama keluarga itu Wang.

def test():
 user_input = input("请输入您的姓名:")
 if user_input[0] == '王':
 return "用户姓王"
 return "用户不姓王"
print(test())
结果:
请输入您的姓名:王总
用户姓王
Salin selepas log masuk

13. Bagaimana untuk menentukan sama ada rentetan terdiri daripada nombor tulen?

Gunakan penukaran jenis yang disediakan oleh Python untuk menukar input data oleh pengguna kepada jenis nombor titik terapung Jika penukaran memberikan pengecualian, ia dinilai bahawa nombor itu tidak terdiri daripada nombor tulen.

def test(num):
 try:
 return float(num)
 except ValueError:
 return "请输入数字"
print(test('133w3'))
Salin selepas log masuk

14 Tukar rentetan a = “Ini adalah contoh rentetan….wow!” kepada semua huruf besar, dan tukar rentetan b = “Selamat Datang Ke Dunia Saya” kepada semua huruf kecil.

a = 'This is string example….wow!'
b = 'Welcome To My World'
print(a.upper())
print(b.lower())
Salin selepas log masuk

15 Alih keluar ruang hadapan dan belakang daripada rentetan a = “selamat datang ke dunia saya”

Python menyediakan kaedah jalur() untuk mengalih keluar ruang hadapan dan belakang, rstrip(. ) mengalih keluar ruang belakang , lstrip() mengalih keluar ruang hadapan, ganti(" ", "") mengalih keluar semua ruang.

a = 'welcome to my world '
print(a.strip())
Salin selepas log masuk

juga boleh dilaksanakan secara rekursif:

def trim(s):
 flag = 0
 if s[:1]==' ':
 s = s[1:]
 flag = 1
 if s[-1:] == ' ':
 s = s[:-1]
 flag = 1
 if flag==1:
 returntrim(s)
 else:
 return s
print(trim('Hello world!'))
Salin selepas log masuk

dilaksanakan melalui gelung sementara:

def trim(s):
 while(True):
 flag = 0
 if s[:1]==' ':
 s = s[1:]
 flag = 1
 if s[-1:] == ' ':
 s = s[:-1]
 flag = 1
 if flag==0:
 break
 return s
print(trim('Hello world!'))
Salin selepas log masuk

16 Tukar rentetan s = "ajldjlajfdljfddd" , alih keluar pendua dan keluarkan "adfjl" dalam susunan menaik.

def test():
 s = 'ajldjlajfdljfddd'
 # 定义一个数组存放数据
 str_list = []
 # for循环s字符串中的数据,然后将数据加入数组中
 for i in s:
 # 判断如果数组中已经存在这个字符串,则将字符串移除,加入新的字符串
 if i in str_list:
 str_list.remove(i)
 str_list.append(i)
 # 使用 sorted 方法,对字母进行排序
 a = sorted(str_list)
 # sorted方法返回的是一个列表,这边将列表数据转换成字符串
 return "".join(a)
print(test())
结果:
adfjl
Salin selepas log masuk

17 Cetak corak berikut (berlian):

30 soalan latihan Python yang patut dikumpulkan (dengan penjelasan terperinci)

def test():
 n = 8
 for i in range(-int(n/2), int(n/2) + 1):
 print(" "*abs(i), "*"*abs(n-abs(i)*2))
print(test())
结果:
 **
****
 ******
********
 ******
****
 **
Salin selepas log masuk

18 ( Sebagai contoh, a = 12346), ketahui berapa banyak digit itu dan cetak digit dalam susunan terbalik.

class Test:
 # 计算数字的位数
 def test_num(self, num):
 try:
 # 定义一个 length 的变量,来计算数字的长度
 length = 0
 while num != 0:
 # 判断当 num 不为 0 的时候,则每次都除以10取整
 length += 1
 num = int(num) // 10
 if length > 5:
 return "请输入正确的数字"
 return length
 except ValueError:
 return "请输入正确的数字"
 # 逆序打印出个位数
 def test_sorted(self, num):
 if self.test_num(num) != "请输入正确的数字":
 # 逆序打印出数字
 sorted_num = num[::-1]
 # 返回逆序的个位数
 return sorted_num[-1]
print(Test().test_sorted('12346'))
结果:
1
Salin selepas log masuk

19 Jika nombor 3 digit sama dengan hasil tambah kubus digitnya, ia dipanggil nombor narcissus. Contohnya: 153 = 13 + 53 + 33, jadi 153 ialah nombor daffodil. Jadi bagaimana untuk mencari bilangan daffodil dalam 1000 (3 digit).

def test():
 for num in range(100, 1000):
 i = num // 100
 j = num // 10 % 10
 k = num % 10
 if i ** 3 + j ** 3 + k ** 3 == num:
 print(str(num) + "是水仙花数")
test()
Salin selepas log masuk

20. Cari hasil tambah 1+2+3…+100.

i = 1
for j in range(101):
 i = j + i
print(i)
结果:
5051
Salin selepas log masuk

21 Hitung nilai 1-2+3-4+5-…-100.

def test(sum_to):
 # 定义一个初始值
 sum_all = 0
 # 循环想要计算的数据
 for i in range(1, sum_to + 1):
 sum_all += i * (-1) ** (1 + i)
 return sum_all
if __name__ == '__main__':
 result = test(sum_to=100)
 print(result)
-50
Salin selepas log masuk

22. Formula pengiraan sedia ada ialah 13 + 23 + 33 + 43 + …….+ n3. + 23 + 33 + 43 + 53 = 225).

def test(n):
 sum = 0
 for i in range(1, n+1):
 sum += i*10+i
 return sum
print(test(5))
结果:
225
Salin selepas log masuk

23 Diketahui bahawa nilai a ialah "hello" dan nilai b ialah "world". sebagai "dunia" dan nilai b sebagai "hello"?

a = 'hello'
b = 'world'
c = a
a = b
b = c
print(a, b)
Salin selepas log masuk

24 Bagaimana untuk menentukan sama ada tatasusunan ialah tatasusunan simetri?

Contohnya, [1, 2, 0, 2, 1], [1, 2, 3, 3, 2, 1], tatasusunan tersebut semuanya tatasusunan simetri. Gunakan Python untuk menilai sama ada ia adalah tatasusunan simetri yang mencetak Benar, bukan Salah.

def test():
 x = [1, 'a', 0, '2', 0, 'a', 1]
 # 通过下标的形式,将字符串逆序进行比对
 if x == x[::-1]:
 return True
 return False
print(test())
结果:
True
Salin selepas log masuk

25 Jika terdapat senarai a = [1,3,5,7,11], maka bagaimana untuk membalikkannya menjadi [11,7,5,3,1], dan ambil. kepada nombor [1,5,11] dengan nilai tempat ganjil?

def test():
 a = [1, 3, 5, 7, 11]
 # 逆序打印数组中的数据
 print(a[::-1])
 # 定义一个计数的变量
 count = 0
 for i in a:
 # 判断每循环列表中的一个数据,则计数器中会 +1
 count += 1
 # 如果计数器为奇数,则打印出来
 if count % 2 != 0:
 print(i)
test()
结果:
[11, 7, 5, 3, 1]
1
5
11
Salin selepas log masuk

26 Isih nombor dalam senarai a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8] daripada kecil kepada besar.

a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]
print(sorted(a))
结果:
[1, 1, 6, 6, 7, 8, 8, 8, 8, 9, 11]
Salin selepas log masuk

27 Cari nilai maksimum dan minimum dalam senarai L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88].

L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
print(max(L1))
print(min(L1))
结果:
88
1
Salin selepas log masuk

Perkara di atas dilaksanakan melalui fungsi yang disertakan dengan Python, seperti berikut, anda boleh menulis program pengiraan sendiri:

class Test(object):
 def __init__(self):
 # 测试的列表数据
 self.L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
 # 从列表中取第一个值,对于数据大小比对
 self.num = self.L1[0]
 def test_small_num(self, count):
 """
 :param count: count为 1,则表示计算最大值,为 2 时,表示最小值
 :return:
 """
 # for 循环查询列表中的数据
 for i in self.L1:
 if count == 1:
 # 循环判断当数组中的数据比初始值小,则将初始值替换
 if i > self.num:
 self.num = i
 elif count == 2:
 if i < self.num:
 self.num = i
 elif count != 1 or count != 2:
 return "请输入正确的数据"
 return self.num
print(Test().test_small_num(1))
print(Test().test_small_num(2))
结果:
88
1
Salin selepas log masuk

28. 找出列表 a = [“hello”, “world”, “yoyo”, “congratulations”] 中单词最长的一个。

def test():
 a = ["hello", "world", "yoyo", "congratulations"]

 # 统计数组中第一个值的长度
 length = len(a[0])
 for i in a:
 # 循环数组中的数据,当数组中的数据比初始值length中的值长,则替换掉length的默认值
 if len(i) > length:
 length = i
 return length
print(test())
结果:
congratulations
Salin selepas log masuk

29. 取出列表 L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] 中最大的三个值。

def test():
 L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88]
 return sorted(L1)[:3]
print(test())
结果:
[1, 2, 2]
Salin selepas log masuk

30. 把列表 a = [1, -6, 2, -5, 9, 4, 20, -3] 中的数字绝对值。

def test():
 a = [1, -6, 2, -5, 9, 4, 20, -3]
 # 定义一个数组,存放处理后的绝对值数据
 lists = []
 for i in a:
# 使用 abs() 方法处理绝对值
 lists.append(abs(i))
 return lists
print(test())
结果:
[1, 6, 2, 5, 9, 4, 20, 3]
Salin selepas log masuk

Atas ialah kandungan terperinci 30 soalan latihan Python yang patut dikumpulkan (dengan penjelasan terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan