实验3练习
实验任务1:
task1_1.
x=list(range(10)) print(f"整数输出1:",end="") for i in x: print(i,end=" ") print("\n整数输出2:",end="") for i in x: print(f"{i:02d}",end="-") 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)] print("-".join(y1)) print("字符输出2:",end="") y2=[str(i).zfill(2) for i in range(10)] print("-".join(y2))
task1_2
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)] for i in lower_alpha: print(i, end = " ") print("\n字符列表2: ") upper_alpha = [i.upper() for i in lower_alpha] for i in upper_alpha: print(i, end = " ")
task1_3
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?
答:在python中的random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是
上限,生成的随机数n: a <= n <= b。即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。
实验任务2:
已知fibonacci数列特性如下:从第3个数据项开始,是前两项之和。
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
编程输出fibonacci数列,直到数据项超过1000为止,并且,要求控制输出格式:每行输出5个,数据项
对齐输出。
x1=0 x2=1 i=x2 count=2 print(f"{x1:>10} {x2:>10}",end=" ") while i<=1000: x1,x2=x2,i print(f"{i:>10}",end=" ") i=x1+x2 count +=1 if count %5==0: print(end="\n")
实验任务3:
编写一个简单的猜日期程序。具体要求如下:
1:使用随机函数,生成1~31之间的一个随机整数作为5月的lucky day
2:用户有三次猜日期机会。根据用户输入的日期,提示用户猜的日期是猜中了,或是,早或晚。
3:如果用户已经猜中了,则无需打印输出luck day。
4:如果用户用光三次机会也没有猜中,那么,就打印输出用户在5月的lucky day。
import random x=random.randint(1,31) print(x) c=eval(input("猜猜2021年5月那一天会是你的lucky day:)你有三次机会,猜吧(1,31):")) i=1 while i<3: if c<x: print("猜早啦,你的lucky day还早呢") c=eval(input("再猜再猜:")) i+=1 elif c>x: print("猜晚啦,你的lucky day在前面") c=eval(input("再猜再猜:")) i+=1 else: print("猜对啦") i=4 if i==3 and c<x: print("猜早啦,你的lucky day还早呢,前面次数用完啦") print(f"2021年5月你的lucky day 是{x}号") elif i==3 and c>x: print("猜晚啦,你的lucky day在前面,前面次数用完啦") print(f"2021年5月你的lucky day 是{x}号") else: print("猜对啦")
实验任务4:
编程实现一个十进制到二进制、八进制、十六进制的转换程序。
要求:
1;不使用Python标准库提供的进制转换工具,根据进制转换计算规则自行设计算法并实现。
2:从键盘输入十进制数据x和转换的进制n(n取2或8或16),打印输出x的n进制表示。
s="Remote Interpreter Reinitialized" print(f"{s:*^38}") x,y=eval(input("输入十进制整数x和需要转化的进制n(2或8或16):")) x2,y2=x,y i=1 list=[] list1=["A","B","C","D","E","F"] while i>0: x1=i i=x//y c=x%y x=i if i!=0 and c>=10: c=list1[c-10] list.append(c) elif i!=0 and c<10: list.append(c) else: if x1>10: x1=list1[x1-10] list.append(x1) else: list.append(x1) list.reverse() print(f"{x2}的{y2}进制是",end=":") for i in list: print(f"{i}",end="") # 该程序符合10进制整数在16及以下任意进制的转换。
五,实验总结:
我觉得实验一的输出方式对于日常的使用很有帮助,实验二的着重点在于换行的操作,实验四的程序仅仅是10进制到其他进制之间的转换,希望自己能改进写出进制之间相互转换的程序。