wxqsdmn

实验三

一、实验内容

     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

           编写一个简单的猜日期程序。具体要求如下:
           1.使用随机函数,生成1~31之间的一个随机整数作为5月的lucky day
           2.用户有三次猜日期机会。根据用户输入的日期,提示用户猜的日期是猜中了,或是,早或晚。
           3.如果用户已经猜中了,则无需打印输出luck day。
           4.如果用户用光三次机会也没有猜中,那么,就打印输出用户在5月的lucky day。
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

      编程实现一个十进制到二进制、八进制、十六进制的转换程序。
      要求:
              1.不使用Python标准库提供的进制转换工具,根据进制转换计算规则自行设计算法并实现。
              2.从键盘输入十进制数据x和转换的进制n(n取2或8或16),打印输出x的n进制表示。

 

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='')

 

 

posted on 2021-04-21 23:05  wxqsdmn  阅读(12)  评论(1编辑  收藏

导航