Python基本训练
1.猜数字:用户输入一个数字,系统产生一个随机数(0-100),进行判断,如果猜大了/猜小了,则提示,直到猜对为止,如果猜对了,结束程序,统计所猜次数
import random
def guess_number_game():
# 生成0~100随机整数
target = random.randint(0, 100)
guess_count = 0
print("=====猜数字游戏=====")
print("系统已生成0-100之间数字,请开始猜测!")
while True:
# 输入异常捕获,防止非数字报错
try:
num = int(input("请输入猜测数字:"))
except ValueError:
print("输入错误!请输入有效整数!")
continue
# 限制输入区间
if not 0 <= num <= 100:
print("请输入0~100范围内的数字!")
continue
guess_count += 1
if num > target:
print("猜大了,再试试!")
elif num < target:
print("猜小了,再试试!")
else:
print(f"🎉恭喜猜对!总共猜测{guess_count}次")
break
if __name__ == "__main__":
guess_number_game()
2.使用while判断一个数是否为质数(素数)
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。最小的质数是2,它也是唯一的偶数质数。最前面的质数依次排列为:2,3,5,7,11等
def is_prime():
try:
n = int(input("请输入一个自然数:"))
except ValueError:
print("输入非法,必须输入整数!")
return
# 小于2直接判定非质数
if n <= 1:
print(f"{n} 不是质数")
return
# 2是唯一偶质数
if n == 2:
print(f"{n} 是质数")
return
# 大于2偶数直接排除
if n % 2 == 0:
print(f"{n} 不是质数")
return
flag = True
i = 3
# 只遍历奇数,循环上限根号n,大幅减少循环次数
while i * i <= n:
if n % i == 0:
flag = False
break
i += 2
print(f"{n} {'是质数' if flag else '不是质数'}")
if __name__ == "__main__":
is_prime()
3.小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
- 低于18.5:过轻
- 18.5-25:正常
- 25-28:过重
- 28-32:肥胖
- 高于32:严重肥胖
def calculate_bmi():
height = 1.75
weight = 80.5
bmi = weight / (height ** 2)
print(f"小明身高:{height}m,体重:{weight}kg")
print(f"BMI指数:{bmi:.2f}")
# 分段判断
if bmi < 18.5:
res = "过轻"
elif bmi < 25:
res = "正常"
elif bmi < 28:
res = "过重"
elif bmi < 32:
res = "肥胖"
else:
res = "严重肥胖"
print(f"身体状况:{res}")
if __name__ == "__main__":
calculate_bmi()
4.输入一个月,判断季节(让用户输入一个月份,判断这个月是哪个季节?假定3到4月是春季,5到8月是夏季,9到10是秋季,11、12、1、2月是冬季)
def judge_season():
try:
month = int(input("请输入月份(1-12):"))
except ValueError:
print("输入错误,请输入1~12的整数!")
return
# 季节映射字典,逻辑更清晰易维护
season_map = {
"春季": [3, 4],
"夏季": [5, 6, 7, 8],
"秋季": [9, 10],
"冬季": [11, 12, 1, 2]
}
if not 1 <= month <= 12:
print("月份范围必须是1~12!")
return
for season, month_list in season_map.items():
if month in month_list:
print(f"{month}月是{season}")
break
if __name__ == "__main__":
judge_season()
5. len(range(1,10))的值是()
A.8 B.9 C.10 D.11
答案:Brange(a,b)左闭右开,生成数字:1,2,3,4,5,6,7,8,9,一共 9 个元素,长度为 9。
6. 表达式",".join(list)中list是列表类型,以下选项中对其功能的描述正确的是()
A.将逗号字符串增加到列表list中
B.在列表list每个元素后增加一个逗号
C.将列表所有元素连接成一个字符串,每个元素后增加一个逗号
D.将列表所有元素连接成一个字符串,元素之间增加一个逗号
答案:D分隔符.join(可迭代对象)作用:把列表所有元素拼接成一个完整字符串,元素与元素中间插入分隔符,首尾不会多出逗号。
7. 假设列表对象aList的值为[3,4,5,6,7,9,11,13,15,17],那么切片aList[3:7]得到的值是()
A.[5,6,7,9,11]
B.[6,7,9,11]
C.[5,6,7,9,]
D.[7,9,11,13]
答案:B. [6,7,9,11]切片[start:end]左闭右开,取索引 3、4、5、6:索引 3:6,索引 4:7,索引 5:9,索引 6:11结果:[6,7,9,11]
8. 已知x=list(range(20)),那么表达式x[-1]的值为()。
A.0B.1C.20D.19
答案:D.19range(20)生成 0~19,转列表后最后一个元素是 19;负索引-1代表列表最后一位元素。
9. 切片操作list(range(6))[::2]执行结果为()
A.[0,1]B.[0,2,4,6]C.[0,1,2]D.[0,2,4]
答案:D. [0,2,4]
range(6)→ 0,1,2,3,4,5,列表:[0,1,2,3,4,5][::2]步长为 2,隔 1 个取 1 个:0、2、4
10. 以下程序的输出结果是( ):
k=0
for i in range (4):
for j in range(i+1):
k+=j
if j>1:
break
print(k)
A:5 B:6 C:7 D:8
答案:C:7
分步推演:range(4)→ i=0,1,2,3
- i=0:内层
range(1)→ j=0k = 0 + 0 = 0,j=0 不大于 1,无 break - i=1:内层
range(2)→ j=0、1j=0:k=0+0=0j=1:k=0+1=1,j=1 不大于 1,无 break - i=2:内层
range(3)→ j=0、1、2j=0:k=1+0=1j=1:k=1+1=2j=2:k=2+2=4,j>1,触发 break,跳出内层循环 - i=3:内层
range(4)→ j=0、1、2j=0:k=4+0=4j=1:k=4+1=5j=2:k=5+2=7,j>1,触发 break,跳出内层循环
循环全部结束,print(k)输出 7。
