实验三
一、实验内容
1. 实验任务1
在Python开发环境下,输入并运行以下python代码。结合运行结果,理解这段代码中使用的格式控制方
法,以及,灵活使用的列表解析书写形式。
# 基础操作练习1: 格式控制、列表解析、类型转换 x = list(range(10)) print('整数输出1: ', end = '') for i in x: print(i, end=' ') print('\n整数输出2: ', end = '') for i in x: print(f'{i:02d}', end = '-')#指定每个整数输出宽度占两列,不足两列,左边补0 print('\n整数输出3: ', end = '') for i in x[:-1]: print(f'{i:02d}', end = '-') print(f'{x[-1]:02d}') print('\n字符输出1: ', end = '') y1 = [str(i) for i in range(10)] # 函数str()用于把其它类型对象转换成字符串对象 print('-'.join(y1)) print('字符输出2: ', end = '') y2 = [str(i).zfill(2) for i in range(10)] # 方法.zfill()用于对字符串进行格式化,指定宽度为2列,不足左边补0 print('-'.join(y2))
在Python开发环境下,输入并运行以下python代码。结合运行结果,理解字符、列表及函数、方法的组合应用。
# 基础操作练习2: range对象、列表解析、类型转换、字符串方法 print('整数列表: ') x = list(range(97, 97+26)) for i in x: print(i, end = ' ') print('\n字符列表1: ') lower_alpha = [chr(i) for i in range(97, 97+26)] # 函数chr()返回整数对应的字符串形式 for i in lower_alpha: print(i, end = ' ') print('\n字符列表2: ') upper_alpha = [i.upper() for i in lower_alpha] # 方法.upper()用于把小写字母转换成大写 for i in upper_alpha: print(i, end = ' ')
在Python开发环境下,输入并运行以下python代码。结合运行结果,思考列表、集合的区别,体验更多Python提供的丰富的工具库。
# 基础操作练习3: 标准库random, string import random import string print('用列表存储随机整数: ') ls = [random.randint(1, 100) for i in range(5)] print(ls) print('\n用集合存储随机整数: ') s = {random.randint(1,100) for i in range(5)} print(s) print('\n\n字母串: ', end = '') alpha = string.ascii_letters print(alpha) print(type(alpha)) print('\n数字串:', end = '') digits = string.digits print(digits) print(type(digits))
问答题:
1. random.randint(1,100) 生成的随机整数范围是?是否包括100?利用 range(1,100) 生成的有序序列范围是?是否包括100?
答:random.randint(1,100) 生成的随机整数范围是1~100,包括100。利用 range(1,100) 生成的有序序列范围是1~99,不包括100。
2. 使用集合解析形式 s = {random.randint(1,100) for i in range(5)} 生成集合,len(s)一定是5吗?
答:不一定是5,因为集合具有互异性,而随机抽取的数字有可能相同,当抽取两个或两个以上相同的数字时,len(s)<5。
# 测试集合解析形式s = {random.randint(1,100) for i in range(5)}生成集合,len(s)一定是5吗? import random print('用集合存储随机整数: ') while True: s = {random.randint(1,100) for i in range(5)} print(s) if len(s) < 5: break
2. 实验任务2
已知fibonacci数列特性如下:从第3个数据项开始,是前两项之和。
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
编程输出fibonacci数列,直到数据项超过1000为止,并且,要求控制输出格式:每行输出5个,数据项对齐输出。
x=[0,1] i = 2 while True: q = x[i-2] + x[i-1] if q>1000: break x.append(q) i+=1 y = 0 for n in x: print(f'{n:5d}',end = ' ') y+=1 if y%5 ==0: print(end='\n')
3. 实验任务3
import random print('猜猜2021年5月哪一天是你的lucky day:') m = random.randint(1,31) i = 0 while i<3: x = int(input('你有三次机会,猜吧(1,31):')) if x==m: print('恭喜你猜中啦') break elif x<m: print('猜早啦,你的lucky day还早呢') elif x>m: print('猜晚啦,你的lucky day 还在前面呢') i +=1 else: print('次数用完啦') print(f'2021年5月你的幸运日是{m}号')
4. 实验任务4
x,y= eval(input('输入十进制整数x和要转换的进制n:')) s = [] l = [] while x//y!=0 : b = x//y a = x%y x = b s.append(a) l.append(b) s.append(b) m = s[::-1] for i in m: print(i,end='')