Python常规题目整理


常用函数

绝对值

abs()

# 计算 -7.5 的绝对值
print(abs(-7.5))

平方根

math.sqrt()

# 计算16的平方根
import math

# 计算 16 的平方根
print(math.sqrt(16))

幂运算

math.pow()

import math

# 求2的3次幂
print(math.pow(2,3))

案例:

国王打算赏赐聪明的阿凡提,阿凡提说,我只要20个格子,第一天放一颗米,第二天放的米是前一天的两倍,放满二十个格子需要多少米?

import math

total = 0
for i in range(20):
    total += math.pow(2,i)

print(total)

向上取整与向下取整

  1. 向下取整:math.floor()

  2. 向上取整:math.ceil()

  3. 四舍五入:round()

import math

# 对5.8分别进行向上取整,向下取整,四舍五入
print(math.ceil(5.8))
print(math.floor(5.8))
print(round(5.8))

大小写转换

  1. 转换为大写:upper()

  2. 转换为小写:lower()

  3. 首字母大写: capitalize()

s = "helloWORLD"
print(s.upper())         # 全大写
print(s.lower())         # 全小写
print(s.capitalize())    # 首字母大写

字符替换

s = "郑屠道:“着人与提辖拿了,送将府里去?” 鲁达道:“再要十斤软骨,也要细细地剁做臊子,不要见些肉在上面。” 郑屠笑道:“却不是特地来消遣我?” 鲁达听了,跳起身来,拿着两包臊子在手,睁着眼,看着郑屠道:“洒家特地来消遣你!” 把两包臊子劈面打将去,却似下了一阵的 “肉雨”。"
new_s = s.replace("鲁达", "鲁智深")  # 替换所有匹配项

print(new_s)

字符分割

s = "你好,再见"
new_s = s.split(',') 

print(new_s)

去除前后空格

s = "  hello  "
new_s = s.strip()  # 去除两端空格

print(new_s)

b站80题

1.求两数之和

num1 = 20
num2 = 14
result = num1 + num2
print(result)

2.求100以内偶数

list1 = []
for i in range(0,101,2):
    list1.append(i)

print(list1)

3.求100以内奇数

list1 = []
for i in range(1,101,2):
    list1.append(i)

print(list1)

4.判断素数

大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数

def prime(n):
    flag = True
    for i in range(2,n):
        if n%i == 0:
            flag = False
            break
    if flag:
        print('是素数')
    else:
        print('不是素数')

a = int(input('请输入一个整数:'))
prime(a)

5.递归

求出5的阶乘

# 非递归
n = 5
sum = 1
for i in range(1,n+1):
    sum *= i

print(sum)

# 递归
def jiecheng(n):
    if n == 1:
        return 1
    else:
        return n * jiecheng(n-1)

print(jiecheng(5))

6.求圆的周长

import math

PI = math.pi
r = float(input('请输入圆的半径:')) 

c = 2*PI*r
print(f'周长为{c}')

7.求圆的面积

import math

PI = math.pi
r = float(input('请输入圆的半径:')) 

c = PI*r*r
print(f'面积为{c}')

8.求直角三角形斜边长

输入两个直角边长,求出三角形斜边的长度

import math
a = float(input('请输入第一个直角边长:')) 
b = float(input('请输入第二个直角边长:')) 
c = math.sqrt(a**2 + b**2)

print(f"三角形斜边长为{c}")

9.比较三个数大小

输入三个数,从小到大输出三个数

a = float(input('请输入第一个数:')) 
b = float(input('请输入第二个数:')) 
c = float(input('请输入第三个数:')) 

list1 = [a,b,c]
list1.sort()
print(f"从小到大的顺序是{list1[0]},{list1[1]},{list1[2]}")

10.找出区间里的素数

输入整数a、b表示一个闭区间,找出该区间里所有素数并放入一个列表中

def prime(n):
    if n == 1:
        return False
    for i in range(2,n):
        if n%i == 0:
            return False
    return True

a = int(input('请输入第一个数:')) 
b = int(input('请输入第二个数:')) 
list_prime = []
for i in range(a,b+1):
    if prime(i):
        list_prime.append(i)

print(list_prime)

11.组合数字

有四个数字,1、2、3、4,能组成多少个互不相同且无重复数字的三位数,依次打印出来

for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i!= j and j!=k and i!=k:
                print(f"{i}{j}{k}")

12.打印乘法口诀表

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{i}*{j}={i*j}",end='\t')
    print()

13.水仙花数

找出所有水仙花数,水仙花数是一个三位数,各位数字的立方和等于该数字本身

for i in range(100,1000):
    if int(str(i)[0])**3 + int(str(i)[1])**3 + int(str(i)[2])**3 == i:
        print(f"{i}是水仙花数")

14.反向输出四位数

输入一个四位整数,反向输出对应四位数

number = input('请输入一个四位整数:')

number = str(number)
number = number[::-1]
number = int(number)

print(number)

15.判断字母

输入字符,判断是否为字母

str = input('请输入字符:')

result = str.isalpha()

if result:
    print(f"{str}是字母")
else:
    print(f"{str}不是字母")

16.判断三角形

输入三组数据,判断能够构成三角形的三条边(任意两边之和大于第三边)

a = float(input('请输入第一条边:')) 
b = float(input('请输入第二条边:')) 
c = float(input('请输入第三条边:')) 

if a<0 or b<0 or c<0:
    print('输入不合法')
elif a+b>c and a+c>b and b+c>a:
    print('是三角形')
else:
    print('不是三角形')

17.完数

一个数如恰好等于除了它以外的因子之和,这个数就称为“完数”。编程序找出1000以内的所有完数,(6是一个”完数”,它的因子是1,2,3)。

(因子不可重复)

for i in range(1,1000):
    sum = 0
    for j in range(1,i):
        if i%j == 0:
            sum += j
    if sum == i:
        print(f'{i}是完数')

18.找质数因子

输入一个正整数,输出它的所有质数因子,(如180的质数因子为2、2、3、3、5)。

(质数因子可重复)

a = int(input('请输入一个正整数:'))
list = []
k = 2

while a>=k:
    if a%k == 0:
        a/=k
        list.append(k)
    else:
        k += 1

print(list)

19.海伦公式求三角形面积

import math

a = float(input('请输入第一条边长:'))
b = float(input('请输入第二条边长:'))
c = float(input('请输入第三条边长:'))

p = (a+b+c)/2

s = math.sqrt(p*(p-a)*(p-b)*(p-c))

print(f'三角形的面积为{s}')

20.判断某年某天

输入某年某月某日(以空格间隔),判断这一天是这一年的第几天。

import datetime

year,month,day = map(int,input('请输入日期,以空格间隔:').split(' '))

yuandan = datetime.datetime(year,1,1)
now = datetime.datetime(year,month,day)

days = (now - yuandan).days + 1

print(f"{year}{month}{day}日是这一年的第{days}天")

21.斐波那契数列

又称兔子数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、…编写程序。找出第n个项。

def fib(n):
    if n==1 or n==2:
        return 1
    else:
        return fib(n-1) + fib(n-2)

print(fib(7))

22.复制列表

将一个列表的数据复制到另一个列表

list1 = [1,2,3]

list2 = list1.copy()
list1[1] = 6

print(list2)

23.暂停后输出

暂停一段时间后输出

import time

time.sleep(1)
print('hello')

24.成绩if语句

利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

score=int(input('请输入成绩:'))
if score >= 90:
    print('A')
elif 60 <= score:
    print('B')
else:
    print('c')

25.统计字符

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

str=input('请输入一行字符:')

yingwen = 0
space = 0
number = 0
other = 0

for i in str:
    if i.isalpha():
        yingwen += 1
    elif i.isspace():
        space += 1
    elif i.isdigit():
        number += 1
    else:
        other += 1

print(f'英文字符{yingwen}个,空格有{space}个,数字有{number}个,其他字符有{other}个')

26.落体反弹问题

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

h = 100
s = 0

for i in range(1,11):
    if i == 1:
        s += h
    else:
        s += h*2
    h/=2

print(s,h)

27.猴子吃桃问题

猴子吃桃问题:猴子第一天摘下若干个桃子当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

n = 1
for i in range(9):
    n = (n+1)*2

print(n)

# 递归
def func(n):
    if n == 10:
        return 1
    return func(n+1)*2+1

print(func(1))

28.求指定数列之和

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。

a = 2
b = 1
sum = 0

for _ in range(20):
    sum += a/b
    a,b = a+b,a

print(sum)

29.求各个阶乘的和

求1+2!+3!+..+201的和。

def jiecheng(n):
    sum = 1
    for i in range(1,n+1):
        sum *= i
    return sum

sum = 0
for i in range(1,21):
    sum += jiecheng(i)
print(sum)

30.年龄急转弯

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

def age(n):
    if n == 1:
        return 10
    else:
        return age(n-1) + 2

print(age(5))

31.判断回文数

输入一个数,判断它是不是回文数。12321是回文数,个位与万位相同,十位与千位相同。

n = input('请输入一个数:')

if n == n[::-1]:
    print('是回文数')
else:
    print('不是回文数')

33.相反顺序输出列表

list1 = [1,2,3]

# 方法1
list1.reverse()
print(list1)

# 方法2
list1 = list1[::-1]
print(list1)

34.对10个数进行排序

list1 = [1,4,2]

list1.sort()

print(list1)

36.有序列表添加数据

有一个已经排好序的列表。现输入一个数,要求按原来的规律将它插入数组中。

list1 = [1,4,8]

n = int(input('请输入一个数:'))
list1.append(n)
list1.sort()

print(list1)

37.变量值交换

给定两个变量,交换它们的值

a = 5
b = 10

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

38.产生随机数

随机产生1,4,7,10中的一个数

import random

n = random.randrange(1,11,3)

print(n)

39.lambda表达式

使用lambda创建匿名函数

a =lambda a,b:a*b
print(a(3,4))

40.温度转换

输入摄氏度,将其转为华氏度。输入华氏度,将其转为摄氏度。

华氏温度与摄氏温度转换公式为:华氏温度=摄氏温度×1.8+32。

a=int(input('摄氏度请按1,华氏度情按2'))
if a==1:
    b=float(input('请输入摄氏度:'))
    result=b*1.8+32
    print(f'你输入的是摄氏度{b},转换为华氏度是{result}。')
if a == 2:
    b=float(input('请输入华氏度:'))
    result=(b-32)/1.8
    print(f'你输入的是华氏度{b},转换为摄氏度是{result}。')

45.计算字符长度

a = input('请输入一个字符:')
#1:
print(len(a))
#2:
length = 0
for i in a:
    length += 1

47.查找字符串

str1 = 'hello'
print(str1.find('e'))

49.第一个只出现一次的字符

在一个字符串中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回-1(需要区分大小写).(从0开始计数)

str1 = 'Hello Word'
weizhi = -1
zd = dict()

for i in str1:
    if i in zd:
        zd[i] += 1
    else:
        zd[i] = 1

for i in range(len(str1)):
    if zd[str1[i]] == 1:
        weizhi = i
        break

print(weizhi)

50.最大公因数

求两个数的最大公因数

def gongyin(a,b):
    n = min(a,b)
    while a%n != 0 or b%n !=0:
        n-=1
    return n

print(gongyin(12,18))

51.数组里没有出现过的数字

给定一个长度为N的正整数数组nums,其中nums的值都在区间[1,n]中,请你找出nums数组在[1,n]范围里面没有出现过的数字,并将它们放在数组里面返回(在数组里面的顺序可以不唯一)

def fun1(list1):
    n = len(list1)
    list_result = []
    for i in range(1,n+1):
        if i in list1:
            continue
        else:
            list_result.append(i)
    return list_result

print(fun1([1,5,6,7,8]))

52.替换空格

将字符串空格替换为%

str1 = ' H JLK D'

str1 = str1.replace(' ','%')
print(str1)

53.快乐数

给定一个正整数,请你判断这个数是不是快乐数。快乐数:对于一个正整数,每次把他替换为他每个位置上的数字的平方和,如果这个数能变为1则是快乐数,如果不可能变成1则不是快乐数。例如:正整数19转换过程为1*1+9*9=82,8*8+2*2=68,6*6+8*8=100,1*1+0*0+0*0=1,所以他是快乐数。

# 计算每一位的平方之和
def pingfang(n):
    sum = 0
    while n > 0:
        sum += (n%10)**2
        n//=10
    return sum

def happyNumber(n):
    while n > 9:
        n = pingfang(n)
    if n == 1:
        return True
    else:
        return False
    
print(happyNumber(19))

54.立方根

给定一个正整数n,请你算出这个数开立方根的结果。结果向下取整。

import math

def fun1(n):
    n = math.pow(n,1/3)
    return math.floor(n)

print(fun1(9))

55.最长公共前缀

给你一个大小为n的字符串数组strs,其中包含n个字符串,编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。输入:

[“abca”,”abc”,”abca”,”abc”,”abcc”],输出:”abc”

def min_str(str_list):

    if not str_list:
        return ''
    
    # 最短字符串
    min_len = min(len(i) for i in str_list) 
    
    for i in range(min_len):
        current = str_list[0][i]
        for s in str_list[1:]:
            if s[i] != current:
                return str_list[0][:i]
    return str_list[0][:min_str]    

print(min_str(["flower","flow","flight"]))

56.字符串变形

首先这个字符串中包含着一些空格,就像”Hello Wold”一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如”Hello World”变形后就变成了”wORLD hELLO

str1 = 'Hello World'

str_list = str1.split()
str_list.reverse()

new_str = ' '.join(str_list)
new_str = new_str.swapcase()

print(new_str)

58.三个数的最大乘积

给定一个长度为n的无序数组,包含正数、负数和0,请从中找出3个数,使得乘积最大,返回这个乘积。

def func(list):
    list.sort()
    return max(list[-1]*list[-2]*list[-3],list[-1]*list[0]*list[1])

print(func([1,2,3,4,5]))
print(func([1,2,-3,-4,5]))

59.十进制转二进制

a = 10
a = bin(a)
print(a)
print(type(a))

60.判断字符是否唯一

给定一个字符串,判断其中每个字符是否全都不同

def func(str):
    return len(str) == len(set(str))

print(func('456as1fg132sddf'))
print(func('12345'))

61.IP地址转化

IP地址是一个用.隔开的四段数字,请你把P地址转换成一个整数。(IPv4)

例如,114.55.207.244的进制表示是01110010001101111100111111110100,其十进制表示是1916260340。

def func(str):
    strs = str.split('.')
    res = ''
    for i in strs:
        res += '{:08b}'.format(int(i))

    return int(res,2)


print(func('121.123.555.123'))

62.二分查找

请实现无重复数字的升序数组的一分查找给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标(下标从0开始),否则返回-1

注意:二分查找必须是已经排好序的

def func(nums,target):
    left = 0
    right = len(nums) - 1
    while left <= right:
        middle = (left + right)//2
        if nums[middle] == target:
            return middle
        # 在左边
        elif nums[middle] > target:
            right = middle - 1
        # 在右边
        else:
            left = middle + 1
    return -1


print(func([1,3,5,7,9],7))

63.二分查看(有重复数字)

请实现有重复数字的升序数组的一分查找给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标(下标从0开始),否则返回-1

def func(nums,target):
    left = 0
    right = len(nums) - 1
    result = -1
    while left <= right:
        middle = (left + right)//2
        if nums[middle] == target:
            result = middle
            right = middle - 1
        # 在左边
        elif nums[middle] > target:
            right = middle - 1
        # 在右边
        else:
            left = middle + 1
    return result


print(func([1,3,3,7,9],3))

64.移动0

给定一个数组,请你实现将所有0移动到数组末尾并且不改变其他数字的相对顺序。

def func(nums):
    for i in nums.copy():
        if i == 0:
            nums.remove(i)
            nums.append(0)
    return nums

print(func([0,0,1]))

65.旋转字符串

字符串旋转:给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(可以为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。

def func(a,b):
    if len(a) != len(b):
        return False
    a_2 = a*2
    return b in a_2

print(func('hello','llohe'))

66.判断子序列

给定两个字符串S和T,判断S是否是T的子序列。即是否可以从T删除一些字符转换成S。

def func(s,t):
    x = y = 0
    while x < len(s) and y < len(t):
        if s[x] == t[y]:
            x+=1
        y+=1
    if x == len(s):
        return True
    else:
        return False


print(func('hlo','hello'))

67.数组中重复的数字

在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1。

def func(nums):
    for i in nums:
        if nums.count(i) >= 2:
            return i
    return -1


print(func([1,2,3,3]))
print(func([1,2,3]))

68.相邻字符去重

给定一个仅由英文小写字母组成的字符串,将相邻且相同的两个字符删掉构成新的字符串,重复删除操作直至生成不符合删除条件的字符串并 返回。 输入:’acbbc’ 输出:a

def func(nums):
    result = ''
    for i in nums:
        if result == '':
            result += i
        elif result[-1] == i:
            result = result[:-1]
        else:
            result += i
    return result        

print(func('accvvfggfgggz'))

69.2的幂

给定一个非负整数n,请问是否存在一个x满 足2^x=n,如果有,则返回true,否则返回 false

def func(n):
    return n>0 and n&(n-1)==0

print(func(32))

71.冒泡排序

def func(nums):
    for i in range(len(nums)-1):
        for j in range(len(nums) - 1 - i):
            if nums[j] > nums[j+1]:
                nums[j],nums[j+1] = nums[j+1],nums[j]
    return nums
print(func([1,4,56,3,7]))

72.选择排序

def func(nums):
    for i in range(len(nums) - 1):
        min_index = i
        for j in range(i,len(nums)):
            if nums[min_index] > nums[j]:
                min_index = j
        nums[i],nums[min_index] = nums[min_index],nums[i]
    
    return nums
print(func([1,4,56,3,7]))

73.插入排序

def func(nums):
    # 默认第一个是已经排序好的
    for i in range(1,len(nums)):
        # 待插入元素
        current = nums[i]

        # 待插入元素的前一个元素索引
        j = i - 1

        # 待插入元素和前面的元素依次比较,如果比前面的小,则交换位置
        while j>=0 and nums[j]>current:
            nums[j],nums[j+1] = nums[j+1],nums[j]
            j-=1

    return nums
print(func([1,4,56,3,7]))

74.删除字符

给定两个字符串str和sub,从str中完全删除在sub中存在的字符。

def func(str,sub):
    res = ''
    for i in str:
        if i not in sub:
            res += i
    return res

print(func('hello','ho'))

循环专题

求1-100的所有数的和

sum = 0 # 累加和
for i in range(1,101):
    sum += i
    # 等价为
    # sum = sum + i
    
print('1-100的所有整数之和为:',sum)

输出 1-100之间的所有偶数

# 方法1
for i in range(1,101,2):
    print(i)

# 方法2
for i in range(1,101):
    # 如果i可以被2整除、则打印
    if i%2 == 0:
        print(i)

求1-2+3-4+5 … 99的所有数的和

sum = 0 # 累加和
for i in range(1,100):
    # 如果i是奇数、则相加
    if i%2 == 1:
        sum+=i  # 完整形式:sum = sum + i
    # 否则i就是偶数、则相减
    else:
        sum-=i  # sum = sum - i
print(sum)

打印1-100之间除了含7和7的倍数以外的数字

for i in range(1,101):
    # 如果不是7的倍数、则打印
    if i%7 != 0:
        print(i,end=' ')

编写程序用户登录程序且仅有三次机会

name = "admin"
password = "123456"
for i in range(3):
    input_name = input("请输入用户名:")
    input_password = input("请输入用户密码")
    if input_name == name and input_password == password:
        print("登录成功")
        break
    else:
        print("登录失败,请重新输入!")       
else:        
    print("您已经失败三次,无法登录了!")

求阶乘s=10! (即s=123456789*10)的结果

sum = 1  # 累乘积
for i in range(1,11):
    sum*=i
print('10!为:',sum)

棋盘放麦粒问题

用米粒填充国际象棋盘:有个很古老的传说,那时候象棋刚刚发明出来,阿拉伯的一个国王一下就迷上了,觉得应该重奖发明这个游戏的人,结果发明者来了,他让人家提要求,人家说棋盘上第一个格放1粒麦子,第二个格2粒,第三格4粒,第四格8粒,这样类推下去,最后一个格也放满(总共有64格),最后把这些麦粒奖给他,国王欣然同意,觉得这个人很厚道,不漫天要价,结果按照这个规律装麦粒的时候才发现,原来全国粮仓里的麦子也不够用。这就是典型的数量级上的错误。

sum = 0  # 累加和
wheat_number = 1 # 麦粒数量、第一次是一颗
# 循环64次即可
for i in range(64):
    sum+=wheat_number
    wheat_number*=2  # 每次麦粒增多为两倍
print(f'一共装了{sum}粒麦子')

百钱买百鸡

百钱买百鸡,现有100文钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只,要求:公鸡,母鸡,小鸡都要有,把100文钱买100只鸡,买的鸡是整数。多少只公鸡,多少只母鸡多少只小鸡?(穷举法应用)

print('公鸡\t母鸡\t小鸡')
for gj_num in range(1,21):
    for mj_num in range(1,34):
        for xj_num in range(1,301):
            if gj_num*5 + mj_num*3 + xj_num*1/3 == 100:
                print(gj_num,'\t',mj_num,'\t',xj_num)

换钞票问题

将一张100元钞票兑换成面值分别为20元、10元和5元的钞票,要求每种至少有一张,共有多少种不同的换法并输出所有可能的换法。

print('20元\t10元\t5元')
for y20_num in range(1,6):
    for y10_num in range(1,11):
        for y5_num in range(1,21):
            if y20_num*20+y10_num*10+y5_num*5==100:
                print(y20_num,'\t',y10_num,'\t',y5_num)

找出10~100之间能被6、9除,余数是3 的所有整数

for dm_num in range(0,34):
    for zm_num in range(0,51):
        for xm_num in range(0,201):
            if dm_num+zm_num+xm_num==100 and dm_num*3 + zm_num*2 + xm_num*0.5 ==100:
                print(dm_num,zm_num,xm_num)

计算水仙花数

输出100~999之间的“水仙花数”。所谓“水仙花数”,是指该数等于各位数字的立方和,如407=4**3+0**3+7**3

# 遍历100-999
for i in range(100,1000):
    # 将i转换成字符串,通过字符串的索引取出个位,十位,百位
    # 然后再转为回整数,方便后面的运算
    i1 = int(str(i)[0])
    i2 = int(str(i)[1])
    i3 = int(str(i)[2])
    if i1**3+i2**3+i3**3==i:
        print(i)

字符串专题

输⼊⼀个字符串,将字符串中所有的数字字符取出来产⽣⼀个新的字符串,例如:输⼊’abc1shj23kls99+2kkk’ 输出:’123992’

str1 = 'abc1shj23kls99+2kkk'
str2 = ''

for i in str1:
    if '0'<=i<='9':
        str2 += i

print(str2)

输⼊⼀个字符串,将字符串中所有的⼩写字母变成对应的⼤写字母输出 (⽤upper⽅法和⾃⼰写算法两种⽅式实现),例如: 输⼊’a2h2klm12+’ 输出 ‘A2H2KLM12+’

for i in str1:
    if '0'<=i<='9':
        str2 += i

print(str2)

输⼊⼀个字符串,将字符串中所有的⼩写字母变成对应的⼤写字母输出 (⽤upper⽅法和⾃⼰写算法两种⽅式实现),例如: 输⼊’a2h2klm12+’ 输出 ‘A2H2KLM12+’

str1 = 'a2h2klm12+'
print(str1.upper())

从键盘上输入两个字符串,把这两个字符串中的公共字符输出。

str1="asdjhkbvfsa41561"
str2="dagbshfbjh2289bgf"
s_public = ''

for i in str1:
    if i in str2:
        s_public += i

print(s_public)

从键盘上输入两个字符串,要求用空格覆盖第一个字符串中含有的第二个字符串中的所有字符,然后将结果输出(要求输出宽度为第一个字符串长度的两倍,不足的以”-“填充,居中对齐)

str1="asdjhkbvfsa41561"
str2="dagbshfbjh2289bgf"

for i in str1:
    if i in str2:
        str1 = str1.replace(i,' ')

print(str1)

输⼊⼀个字符串,统计字符串中⾮数字字母的字符的个数,例如: 输⼊’anc2+93-sj胡说’ 输出:4 输⼊’===’ 输出:3

str1 = "anc28*9$3$sj"
count = 0
for i in str1:
    if i.isalnum() == False:
        count += 1

print(count)

输⼊字符串,将字符串的开头和结尾变成’+’,产⽣⼀个新的字符串,例如: 输⼊字符串’abc123’, 输出’+bc12+’

str1 = 'abc123'

print('+'+str1[1:-1]+'+')

请编写⼀个程序,请将字符串中所有字母全部向后移⼀位,最后⼀个字母放在字符串的开头,最后将新的字符串输出

str1 = "ABCDEFG"

print(str1[-1]+str1[:-1])

根据下述要求,编写⼀个程序:⽤户输⼊⼀个字符串,将下标为偶数的字符提出来合并成⼀个新的字符串A,再将下标为奇数的字符提出来合并成⼀个新的字符串B,再将字符串A和B连接起来并输出。

str1 = "A1B2C3D4E5"
#       0123456789

print(str1[::2])
print(str1[1::2])
print(str1[::2] + str1[1::2])

判断用户名是否合法,从键盘上输入一个用户名,要求用户名需以“百”开头而且只能由数字或者字母(含汉字)组成,用户名的长度为6-15位(包括6和15)

name = "百痴456124"

if name.startswith("百") == True and name.isalnum() == True and 6<=len(name)<=15:
    print("合法")
else:
    print("不合法")

从键盘输入 1 个正整数,把这个整数的各位数字重新组合,形成一个位数不变的最大数和最小数,并计算最大数与最小数的差。x=int(input(‘请输入一个任意正整数’))

str1 = "2286413"

min = ''.join(sorted(str1))
print(min)

max = ''.join(sorted(str1,reverse=True))
print(max)

print(int(max) - int(min))

列表专题

产生一个列表,其中有 40 个元素,每个元素是 50 到 100 的一个随机整数。如果这个列表中的数据代表着某个班级 40 人的分数,请计算成绩低于平均分的学生人数对上面的列表元素从大到小排序并输出

import random

scope_list = []
for i in range(40):
    scope_list.append(random.randint(50,100))

print("40个人的分数是:",scope_list)

ave_scope = sum(scope_list)/len(scope_list)
print(ave_scope)

less_list = []
for i in scope_list:
    if i < ave_scope:
        less_list.append(i)
print(len(less_list))

less_list.sort(reverse=True)
print(less_list)

给定一个列表,求最大值(不能使用系统求最值函数),求最小值,求平均值、求和ls=[10,20,25,45,50,55,13,23]

ls=[10,20,25,45,50,55,13,23]

max = ls[0]
for i in ls:
    if i > max:
        max = i
print(max)

min = ls[0]
for i in ls:
    if i < min:
        min = i
print(min)

print(sum(ls)/len(ls))
print(len(ls))

根据用于指定月份,打印该月份所属的季节。提示: 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

month = input('Month:')

if month in ['3','4','5']:
    print('春天')
elif month in ['6','7','8']:
    print('夏天')
elif month in ['9','10','11']:
    print('秋天')
elif month in ['12','1','2']:
    print('秋天')
else:
    print('别乱输行吗?')

输入某年某月某日(yyyy-MM-dd),判断这一天是这一年的第几天?cal = input(‘输入日期 yyyy-mm-dd:’)

cal = "2000-12-25"
arr = [31,28,31,30,31,30,31,31,30,31,30,31]
#       0  1  2  3  4  5  6  7  8  9  10 11

cal_list = cal.split('-')
month = int(cal_list[1])
day = int(cal_list[2])

count = 0
for i in range(month-1):
    count += arr[i]
    print(arr[i])

count += day
print(count)

将list中的重复数据去重,至少使用两种方案,方法一用set消除重复元素

ls =[10,20,25,20,60,65,25]
print(list(set(ls)))

输入一个五位正整数,判断是否是回文数。例如:12321是回文数。方法一:(利用def定义函数,数字分离各位数进行判断)

number = '12345'

if number[::-1] == number:
    print(number,'是一个回文数')
else:
    print(number,'不是一个回文数')

如果两个素数之差为2,这样的两个素数就叫作”孪生数”,找出100以内的所有”孪生数”

# 判断一个数是不是素数
def isSuShu(number):
    flag = True # 一开始假定是一个素数
    for i in range(2,number):
        if number % i == 0:
            flag = False
            break
    return flag

#判断2-100之间的素数
sushu_list = []
for i in range(2,101):
    if isSuShu(i) == True:
        sushu_list.append(i)
print(sushu_list)

# 判断1-100之间的孪生数
for i in range(2,101):
    if isSuShu(i) and isSuShu(i+2):
        print(i,i+2)

文章作者: 打工码农
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 打工码农 !
  目录