> 백엔드 개발 > 파이썬 튜토리얼 > 수집할 가치가 있는 30가지 Python 연습 문제(자세한 설명 포함)

수집할 가치가 있는 30가지 Python 연습 문제(자세한 설명 포함)

王林
풀어 주다: 2023-04-14 18:01:06
앞으로
1787명이 탐색했습니다.

수집할 가치가 있는 30가지 Python 연습 문제(자세한 설명 포함)

1. 문자열이 "hello_world_yoyo"인 경우 대기열 ["hello","world","yoyo"]를 얻는 방법은 무엇입니까?

split 함수를 사용하여 문자열을 분할하고 데이터를 목록 유형으로 변환합니다:

test = 'hello_world_yoyo'
print(test.split("_"))
12
로그인 후 복사

결과:

['hello', 'world', 'yoyo']
로그인 후 복사

2 목록 ["hello", "world", "yoyo"]이 있으며 변환하는 방법이 있습니다. "hello_world_yoyo" 문자열을 얻기 위해 문자열을 연결하시겠습니까?

조인 함수를 사용하여 데이터를 문자열로 변환합니다.

test = ["hello", "world", "yoyo"]
print("_".join(test))
로그인 후 복사

결과:

hello_world_yoyo
로그인 후 복사

파이썬에서 제공하는 조인 방법을 사용하지 않는 경우 for 루프를 사용한 다음 문자열을 이어붙일 수도 있습니다. 문자열을 연결하는 "+" 조인을 사용하면 결과는 새 개체를 생성합니다. 조인을 사용하면 결과는 원래 목록의 요소를 연결하는 것이므로 조인이 더 효율적입니다.

for 루프는 다음과 같이 이어집니다:

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

3. 문자열 s의 각 공백을 "%20"으로 바꾸고, 입력: s = "We are happy.", 출력: "We%20are%20happy. ".

replace 함수를 사용하여 문자를 바꿉니다:

s = 'We are happy.'
print(s.replace(' ', '%20'))
12
로그인 후 복사

결과:

We%20are%20happy.
로그인 후 복사

4. Python에서 99 구구단을 인쇄하는 방법은 무엇입니까?

for 루프 인쇄:

for i in range(1, 10):
 for j in range(1, i+1):
 print('{}x{}={}t'.format(j, i, i*j), end='')
 print()
로그인 후 복사

while 루프 구현:

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
로그인 후 복사

결과:

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
로그인 후 복사

5. 아래 첨자 0에서 색인 생성을 시작하고 "Hello, Welcome to my world" 문자열에 나타나는 "welcome"이라는 단어를 찾습니다. 위치를 찾을 수 없으면 -1이 반환됩니다.

def test():
 message = 'Hello, welcome to my world.'
 world = 'welcome'
 if world in message:
 return message.find(world)
 else:
 return -1
print(test())
로그인 후 복사

결과:

7
로그인 후 복사

6. "Hello, Welcome to my world" 문자열에 문자 w가 나타나는 횟수를 셉니다.

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
로그인 후 복사

7 문자열 str을 입력하고 n번만 나타나는 m번째 문자를 출력합니다. 예를 들어 ggbkkdehh 문자열에서 한 번만 나타나는 두 번째 문자를 찾아 결과를 출력합니다: 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
로그인 후 복사

8. 문자열 a = "welcome to my world"에 b = "world"라는 단어가 포함되어 있으면 True를 반환하고, 포함하지 않으면 False를 반환합니다.

def test():
 message = 'welcome to my world'
 world = 'world'
 if world in message:
 return True
 return False
print(test())
结果:
True
로그인 후 복사

9. 0부터 계산을 시작하고 지정된 문자열

def test():
 message = 'hi how are you hello world, hello yoyo!'
 world = 'hello'
 return message.find(world)
print(test())
结果:
15
로그인 후 복사

10을 출력합니다. 0부터 계산을 시작하고 문자열 B = "안녕하세요 안녕하세요, 안녕 요요!"에 지정된 문자열 A = "hello"를 출력합니다. B의 마지막 발생 위치, B에 A가 포함되어 있지 않으면 -1이 출력됩니다.

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
로그인 후 복사

11. 숫자 a가 주어지면 숫자가 홀수인지 짝수인지 판단하세요.

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

12. 성이 왕인지 확인하려면 이름을 입력하세요.

def test():
 user_input = input("请输入您的姓名:")
 if user_input[0] == '王':
 return "用户姓王"
 return "用户不姓王"
print(test())
结果:
请输入您的姓名:王总
用户姓王
로그인 후 복사

13. 문자열이 순수한 숫자로 구성되어 있는지 확인하는 방법은 무엇입니까?

Python에서 제공하는 유형 변환을 사용하여 사용자가 입력한 데이터를 부동 소수점 숫자 유형으로 변환합니다. 변환에서 예외가 발생하면 숫자가 순수한 숫자로 구성되지 않은 것으로 판단됩니다.

def test(num):
 try:
 return float(num)
 except ValueError:
 return "请输入数字"
print(test('133w3'))
로그인 후 복사

14. 문자열 a = “This is string example….wow!”를 모두 대문자로 변환하고, 문자열 b = “Welcome To My World”를 모두 소문자로 변환합니다.

a = 'This is string example….wow!'
b = 'Welcome To My World'
print(a.upper())
print(b.lower())
로그인 후 복사

15 문자열 a = "welcome to my world"에서 선행 및 후행 공백 제거

Python은 선행 및 후행 공백을 제거하는 Strip() 메서드를 제공하고, rstrip()은 후행 공백을 제거하는 lstrip()입니다. 선행 공백을 제거하고, 교체( " ", "") 모든 공백을 제거합니다.

a = 'welcome to my world '
print(a.strip())
로그인 후 복사

는 재귀적으로 구현될 수도 있습니다:

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!'))
로그인 후 복사

while 루프를 통해 구현:

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!'))
로그인 후 복사

16. 문자열 s = "ajldjlajfdljfddd"를 변환하고, 중복을 제거하고 작은 것에서 큰 것으로 정렬하여 "adfjl"을 출력합니다.

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
로그인 후 복사

17. 다음 패턴(다이아몬드)을 인쇄하세요:

수집할 가치가 있는 30가지 Python 연습 문제(자세한 설명 포함)

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())
结果:
 **
****
 ******
********
 ******
****
 **
로그인 후 복사

18. 5자리 이하의 양의 정수(예: a = 12346)가 주어지면 그 숫자가 몇 개인지 알아보고 인쇄하세요. 숫자를 역순으로.

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
로그인 후 복사

19. 세 자리 숫자가 해당 숫자의 세제곱의 합과 같으면 이를 수선화 수라고 합니다. 예를 들어 153 = 13 + 53 + 33이므로 153은 수선화 수입니다. 그러면 1000(3자리) 이내의 수선화 수를 구하는 방법에 대해 알아보겠습니다.

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()
로그인 후 복사

20 1+2+3…+100의 합을 구하세요.

i = 1
for j in range(101):
 i = j + i
print(i)
结果:
5051
로그인 후 복사

21. 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
로그인 후 복사

22. 기존 계산식은 13 + 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
로그인 후 복사

23 a의 값은 "hello"이고 b의 값은 "world"인 것으로 알려져 있습니다. a와 b의 값을 교환하여 a의 값을 "world"로 만드는 방법입니다. "이고 b의 값은 "hello"입니까?

a = 'hello'
b = 'world'
c = a
a = b
b = c
print(a, b)
로그인 후 복사

24. 배열이 대칭 배열인지 확인하는 방법은 무엇입니까?

예를 들어 [1, 2, 0, 2, 1], [1, 2, 3, 3, 2, 1]과 같은 배열은 모두 대칭 배열입니다. Python을 사용하여 대칭 배열인지 판단하고 False가 아닌 True를 인쇄합니다.

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

25. 목록 a = [1,3,5,7,11]이 있는 경우 이를 [11,7,5,3,1]로 변환하고 홀수 자릿수를 얻는 방법 [1 ,5,11]?

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
로그인 후 복사

26. 목록 a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]의 숫자를 작은 것에서 큰 것으로 정렬하세요.

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]
로그인 후 복사

27 목록 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
로그인 후 복사

위 내용은 Python에 포함된 함수를 통해 구현되며, 다음과 같이 계산 프로그램을 직접 작성할 수 있습니다.

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
로그인 후 복사

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
로그인 후 복사

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]
로그인 후 복사

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]
로그인 후 복사

위 내용은 수집할 가치가 있는 30가지 Python 연습 문제(자세한 설명 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿