python练习题-基础巩固-第一周


大家好,我是小豪,首先祝大家周末愉快!
今天给大家带来的不是知识点,而是我们的基础题,就像是《黄冈密卷》一样。唔,小时候的记忆,说白也就是试卷。

此次的练习题我也整理成了markdown文档,有需要的可以去我的博客下载,另外pygame游戏我也设置了下载积分0,都是免费的(因为下载积分很难获取,算是给大家的福利吧!共同进步,加油!点个赞哦)

作业文本,点击下载

好了,话不多说,今天练习题涉及到的知识点也就是我文章前五天的基本内容,下面是习题以及解题思路:

一、数据类型题

选择题


1. print(100 - 25 * 3 % 4) 应该输出什么? (B)
   # 根据运算符号的优先级,先算25*3%4==75%4==3
   A. 1
   B. 97
   C. 25
   D. 0
2. 下列哪种说法是错误的(A)。
   A. 除字典类型外,所有标准对象均可以用于布尔测试
   B. 空字符串的布尔值是False
   C. 空列表对象的布尔值是False
   D. 值为0的任何数字对象的布尔值是False
3. Python不支持的数据类型有(A)。
   A. char
   B. int
   C. float
   D. list
4. (多选)n = 6784,以下能够获取到7 的方法有(CD)。
   `A. n / 1000 % 100 `	# 6.784
   `B. n % 1000 / 100`	# 7.84
   `C. n // 100 % 10`	# 7
   `D. n // 10  % 100 // 10`	# 7
5. 运行以下程序,当从键盘上输入12,运行结果是(A)。
   x = (input())
   print(type(x))
# input功能:从控制台输入,默认类型是字符串
   A. <class 'str'>
   B. <class 'int'>
   C. 出错
   D. class 'dict'
6. 下列表达式的运算结果是(  ) 。
   a = 100
   b = False
   print(a * b > -1)
# 布尔值在数字中用法:0 即是 False ;除了0以外的数字,都是True
   A.  False
   B. 1
   C. 0
   D.True
7. 下列四组数,依次为二进制、八进制和十六进制,符合要求的是(D)
   # 进制表示是不会出现比进制高的数字的,
   # 二进制不可能出现2,逢2进1;同理,8进制不可能出现8
   # 十六进制表示方法是0,1,2,3...9,a,b,c,d,e;
   # 所以别看D选项最后是19,他是符合十六进制的哦!
   A. 12,  77,  10
   B. 12,  80,  10
   C. 11,  78,  19
   D. 11,  77,  19
8. 二进制数加法运算的基本特点是“逢二进一”,即0+0=00+1=11+0=11+1=0并进位。运用这一基本法则和十进制运算的类似规律,得出二进制数加法运算1001+101的结果为(C)
   #    |1|0|1
   #   1|0|0|1
   #--------------
   # = 1|1|1|0(逢2进1)
   A. `1001`
   B. `1010`
   C. `1110`
   D. `1101`
9. 十进制数53转换成二进制数是()
     A. `100101`
     B. `110101`
     C. `100100`
     D. `110100`
10. 下列关于print函数用法错误的是()
      A. `print(100)`
      B. `print(100, 200)`
      C.` print(100, 'hello world!')`
      D. `print(10 20)`

填空题

1. 在Python中表示空类型的是(None)。
2. 查看变量中数据的类型的函数名是(type)。
3. 已知`x = 3 == 3`,执行结束后,变量x的值为(True)。
4. 已知 `x = 3`,那么执行语句 `x += 6` 之后,x的值为(9)。
5. 表达式 `3 ** 2` 的值为(9,表达式 `3 * 2`的值为(6),表达式 `4 ** 0.5 `的值为(2)。
6. Python中如果要在程序中表示一个二进制说需要加前缀(0b或者0B),八进制数前缀(0o或者0O),十六进制数加前缀(0x或者0X)。
7. Python给我们分别提供了函数(bin)(oct)(hex)用于将其他进制的数转换成二进制、八进制和十六进制。
8. 语句a, b=10,20执⾏后,a的值是( 10  );语句a, a = 10, 20 执⾏后,a的值是( 20  )9. 在Python中,布尔类型有(  两个 )个值,分别是( TrueFalse  )。
### 编程题
1. 从控制台输入圆的半径,计算周长和面积
a = int(input('请输入半径:', ))	
# input ==> 功能:从控制台输入,前面加上int ==> 意思就是把输入的内容转换为int整数类型
S = a ** 2 * 3.14
C = a * 2 * 3.14
print('圆的面积是:', S, '圆的周长是:', C)

2. 假设今天的上课时间为15678秒,编程计算今天上课时间是多少小时,多少分钟,多少秒;以‘XX时XX分XX秒’的方式表示出来。

例如: 时间 67 秒  —> 000107 秒

time = 15678  # 秒数
h = 15678 // 3600  # 除以60得到分钟,再除以60得到小时(取整用整除//)
m = 15678 % 3600 // 60	# % 取余,既然整除3600得到的是小时,那 % 3600 剩下的,再整出个60,就是分钟了。
s = 15678 % 3600 % 60	# 同上理
print('%d时%d分%d秒' % (h, m, s))	
# 这里用到了%d占位符,在print输出语句中,可以在前部分打印字符串,里面变量可以用%d先占位,然后在最后用%(变量名)来替换。
# 例如:print('一共有%d小时'%h)
# %d数字占位符,最后把变量h替换之前的%d,很简单吧!会用就行。%s字符串占位符,用法一样。

3.使用print输出语句 打印下列格式的数据。要求:一行一行的打印
    *
   ***
  *****
 *******

# 方法一:
print('    *\n', '  ***\n', ' *****\n', '*******')
# 直接按照print输出语句来打印,每行是什么就打印什么
# 每行都是一定的空格+‘*’号组成,print语句打印完会自动换行。

# 方法二:

for a in range(4):
    q = ' '
    b = '*'
    print(q * (4 - a), b * (2 * a + 1))

# 找规律,每行空格是越来越少,每行‘*’是越来越多;所以用总循环4减去递增的a,控制空格数量逐渐减少;用递增的a控制变多的‘*’号

当然了,解题的方法很多,思路懂了就好

4.使⽤一个print输出3个数据,3个数据在⼀行显示,并且用等号(=)隔开。

name = '小豪成长日记'
age = 25
like = '学习'
print(name, age, like, sep=' = ')
# 这里考的知识点就是在print输出语句中,sep  是用来连接输出的内容的,默认是空格,这里修改成‘=’号,就完成了
# print输出语句中,除了sep 还有end(结尾控制,默认换行)

附加题

### 预习:逻辑运算符 完成下面的需求

1. 下列表达式的值为True的是(B)。

`A. 3 > 2 > 2`

`B. 1 and 2 != 1`

`C. not(11 and 0!=1)`

`D. 10 < 20 and 10 < 5`

2.写出判断一个数是否能同时被37整除的条件语句, 并且打印对应的结果。

例如:输入 21 打印 True, 输入 9 打印 False。

num = int(input('请输入一个数:', ))
if num % 3 == 0 and num % 7 == 0:
    print('True')
else:
    print('False')
# 很简单的if...else语句

3.写出判断一个数是否能够被3或者7整除,但是不能同时被3或者7整除的条件语句, 并且打印对应的结果。

例如:输入 14 打印 True, 输入 4 打印 False, 输入 21 打印 False。
num = int(input('请输入一个数:', ))
if (num % 3 == 0 or num % 7 == 0) and not (num % 3 == 0 and num % 7 == 0):
    print('True')
else:
    print('False')
# 如果你不清楚怎么写的话,就按题目把每个条件语句的先后顺序,用圆括号扩起来,保证他的运算优先级。当然,上面代码还可以优化,具体自行操作。
4.输入年,写代码判断输入的年是否是闰年,并且打印对应的结果  。(是闰年的条件: 能被4整除但是不能被100整除或者能够被400整除的年)

例如:输入 2020 打印 True, 输入 2011 打印 False
num = int(input('请输入年份:', ))
if num % 4 == 0 and num % 100 != 0 or num % 400 == 0:
    print('Ture')
else:
    print('False')

5.定义两个变量保存一个人的身高和体重,编程实现判断这个人的身材是否正常!

公式: 体重(kg)/身高(m)的平方值 在18.5 ~ 24.9之间属于正常。
例如: 输入体重: 55, 输入身高:1.55, 输出: True

high = float(input('请输入您的身高:',))
weight = float(input('请输入您的体重:',))

a = high / weight** 2
if 18.5 <= a <= 24.9:
    print('Ture')
else:
    print('False')
# 这里**运算优先级最大,所以不需要加括号

二、分支和循环结构题

基础题

  1. 根据输入的百分制成绩打印及格 或者不及格,60分以下为不及格。

    例如: 输入 120 提示 成绩不合法     输入 90  打印及格   输入 54 打印不及格
    
    a = int(input('请输入您的成绩:'))
    if 60 <= a <= 100:
        print('及格')
    elif 0 <= a <60:
        print('不及格')
    else:
        print('成绩不合法')
    
    
  2. 根据输入的年龄打印成年或者未成年,18岁以下为未成年,如果年龄不在正常范围(0到150岁)内则打印这不是人!

例如:输入-10 提示 这不是人      输入14  提示未成年    输入20  提示成年人
age = int(input('请输入您的年龄:'))
if not (0 <= age <= 150):  # 先设置大范围,0~150
    print('这不是人!')
elif age < 18:             # 其次再写出小于18的
    print('未成年')
elif age >= 18:            # 最后打印出大于等于18的
    print('已成年')
  1. 依次输入两个整数,如果两个数相减的结果为奇数则输出该结果,否则输出提示信息结果不是奇数
a = int(input('请输入一个整数:'))
b = int(input('请再输入一个整数:'))
c = a - b        # 设置第三个变量,用于代替两个整数的差
if c % 2 == 1:   # %2取余数为1,则为基数,否则为偶数。
    print(c)
else:
    print('结果不是基数')
  1. 使用for循环输出 0到100内所有的奇数。
方法一:
# 从1开始,步长+2,
for i in range(1, 101, 2):   
    print(i)

方法二:
# 遍历,取余2为1,则是基数。for循环顾前不顾后,所以100以内写101
for i in range(1, 101):
    if i % 2 == 1:
        print(i)

5.使用while循环输出0到100内所有的偶数。

方法一:
# 设置从0开始,每次打印值+2
a = 0
while a < 100:            
    print(a)
    a += 2
方法二:
# 同上题一样
  1. 求1到100以内能被7或者3整除,但是不能同时被3和7整除的数的个数
a = 0   #设置一个变量(用来计算个数的)
for i in range(101):   #(先写出1~100的循环)
    if (i % 7 == 0 or i % 3 == 0) and (i % 21 != 0):    #(加入条件)
        a += 1   # 满足条件,a+1;计算 i 打印了多少次
print(a)         # 取消缩进,输出最后打印出a的值
  1. 3000米长的绳子, 每天减一半, 问多少天后这个绳子会小于5米 【不考虑小数】
# 在不知道循环次数的时候,记得用while循环
a = 3000     
b = 0     # 设置个变量,用来计算天数。
while True:     # 无限循环
    a /= 2      # a = a / 2 ,每天减一半
    b += 1      # b = b + 1 ,减一次,就加一天
    if a < 5:   
        break   # 当总长度a小于5米,停止循环。
print(b)        # 取消缩进,打印b最后输出的数字,即天数。

  1. 在0到99之间随机选择一个数赋值给x, 在0到199之间随机选择一个数赋值给y,如果x 大于 y, 则输出x的值, 如果x 小于 y则输出y的值, 否则输出两者相等
import random                     # 导入 随机库
x = int(random.randint(0, 99))    # 赋值x 随机生成一个0~99的整数
y = int(random.randint(0, 199))   # 赋值y 随机生成一个0~199的整数
if x > y:
    print(x)
elif x < y:
    print(y)
else:
    print('两者相等')

9.输入年, 输入月,获取这个月的天数

温馨提示:
		1 3 5 7 8 10 12 月的天数是31
		4 6 9 11 月的天数是30
		2月份的话 闰年是29天 平年是28天
		
		闰年的判断条件:
				a. 能被4整除 但是不能被100整除
				b. 能被400整除
				其中a 和 b之间满足其中一个即可
a = int(input('请输入一个年份:'))
b = int(input('请输入一个月份:'))

if b in (1, 3, 5, 7, 8, 10, 12):    
# 例如:a in b ==> 判断a是否在b当中;在这里判断b是否是大月31天
    print('这个月有31天')
elif b in (4, 6, 9, 11):
    print('这个月有30天')
elif b == 2 and (a % 4 == 0 and not a % 100 == 0 or a % 400) == 0:
    print('这个月有29天')
else:
    print('这个月有28天')

10.输出1到100中能被3整除和个位为3的数

for i in range(101):
    if i % 3 == 0 or i % 10 == 3:
        print(i)

附加题

  1. 统计100以内个位数是2并且能够被3整除的数的个数。
a = 0
for i in range(101):
    if i % 10 == 2 and i % 3 == 0:
        a += 1
print(a)
  1. 输入任意一个正整数,求它是几位数。

注意:不允许使用判断字符串长度的方式来求解。

# 考虑到不能用字符串的len来取长度, 那就只好用数学运算了
# 想象某个数,除以10,他就会少点,所以我们用了循环除以10,来确定他是几位数
a = int(input('请输入一个数:'))
b = 1    #  计算位数
if a < 10:  # 先避免这种一位数的情况
    print(b)
else:
    while True:  # 开始循环
        a /= 10  # 拿到这个数,除以10
        b += 1   # 除一次,计算一次位数
        if a < 10: # 除到这个数小于10了,停止
            break
    print(b)    # 最后打印这个位数
  1. 打印所有的水仙花数。

说明:水仙花数是一个三位数,其各位数字⽴方和等于该数本身。

例如:153是⽔仙花数,因为 153 = 1³ + 5³ + 3³

for a in range(100, 1000):   # 是个三位数
    b = a % 10               # 取个位数
    c = a // 10 % 10         # 取十位数
    d = a // 100             # 取百位数
    if b ** 3 + c ** 3 + d ** 3 == a:   # 判断条件各数字立方和等于该本身
        print(a)
  1. 写一个程序可以不断的输入数字,如果输入的数字是0,打印程序结束后结束该程序。

运行效果
请输入数字: 9
请输入数字: 762
请输入数字: 18
请输入数字: 0
程序结束

# 解题思路:不断输入数字,那么肯定用循环,而且要把输入写在循环哪,这样才可以一直输入判断。
# 写完死循环后,要把出口加进去,也就是我们的条件,满足条件后,break。停止循环。
while 1:
    a = int(input('请输入一个数:'))
    if a == 0:
        print('程序结束')
        break
  1. 输出乘法口诀表(九九表)。

    提示:用两个循环分别控制行和列的输出,共9行,第1行有1列,第2行有两2列,……。

    格式为:

    1 * 1 = 1

    1 * 2 = 2 2 * 2 = 4

    1 * 9 = 9 2 * 9 = 18 … 9 * 9 = 81

解题思路:
# 一个控制行数,一个控制列数,print输出语句后面刚才讲了,除了有sep(设置输出变量之间的连接方式的),还有end(控制输出完最后的指令,默认换行,这里改成\t
# \t 是python中的制表符,t = tab
# 制表符(也叫制表位):是在不使用表格的情况下在垂直方向按列对齐文本。
for a in range(1, 10):
    for b in range(1, a + 1):
        print('%d*%d=%d' % (a, b, a * b), end='\t')
    print()

附加挑战题

  1. 统计101~200中素数的个数,并且输出所有的素数。(素数又叫质数,就是只能被1和它本身整除的数)
for i in range(101, 201):    # 取除数的值
    for a in range(2, i-1):  # 取被除数的值
        if i % a == 0:       # 相除取余数,等于0说明整除,
            break            # 能整除的,全部停止循环
    else:                   
        print(i)
  1. 求斐波那契数列中第n个数的值,n是正整数。n值由控制台输入

说明:斐波那契数列是这样的一个数列:1、1、2、3、5、8、13、21、34、… ,第一个数和第二个数是1,从第三个数开始每个元素是前两个元素相加的和。

a = int(input('想求斐波那契数列第几位的值?请输入:'))
b = 0    # 第0位数
c = 1    # 第一位数
d = 1    # 第二位数
for x in range(2, a + 1):  # 用循环次数来控制相加的次数
    # 斐波那契数列是这样的一个数列:1、1、2、3、5、8、13、21、34、..
    # 第一个数和第二个数是1,从第三个数开始每个元素是前两个元素相加的和。
    d = b + c           # 第二位等于第0位+第一位
    b = c               # 第0位往右移动一位
    c = d               # 第一位往右移动一位
print('第%d位数的值是%d' % (a, d))
  1. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
a = 884813000     # 8848.13m = 8848130mm * 100 = 884813000mm
b = 8             #               0.08mm * 100 =         8mm
c = 0
while True:      
    b *= 2
    c += 1
    if b > a:
        break
print(c)

4.猜字游戏

在1到1000中随机生成一个数赋值给sys_num

控制台输入一个整数 赋值给 user_num

判断user_num与sys_num的关系

​ 如果 user_num 大于 sys_num 提示 猜大了

​ 如果 user_num 小于 sys_num 提示 猜小了

​ 如果两者相等 提示 恭喜你 中奖啦

要求: 只要没中奖 就需要一直猜

import random
sys_num = int(random.randint(0, 1000))
while 1:
    user_num = int(input('请输入一个整数:'))
    if user_num > sys_num:
        print('猜大了')
    elif user_num < sys_num:
        print('猜小了')
    elif user_num == sys_num:
        print('恭喜你中奖了')
        break

5."百马百担"问题:一匹大马能驮3担货,一匹中马能驮2担货,两匹小马能驮1担货,如果用一百匹马驮一百担货,问有大、中、小马各几匹?

for a in range(100): # 这里可以取值34,因为大马最多33匹
    for b in range(100):  # 同理可以取值51
        for c in range(100): #上面这么取值也是优化之一,让程序少计算一部分。
            if (a + b + c) == 100 and (3 * a + 2 * b + 1 / 2 * c) == 100:
                print('大马%d匹,中马%d匹,小马%d匹' % (a, b, c))

三、祝大家周末愉快!作业题先就这么多吧,下周再附上。

今天就到这里,明天见~

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《零基础入门学习Python》(第一版)课后习题的主要目的是帮助学生巩固所学的Python基础知识,并提供一些实践机会来应用这些知识。 第一部的习题主要集中在Python的基本语法和数据类型上。学生需要编写并运行一些小程序来理解变量、条件语句、循环和函数等基本概念。这些习题旨在让学生对Python基础知识有一个更深入的理解,并提供一些运用这些知识的机会。 第二部的习题涉及列表、元组和字典等复杂数据类型。学生需要编写程序来操作这些数据类型,并解决一些与它们相关的问题。这部习题的目的是帮助学生熟练掌握这些数据类型的使用方法,并学会将它们应用到实际的编程任务中。 第三部的习题涵盖了文件操作、异常处理和模块导入等主题。学生需要编写程序来读写文件、处理错误以及使用Python的标准库中的模块。这些习题的目的是让学生了解一些高级的编程概念,以及如何使用Python提供的丰富功能来解决实际问题。 综上所述,《零基础入门学习Python》(第一版)课后习题通过提供一系列实践机会来帮助学生巩固所学的Python基础知识。通过完成这些习题,学生将能够更自信地应用所学的知识,并为进一步深入学习Python打下良好的基础。 ### 回答2: 《零基础入门学习Python》(第一版)是一本面向零基础学习Python的教材,课后习题是巩固知识和提高编程能力的重要环节。通过课后习题,学生能够通过实际操作和练习运用所学的Python知识,巩固学习,提高理解和应用能力。 这本教材的课后习题为不同的难度级别,从基础到高级。每个级别都有一些具体的题目要求和指导,供学生进行编程练习。这些习题涵盖了Python的基本语法、数据类型、条件语句、循环结构、函数、列表、字典和文件操作等内容,内容全面且有针对性。 针对课后习题,有几个建议: 首先,学生可以根据自己的学习进度和课后习题的难度选择合适的习题进行练习,每道习题都应该认真对待,仔细理解题目要求,并思考解决问题的思路。 其次,可以借鉴教材中的示例代码,熟悉和运用相关的语法和知识,提高编程技术和逻辑思维。 另外,可以多与同学或者老师进行交流和讨论,共同解决问题,互相帮助和学习。 最后,可以利用互联网资源,查找相关的参考资料和练习题,丰富自己的学习内容和练习经验。 总之,课后习题是巩固学习的重要环节,是提高Python编程能力的有效途径。通过认真完成习题,可以加深对知识的理解,提高编程技巧,为今后的学习打下坚实的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值