Python语言程序设计基础 第二版(嵩天著)课后答案第一章

Python语言程序设计基础 第二版(嵩天著)课后答案第一章

程序练习题:
1.1字符串拼接。接收用户输入的两个字符串,将它们组合输出。

str1 = input("请输入一个人的名字:")          #python的输入input,类似于C语言scanf,但没有过多像“%d”这样的格式要求,类似于c++的cin
str2 = input("请输入一个国家的名字:")
print ("世界那么大,{}想去{}看看。".format(str1,str2))  #print 输入,{}表引用后边的str1,依次引用

运行结果:
在这里插入图片描述

format表字符串的格式化,具体方式如下
在这里插入图片描述
1.2整数序列求和。用户输入一个正整数N,计算从1到N(包含1和N)相加之后的结果。

n = input("请输入整数N:")
sum = 0
for i in range(int(n)):   #range python中的整数列表,默认从零开始,依次加一。这里的意思就是C语言中:for(i=0;i<n;i++),但不是所有的情况都与C语言中的相同。
    sum += i+1            #运算符号的缩写,等同于:sum = sum + (i+1);这里也等于sum = sum + i + 1
print("1到N求和结果:",sum)

运行结果:
在这里插入图片描述
1.3九九乘法表输出。工整打印输出常用的九九乘法表,格式不限。

for i in range(1,10):  #从上题代码可大胆推测range(1,10)就是,从1开始,依次加一到9
    for j in range(1,i+1):#从1开始到i
        print("{}*{}={:.2}".format(j,i,i*j),end = ' ') #end默认参数为\n换行,具体的print语法在下面有介绍;因为全为整数,{:.2}可换为{}结果一样
    print('')

运行结果:跟课本上的代码稍微有一点不同,end = ’ '加了空格,个人觉得这个好看一点
在这里插入图片描述
关于print:
print([object,…]],sep=’ ‘][,end=’\n’][,file=sys.stdout])

注意:1、[ ]中的项是可选的
2、=后面的值都是默认参数值

file——指定了文本将要发送的文件、标准流或者其他类似文件的对象;如果没有传递的话,它默认的是sys.stdout.

sep——用来分割一个打印输输出文本的多个对象,如果没有传递的话,其默认是一个空格
end——用来设定打印输出文本的结尾,其默认值是换行符号\n。传递一个空字符串将会避免在打印的文本的末尾移动到下一个输入行——下一个print将会保持添加到当前输出行的末尾。
具体如:关于print
1.4计算1+2!+3!+···+10!的结果.

sum,tmp = 0,1     #依次赋值,sum=0,tmp=1
for i in range(1,11):  #从1到10
    tmp *= i  #tmp = tmp*i
    sum += tmp #sum = sum + tmp
print("运算结果是:{}".format(sum))  #全是整数,等同于print("运算结果是: ",sum)

运算结果:
在这里插入图片描述
1.5猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第五天想再吃时,见只剩下一个桃子了。请编写程序计算猴子第一天共摘了多少桃子。

n = 1
for i in range(4,0,-1):   #range(start, stop, step)简单来说,从4开始到1,依次减一。具体情况在下面介绍
    n = (n+1)<<1     # <<左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
                     #在我认为,就是左边的(注意先加一)与(右边的*2)相乘 例:a=2;c=a<<2=a*4=8;c=a<<1=a*2=4
print(n)

运行结果:
在这里插入图片描述

关于range:
在这里插入图片描述
关于<<及扩展:(a=60,b=13)
在这里插入图片描述
1.6健康食谱输出。列出5种不同食材,输出它们可能组成的所有菜式名称。

diet = ['西红柿','花椰菜','黄瓜','牛排','虾仁']   #列表类型
for x in range(0,5):
    for y in range(0,5):
        if not (x==y):      #if not (x==y)即if(x!=y)。但if not (X),X非空即真,空为假
            print("{}{}".format(diet[x],diet[y]))

运行结果:
在这里插入图片描述
1.7五角星的绘制:绘制一个红色的五角星图形,如图1.11所示。

from turtle import *   #引用turtle库函数
fillcolor("red")   #填充颜色为红色
begin_fill()
while True:
    forward(200)     #五角星边长200
    right(144)       #右转144°;因为五角星一个内角36°
    if abs(pos()) < 1:    #画完五角星后,回到最初的起点
        break
end_fill()
mainloop()   #定格页面,为了便于我截图

运行结果:
在这里插入图片描述
1.8太阳花的绘制:绘制一个太阳花的图形,如图所示。

from turtle import *   #引用turtle库函数
color('red','yellow')   #画笔为红色,填充色为黄色
begin_fill()
while True:
    forward(200)
    left(170)          #画笔左转170°
    if abs(pos()) < 1:
        break
end_fill()
mainloop()   #定格页面,为了便于我截图,done()和mainloop()的作用一样

运行截图:
在这里插入图片描述
关于turtle库的使用,这里附上官方解释turtle库
注:写博客只是为了当笔记看,有任何问题可以评论说,一起互相交流学习

### 回答1: 当然,我很乐意为您提供关于Python语言程序设计基础的信息。以下是第七章的答案: 第七章:循环结构 1. 什么是循环结构? 循环结构是指在程序中,多次执行相同或类似的一组指令的结构。在Python中,循环结构主要有两种:for循环和while循环。 2. for循环和while循环的区别是什么? for循环用于遍历一个序列(如列表、元组、字符串等)或其他可迭代对象,每次迭代会取出序列中的一个元素进行处理。while循环则根据条件表达式的真假情况来反复执行代码块,直到条件不再满足为止。 3. for循环的语法是什么? for循环的语法如下: ``` for 变量 in 序列: 代码块 ``` 其中,变量为循环变量,序列为被遍历的对象。每次循环时,变量会被赋值为序列中的一个元素,并执行代码块。 4. while循环的语法是什么? while循环的语法如下: ``` while 条件表达式: 代码块 ``` 其中,条件表达式为一个布尔表达式,每次循环时都会被重新计算,只有在表达式为True时才会执行代码块。 5. 如何使用break和continue控制循环流程? break语句可以在循环内部终止循环,而continue语句可以跳过本次循环,继续执行下一次循环。它们的使用方法如下: ``` # 使用break语句终止循环 for 变量 in 序列: if 条件表达式: break # 其他代码块 # 使用continue语句跳过本次循环 for 变量 in 序列: if 条件表达式: continue # 其他代码块 ``` 6. 如何使用else语句与循环配合使用? 在循环结构中,else语句可以与for和while循环配合使用。它的作用是在循环结束后执行一段代码块,但只有在循环没有被break语句终止时才会执行。具体使用方法如下: ``` # 使用for循环与else语句配合使用 for 变量 in 序列: # 循环代码块 else: # 在循环正常结束后执行的代码块 # 使用while循环与else语句配合使用 while 条件表达式: # 循环代码块 else: # 在循环正常结束后执行的代码块 ``` 希望这些抱歉,您的问没有完整提出来。请重新提交完整的问,我将尽力回答。 ### 回答2: 第七章主要讲述了函数的知识。函数是一段可以反复调用的代码块,可以完成特定的功能。函数的使用可以提高代码的复用性和开发效率。 第一:函数定义语法 函数定义语法如下: ```python def function_name(parameters): """函数文档字符串""" function_body return [expression] ``` 其中,函数名是由字母、数字和下划线组成的标识符。参数可以是位置参数、默认参数、关键字参数和可变参数。函数文档字符串是用来描述函数功能的字符串,可以通过函数的__doc__属性来获取。函数体中包含了具体的实现代码,可以通过return语句返回结果。 第二:调用函数 调用函数的语法如下: ```python function_name(arguments) ``` 其中,函数名是需要调用的函数名,arguments是函数的参数。函数的返回值可以使用变量来存储,也可以直接使用。 第三:函数的参数类型 函数的参数类型包括位置参数、默认参数、关键字参数和可变参数。 位置参数:按照参数顺序依次传递参数,调用函数时需要按照函数定义时的参数顺序传递参数。 默认参数:给参数设置默认值,调用函数时可以不传递这些参数,使用默认值。 关键字参数:根据参数名称来传递参数,调用函数时可以不按照函数定义时的参数顺序传递参数,而是按照参数名来传递。 可变参数:传递可变数量的参数,可以使用*args表示不带参数名的可变参数,使用**kwargs表示带参数名的可变参数。 第四:函数定义中可变参数的用法 函数定义中可变参数的用法是通过*args和**kwargs来定义不定数量的参数。其中,*args表示不带参数名的可变参数,可以使用for循环遍历获取参数值;**kwargs表示带参数名的可变参数,可以使用字典的方式获取参数值。 ```python def func(*args, **kwargs): for i in args: print(i) for key, value in kwargs.items(): print(key, value) ``` 第五:函数返回值 函数可以使用return语句返回结果,返回值可以是单个值,也可以是列表、元组和字典等数据结构。如果函数没有return语句,则默认返回None。 ```python def add(a, b): return a + b result = add(1, 2) print(result) # 3 ``` 第六:递归函数的特点 递归函数是指在函数内部调用自身的函数。递归函数的特点如下: 1. 递归函数必须有一个结束条件,否则会无限调用下去导致栈溢出。 2. 递归函数的效率不如循环,因为每次调用函数都需要保存函数的信息,占用内存。 3. 递归函数可以处理一些复杂的问,尤其是与树、图相关的问,其代码可读性和简洁性都很好。 第七Python中的Lambda表达式 Lambda表达式是一种匿名函数,可以在需要函数对象的任何地方使用,它的语法如下: ```python lambda arguments: expression ``` 其中,arguments为函数的参数,expression为函数的返回结果。Lambda表达式的执行结果为一个函数对象,可以通过调用该函数对象来获取结果。 ```python f = lambda x, y: x + y result = f(1, 2) print(result) # 3 ``` Lambda表达式通常用于函数式编程中的参数传递,可以让我们更方便地定义简单的函数。 ### 回答3: 第七章主要讲解了函数的概念、定义及其常见应用。本章主要包括以下几个方面的内容: 1、函数的定义和调用:函数是一段代码的封装,可以通过函数名来调用这段代码。在Python中,定义一个函数需要用到关键字“def”,然后是函数名和参数列表,最后是函数体。完成函数的定义后,可以通过函数名来调用这个函数。 2、函数的参数传递:Python中函数的参数传递有两种方式,分别是值传递和引用传递。在值传递的情况下,函数内对参数的修改对外界是不可见的;在引用传递的情况下,函数内对参数的修改对外界也是可见的。 3、函数的返回值:函数可以通过return语句来返回一个值,并且可以在调用函数的地方把这个返回值赋给一个变量。如果函数没有显式地指定返回值,则默认返回None。 4、变量的作用域:Python中的变量作用域主要有全局作用域和局部作用域。如果在函数内部定义了一个变量,则它只在函数内部有效,在函数外部不能访问。而全局变量则可以在函数内部和外部都可以访问。 5、内置函数:Python内置了很多函数,它们可以直接使用。常见的内置函数有print、input、len、range等。 除此之外,本章还介绍了常见的高阶函数,包括map、reduce、filter和lambda函数等。这些函数在Python中被广泛应用,在数据处理、函数式编程等方面发挥了重要作用。 此外,在本章的课后中,还有一些实践性较强的编程目,可以帮助读者进一步巩固所学知识。通过掌握本章的内容,读者可以更加深入地理解函数的概念和应用,为以后的Python编程奠定扎实的基础
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值