一, 准备基础
学完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)