实验三
# 基础操作联系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整数输出2:', 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))

# 基础操作练习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=' ')

# 基础操作练习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))

# 测试集合解析形式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

实验结论:
1.利用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,因为随机生成的整数可能重复,而列表不会容纳重复元素,因此会出现 len(s) < 5 的情况。
x = [] a = 0 b = 1 c = 0 x.append(a) x.append(b) while True: c = a + b a = b b = c if c < 1000: x.append(c) else: break count = 0 for i in x: print('{:>6}'.format(i), end='') count += 1 if count % 5 == 0: print('')

import random x = random.randint(1, 31) count = 0 info = eval(input('猜一下2021年5月你的幸运日吧^_^\n你只有三次机会哦!猜吧(1~31):')) if info == x: print('Bingo!') exit() else: count += 1 while count < 3: if info < x: print('早啦早啦,填早啦!你的幸运日还早呢~') elif info > x: print('晚啦,你的幸运日比你想象的还要早哦~') else: print('Bingo!') exit() info = eval(input('再猜再猜:')) count += 1 else: if info < x: print(f'早啦早啦,填早啦!你的幸运日还早呢~\n次数用完啦\n2021年5月你的幸运日是{x}号') elif info > x: print(f'晚啦,你的幸运日比你想象的还要早哦~\n次数用完啦\n2021年5月你的幸运日是{x}号') else: print('Bingo!') exit()

while True: num = [i for i in range(0, 10)] alpha = [chr(i) for i in range(65, 91)] data = num + alpha print('\n', '{:-^40}'.format('转换器重置')) list1 = [] x, n = eval(input('输入十进制整数x和要转换的进制n:')) while x != 0: list1.append(data[x % n]) x = x // n print(f'{x}的{n}进制是:', end='') list1 = list1[::-1] for i in list1: print(i, end='')

实验总结:
通过这次实验,我学习到了随机数的生成、遍历列表的嵌套以及集合解析,我发现条条大路通罗马,问题的解决确实有很多很多方法,通过和同学交流总是能有耳目一新的感觉。
与此同时,我理解了Python之禅中“扁平胜于嵌套”和“间隔胜于紧凑”的意义,“扁平胜于嵌套”是说优美的代码应当是扁平的,不能有太多的嵌套,太多的嵌套不仅会导致编程时逻辑不清甚至混乱,而且会导致在后期修改编码时“牵一发而动全身”,十分麻烦;“间隔胜于紧凑”是说优美的代码有适当的间隔,不要奢望一行代码解决问题,紧凑虽然简洁,但是不便于阅读和修改。

浙公网安备 33010602011771号