(1)编写程序,输入任意大的自然数,输出各位数字之和。
我们可以将输入的自然数看做数字的字符串,再通过for循环将每一位数字转化为整形再相加
num = input("请输入一个自然数: ")
sum = 0
for i in num:
sum += int(i)
print("各位数字之和为:", sum)
该程序能够正确算出任意大的自然数之和,当然我们还有更快速更便捷的算法
num = input('请输入一个自然数:')
print(sum(map(int, num)))
在编程中,map函数是一个非常常用的内置函数,它能够对给定序列(如列表、元组等)中的每个元素应用一个指定的函数,并返回一个包含应用结果的新列表。该程序中map函数将num这个自然数字符串中的每一位转化为整型再通过sum函数相加。
(2)编写程序,输入两个集合setA和setB,分别输出它们的交集、并集和差集setA-setB。
(3)编写程序,输入一个自然数,输出它的二进制、八进制、十六进制表示形式。
python中内置函数bin,oct,hex分别可以把十进制转化成二进制,八进制和十六进制。
(4)编写程序,输入一个包含若干整数的列表,输出一个新列表,要求新列表中只包含原列表中的偶数。
numbers_input = input("请输入一系列数字,用空格分隔:")
numbers = [int(num) for num in numbers_input.split()]
even_numbers = []
for num in numbers:
if num % 2 == 0:
even_numbers.append(num)
print("偶数列表:", even_numbers)
该函数将输入的一系列数字通过空格符分开形成numbers列表,在通过for循环判断偶数输入偶数列表even_numbers中。
当然我们有更便捷的程序段
lst = input('请输入一个包含若干整数的列表:')
lst = eval(lst)
print(list(filter(lambda x: x%2==0, lst)))
函数运行结果如上。该函数的运行原理如下:
- 用户输入的字符串通过
eval
函数被转换成Python列表。 - 使用
filter
函数和lambda
表达式来检查列表中的每个元素是否为偶数(即x % 2 == 0
)。 filter
函数返回一个迭代器,包含所有偶数元素。- 使用
list
函数将迭代器转换成列表。 - 打印出包含偶数的新列表。
(5)编写程序,输入两个分别包含若干整数的列表lstA和lstB,输出一个字典,要求使用列表lstA中的元素作为键,列表lstB中的元素作为值,并且最终字典中的元素数量取决于lstA和lstB中元素最少的列表的数量。
(6)编写程序,输入一个包含若干整数的列表,输出新列表,要求新列表中的所有元素来自于输入的列表,并且降序排列。
lst = input('请输入一个包含若干整数的列表:')
lst = eval(lst)
sortedlist=sorted(lst,reverse=True)
print(sortedlist)
reverse
: 布尔值,默认为 False
。如果设置为 True
,则列表元素将按照降序排列。
运行结果如下:
(7)编写程序,输入一个包含若干数的列表,输出列表中所有整数连乘的结果。
lst=eval(input('请输入一个包含若干整数的列表:'))
sum=1
for i in lst:
sum*=int(i)
print(sum)
运行结果如下:
(8)编写程序,输入两个各包含2个整数的列表,分别表示城市中两个地点的坐标,输出两点之间的曼哈顿距离。
曼哈顿距离,也称为城市街区距离,是指在坐标系中,两点在各个坐标轴方向上的绝对轴距总和。对于两个点 A(x1,y1)A(x1,y1) 和 B(x2,y2)B(x2,y2),曼哈顿距离可以表示为:d(A,B)=∣x1−x2∣+∣y1−y2∣
lstA = eval(input('请输入包含2个整数的列表lstA:'))
lstB = eval(input('请输入包含2个整数的列表lstB:'))
print(sum(map(lambda i,j:abs(i-j), lstA, lstB)))
运行结果如下:
(9)编写程序,输入包含若干集合的列表,输出这些集合的并集。要求使用reduce()函数和lambda表达式完成。
from functools import reduce
lstSets = eval(input('请输入包含若干集合的列表:'))
print(reduce(lambda x,y:x|y, lstSets))
(10)编写程序,输入等比数列的首项、公比(不等于1且小于36的正整数)和一个自然数n,输出这个数列前n项的和。关键步骤要求使用内置函数int()。
a1 = int(input("请输入等比数列的首项(整数): "))
while True:
q = int(input("请输入等比数列的公比(小于36的正整数且不等于1): "))
if 1 < q < 36:
break
print("公比不符合要求,请重新输入。")
n = int(input("请输入自然数n(数列的项数): "))
sum = a1 * (1 - q**n) // (1 - q)
print(f"等比数列前{n}项的和为: {sum}")
运行结果如下:
(11)编写程序,输入一个字符串,输出其中出现次数最多的字符及其出现的次数。要求使用字典。
input_str = input("请输入一个字符串: ")
char_count = {}
for char in input_str:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
max_char = ''
max_count = 0
for char, count in char_count.items():
if count > max_count:
max_char = char
max_count = count
print(f"出现次数最多的字符是 '{max_char}',出现了 {max_count} 次。")
运行结果如下: