19. Python实战(四)

113 阅读3分钟

一, 准备基础

学完python学习系列-培训课的函数之后可做

二, 题目

问题1:请用户输入三个不同的整数,输入时用逗号隔开,判断这三个整数中的最大值(不使用max函数)

问题2:请用户输入一个正整数n,计算并输出该整数[各位整数之积]与[各位整数之和]的差

问题3:请用户输入一个非负整数num,反复将各位上的数字相加,直到结果为一位数,则输出

问题4:定义一个函数,实现移除字符串中的指定索引位置(可指定多个索引)的字符,返回新的字符串

三,解析及源代码

问题1:

请用户输入三个不同的整数,输入时用逗号隔开,判断这三个整数中的最大值

分析:

大概实现流程:先将输入的数分割开,并转化成列表,然后按升序排序,输出索引为-1的值即可

代码实现:

num = input("请输入三个不同的整数,输入时用逗号隔开")
lst0 = num.split(',')  #分割开

#分割后保存的都是字符串,要想办法转变成数字类型
lst1 = []
for i in lst0:
    lst1.append(int(i))

lst1.sort() #排序
print(lst1[-1])

问题2:

请用户输入一个正整数n,计算并输出该整数[各位整数之积]与[各位整数之和]的差 分析:

大概实现流程:使用for循环遍历输入字符串,通过int函数和+=以及*=操作实现计算积以及和,再计算两者之差

代码实现:

num = input("请输入一个正整数")

sum0 = 0
ji0 = 1

for i in num:
    sum0 += int(i)
    ji0 *= int(i)
    
print(ji0 - sum0)

问题3:

请用户输入一个非负整数num,反复将各位上的数字相加,直到结果为一位数,则输出

分析:

1,大概实现流程:使用for循环遍历输入字符串,通过int函数和+=以及*操作实现计算和,若和小于10,则输出,若大于等于10,则继续执行计算和的操作

代码实现:

num = input("请输入一个非负整数")  
sum1 = 0  
  
for i in num:  
    sum1 += int(i)  
  
while sum1 >= 10:  
    sum3 = 0  
    sum2 = str(sum1)  
    for i in sum2:  
        sum3 += int(i)  
    sum1 = sum3  
  
else:  
    print(sum1)

###函数做法
num = input("请输入一个非负整数")
sum0 = num

  
def sum_func(a):
    a = str(a)
    sum1 = 0
    for i in a:
        sum1 += int(i)
        return sum1

sum2 = sum_func(sum0)

while sum2 >= 10:
    sum2 = sum_dunc(sum2)
else:
    print(sum2)

问题4:

定义一个函数,实现移除字符串中的指定索引位置(可指定多个索引)的字符,返回新的字符串

分析:

因为字符串是不可变的,基本思路是先把字符串变成可变的列表,在列表中移除指定索引,再将剩余的拼接成新的字符串返回。可用*arg接收指定索引

代码实现:

def str_del(str_old, *index):  
    indices = range(len(str_old))  
    str_new = ''  
  
    for j in indices:  
  
        if j not in index:  
            str_new += str_old[j]  
  
    print(f'新的字符为:{str_new}')  
  
str_del('abcd',2,3)

###如果借用了函数enumerate会更快
###enumerate作用:返回一个可迭代对象,有元组组成,元组里面第一个是索引,第二个是具体元素
###print(list(enumerate('str_old')))输出为[(0, 's'), (1, 't'), (2, 'r'), (3, '_'), (4, 'o'), (5, 'l'), (6, 'd')]

def str_del(str_old, *index):  
    str_new = ''  
    for i,j in enumerate(str_old):  
        if i not in index:
            str_new += j

    print(f'新的字符为:{str_new}')  
  
str_del('abcd',2,3)