实验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进制到其他进制之间的转换,希望自己能改进写出进制之间相互转换的程序。

 

posted @ 2021-04-17 21:45  Vat-  阅读(116)  评论(1)    收藏  举报