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))

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

今天就到这里,明天见~
python练习题-基础巩固-第一周_第1张图片

你可能感兴趣的:(python学习日记,python)