208
社区成员




目录
二、整数排序。输入3个整数,把这3个数由小到大输出。要求通过列表来存储数据。
五、编写函数,判断用户输入的整数是否为回文数。回文数是一个正向和逆向都相同的整数,如123454321、9889。
六、编写函数,判断用户输入的3个数字是否能构成三角形的三条边。
七、兔子数列又称斐波那契数列、黄金分割数列,它由数学家列昂纳多·斐波那契以兔子繁殖的例子引出,故此得名。
1. 定义存储输入与结果的变量
n = int(input("请输入n:")) # 存储输入的值(注意输入的值类型为str,所以转为int存储) s = 0 # 初始化结果
2. 可以看出1 ~ n之和是需要重复计算的,所以用到for循环
for i in range(1, n + 1): # i会遍历[1,n+1),注意range函数左闭右开的性质,所以右边的n需要+1 s += i # s存储每次循环加一个i的值 print(s, "\n") # 最后输出和s
def zsqh1(): ''' :输入:一个整数n :输出: 1 ~ n之和 :return:无 ''' print("输出1 ~ n之和") n = int(input("请输入n:")) s = 0 for i in range(1, n + 1): s = s + i print(s, "\n")
运行结果
![]()
def的作用是可以让代码模块化,方便查看与调用,用法如下
def 函数名(参数): # 注意后面的冒号一定要写,无参函数无需填参数 函数体 return 值 # 返回值,无返回值可不写
需要调用时方法如下
函数名(参数) # 无参函数无需填参数
1.定义一个空列表
a = [] #初始化列表
2.存储三个数字
for i in range(3): # 循环三次 a.append(int(input("请输入第%d个数:" % (i + 1)))) #提示输入的是第几个数字
range(3)等价于range(0, 3),当range函数只有一个参数时默认从0开始
3.列表排序需要用到sort()函数
a.sort() # 默认升序,也就是从小到大,降序写法a.sort(reverse=True) print(a)
这里需要注意的是如果直接写print(a.sort())的话结果是None
def zspx2(): ''' :输入:三个整数 :输出: 从小到大 :return:无 ''' a = [] print("输入三个数后从小到大排序") for i in range(3): a.append(int(input("请输入第%d个数:" % (i + 1)))) a.sort() print(a, "\n")
运行结果
1.定义存储和的变量
s = 0 # 初始化
2.确定数值范围
for i in range(1, 101):
3.判断为偶数时加上
if i % 2 == 0: # 当i除2余数为0时执行下面的代码 s += i print(s)
def osh3(): ''' :输出:1-100偶数和 :return: ''' s = 0 for i in range(1, 101): if i % 2 == 0: s += i print("1-100偶数和:%d" % (s), "\n")
运行结果
1.如果只追求答案一样代码如下
def cj4(): ''' :输出:20*19*...*3的积 :return: 无 ''' s = 1 for i in range(3, 21): s *= i print("20*19*...*3的积:%d" %(s), "\n")
2.严格按照题意来倒序的话range只需要小改一下
for i in range(20, 2, -1): # 从20开始每次循环-1,最后一次循环时i=3 s *= i
range(开始, 结束, 每次循环的变化)
每次循环的变化不写的话默认为1
def cj4(): ''' :输出:20*19*...*3的积 :return: 无 ''' s = 1 for i in range(20, 2, -1): s *= i print("20*19*...*3的积:%d" %(s), "\n")
运行结果
1.定义输入和颠倒后的结果变量
a = input("请输入一个整数:") b = a[::-1] # 步长为-1倒序赋值给b
str[开始:结束:步长]
开始和结束为空时默认为头和尾
步长为正数时正序截取,反之倒序
2.判断正向和逆向是否相同
if a == b: # 相等执行该分之 print("该数是回文数", "\n") else: # 不相等执行该分之 print("该数不是是回文数", "\n")
def hws5(): ''' :输入:一个整数 :输出:是否为回文数 :return:无 ''' print("判断是否为回文数") a = input("请输入一个整数:") b = a[::-1] if a == b: print("该数是回文数", "\n") else: print("该数不是是回文数", "\n")
运行结果
1.定义一个空列表
a = []
2.存储三次输入的值
for i in range(3): a.append(int(input("请输入第%d个边:" % (i + 1))))
3.判断条件是否符合
amax = max(a) # 获取a当中最大的值 a.remove(amax) # 删除一个最大值 if a[0] + a[1] > amax: # 剩下的两个值加起来是否大于最大值,是则执行该分支 print("可构成三角形", "\n") else: # 否则执行该分支 print("不可构成三角形", "\n")
def sjx6(): ''' :输入:三个边长 :输出:是否可构成三角形 :return: 无 ''' a = [] print("判断三个边是否可构成三角形") for i in range(3): a.append(int(input("请输入第%d个边:" % (i + 1)))) amax = max(a) a.remove(amax) if a[0] + a[1] > amax: print("可构成三角形", "\n") else: print("不可构成三角形", "\n")
运行结果
1.首先要理解兔子数列是什么
如下图所示7个月的数量
(图片来自网络)
根据所得到的规律可以发现从3月开始数量就有一定的规律,3月的数量等于1月和2月的数量总和,4月的数量等于2月和3月的总和,由此后续推理如下
(图片来自网络)
2.定义三个初始变量
n = 12 # 十二月 a = 1 # 第一个月 b = 1 # 第二个月
3.循环计算到12月
for i in range(3, n + 1): # i为月份,规律从3月开始所以循环也从3开始 c = a + b # c代表当前月的兔子数量 b = a # 上上个月兔子数量(b)更新为上个月兔子数量(a) a = c # 上个月兔子数量(a)更新为当月兔子数量(c) print("一年后有%d只兔子" % (c), "\n")
def tzsl7(): ''' :输出:一年后兔子数量 :return:无 ''' n = 12 a = 1 b = 1 for i in range(3, n + 1): c = a + b b = a a = c print("一年后有%d只兔子" % (c), "\n")
运行结果