python程序填空_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.

B.

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=0,0+1=1,1+0=1,1+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中,布尔类型有( 两个 )个值,分别是( True,False )。

### 编程题

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 秒 —> 00 时 01 分 07 秒

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.写出判断一个数是否能同时被3和7整除的条件语句, 并且打印对应的结果。

例如:输入 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')

# 这里**运算优先级最大,所以不需要加括号

二、分支和循环结构题

基础题

根据输入的百分制成绩打印及格 或者不及格,60分以下为不及格。 例如: 输入 120 提示 成绩不合法 输入 90 打印及格 输入 54 打印不及格 a = int(input('请输入您的成绩:'))

if 60 <= a <= 100:

print('及格')

elif 0 <= a <60:

print('不及格')

else:

print('成绩不合法')

根据输入的年龄打印成年或者未成年,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('已成年')

依次输入两个整数,如果两个数相减的结果为奇数则输出该结果,否则输出提示信息结果不是奇数。

a = int(input('请输入一个整数:'))

b = int(input('请再输入一个整数:'))

c = a - b # 设置第三个变量,用于代替两个整数的差

if c % 2 == 1: # %2取余数为1,则为基数,否则为偶数。

print(c)

else:

print('结果不是基数')

使用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到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的值

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最后输出的数字,即天数。

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

附加题

统计100以内个位数是2并且能够被3整除的数的个数。

a = 0

for i in range(101):

if i % 10 == 2 and i % 3 == 0:

a += 1

print(a)

输入任意一个正整数,求它是几位数。

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

# 考虑到不能用字符串的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) # 最后打印这个位数

打印所有的水仙花数。

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

例如: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)

写一个程序可以不断的输入数字,如果输入的数字是0,打印程序结束后结束该程序。

运行效果:

请输入数字: 9

请输入数字: 762

请输入数字: 18

请输入数字: 0

程序结束

# 解题思路:不断输入数字,那么肯定用循环,而且要把输入写在循环哪,这样才可以一直输入判断。

# 写完死循环后,要把出口加进去,也就是我们的条件,满足条件后,break。停止循环。

while 1:

a = int(input('请输入一个数:'))

if a == 0:

print('程序结束')

break

输出乘法口诀表(九九表)。

提示:用两个循环分别控制行和列的输出,共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()

附加挑战题

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

求斐波那契数列中第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))

一张纸的厚度大约是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程序填空)