Python焚诀之函数
Python焚诀之函数

题目1:简单问候函数
编写一个函数 say_hello(name),接收一个名字参数,返回 "你好,{name}!" 格式的字符串。
要求:
- 定义函数,带一个参数
- 使用 return 返回结果
- 调用函数并打印输出
运行示例:
请输入你的名字:李四
你好,李四!
# 1
def say_hello(name):
return f'你好,{name}!'
name = input('请输入你的名字:')
print(say_hello(name))
题目2:两数之和
编写一个函数 add(a, b),接收两个数字参数,返回它们的和。
要求:
- 定义函数,接收两个参数
- 使用 return 返回计算结果
- 获取用户输入的两个数字(转换为浮点数)
- 调用函数并输出结果
运行示例:
请输入第一个数字:10
请输入第二个数字:20
两数之和为:30
# 2
def add ( a,b ) :
return a+b
x= float(input('num1:'))
y= float(input('num2:'))
print(f'{x} + {y} = {add(x,y)}')
题目3:最大值函数
编写一个函数 max_of_three(a, b, c),接收三个数字参数,返回其中最大的那个数。
要求:
- 定义函数,接收三个参数
- 使用 if-elif-else 判断大小
- 使用 return 返回最大值
- 调用函数并输出结果
运行示例:
请输入第一个数字:15
请输入第二个数字:8
请输入第三个数字:22
最大值为:22
#3 给出两种参考
def max3 (a , b, c) :
if b > a:
t = b
if b < c:
t = c
else:
t = b
elif b < a:
t = a
if a < c:
t = c
else:
t = a
else:
t = a
if a < c:
t = c
else:
t = a
return t
x = float(input('the first number: '))
y = float(input('the second number: '))
z = float(input('the third number: '))
print(f'max is {max3(x,y,z)}')
def max_of_three(a, b, c):
if a >= b and a >= c:
return a
elif b >= a and b >= c:
return b
else:
return c
x = float(input('请输入第一个数字:'))
y = float(input('请输入第二个数字:'))
z = float(input('请输入第三个数字:'))
print(f'最大值为:{max_of_three(x, y, z)}')
题目4:姓名处理函数
编写一个函数 format_name(first, last),接收姓和名两个参数,返回 "姓.名" 格式的字符串。
要求:
- 定义函数,接收两个参数
- 使用 return 返回格式化的结果
- 获取用户输入的姓和名
- 调用函数并输出结果
运行示例:
请输入姓:张
请输入名:三
格式化结果为:张.三
#4
def format_name(s1,s2) :
return f"{s1}.{s2}"
s1 = input('请输入姓:')
s2 = input('请输入名:')
print(f'格式化结果为 :{format_name(s1,s2)}')
题目5:列表求和
编写一个函数 sum_list(nums),接收一个数字列表,返回列表中所有数字的总和。
要求:
- 定义函数,接收一个列表参数
- 使用 for 循环遍历列表累加
- 使用 return 返回总和
- 定义列表并调用函数输出结果
运行示例:
列表 [10, 20, 30, 40] 的总和为:100
#5
def sum_list(a):
s = 0
for i in range (len(a)) :
s += a[i]
return f'列表{a}的总和为: {s}'
def sum_list1(a):
s = 0
for i in a: # i = 10, 20, 30, 40(元素本身)
s += i
return f'列表{a}的总和为:{s}'
a = [10,20,30,40]
print(sum_list(a))
# C vs Python 循环碎碎念
# C语言(计数循环):
# c
# for (int i = 0; i < 3; i++) {
# printf("%d", i); // i = 0, 1, 2
# }
# // 思维:我要循环3次,i记录当前是第几次
# Python(遍历循环):
# python
# for i in [10, 20, 30]: or for i in range(len(a)) :
# print(i) # i = 10, 20, 30
# # 思维:我要遍历列表里的每个元素,i是元素本身
# Python 不可以 for i in 具体数字
# 选择了 in range 累加就要 s += a[i]
# 选择了 for i in a 直接用 s += a
题目6:名字统计器
编写一个程序,反复让用户输入名字,输入 quit 时结束,然后将所有名字存入列表,最后打印所有名字。
要求:
- 使用 while 循环接收输入
- 使用列表的 append() 方法添加名字
- 输入
quit时使用 break 退出循环 - 输出所有输入的名字
运行示例:
请输入名字(输入quit结束):张三
请输入名字(输入quit结束):李四
请输入名字(输入quit结束):王五
请输入名字(输入quit结束):quit
你输入的名字有:['张三', '李四', '王五']
#6
def collect () :
a =[]
while True :
name = input('请输入名字:')
if name == 'quit' :
break
a.append(name)
return a
result = collect()
print(result)
题目7:列表平均值
编写一个函数 average_list(nums),接收一个数字列表,返回列表中所有数字的平均值。
要求:
- 定义函数,接收一个列表参数
- 使用 sum() 函数求和,再除以列表长度
- 使用 return 返回平均值(保留2位小数)
- 定义列表并调用函数输出结果
运行示例:
列表 [85, 90, 78, 92, 88] 的平均值为:86.60
#7
def average_list(l) :
s = 0
for i in l :
s += i
avg = s / len(l)
return avg
a = [85, 90, 78, 92, 88]
print(f'列表{a}的平均值为:{average_list(a):.2f}')
Python函数焚诀:从C语言思维到Python思维的转变
今天完成了七个Python基础练习,从最简单的问候函数到列表平均值计算,看似简单的题目却让我深刻体会到思维转换的重要性。
最大的挑战来自 for 循环。作为C语言的"老用户",我习惯性地认为 for i in range(len(a)) 中的 i 就是计数器,循环次数由 range() 决定。这种惯性思维导致我在做列表求和时犯了一个经典错误:for i in range(len(a)): s += i,结果把索引值 0+1+2+3=6 当成了列表元素的和。当意识到错误时,我才真正理解了Python中 for 循环的本质——遍历可迭代对象中的每个元素,而不是计数。range(len(a)) 生成的是 [0,1,2,3],遍历的是索引;直接 for i in a 遍历的才是元素本身。这个认知的转变,让我对"迭代"有了更深的理解。
另一个让我印象深刻的是函数参数的传递。在题目6中,我最初写了一个带参数 s 的函数,却发现参数完全没用,最后删掉才明白——函数参数是为了接收外部数据,如果函数内部不需要,就不该定义。还有 break 必须放在循环内部的规则,也是通过报错才真正记住的。
此外,变量的命名习惯也值得反思。name 和 names、sum 和 total,看似细微的差异,却直接影响代码的可读性。用 names 表示列表、name 表示单个名字,这种单复数对应关系让我不再混淆。
回顾这七道题,真正的问题不在语法本身,而在于用C语言的思路写Python。Python的"万物皆对象"和"迭代器"概念,需要我用新的思维方式去理解。接下来的学习中,我要时刻提醒自己:忘记C语言的计数器思维,拥抱Python的迭代哲学。
更多推荐
所有评论(0)