python程序设计基础上机题5.16-----5.26(2)

 python上机练习题(——2022年5月15日)

目录

第一题 斐波那契数列(递归)

第二题 汉诺塔(递归)必考题

第三题 使用二分法查找法在data_list中查找关键词key

 第四题 使用顺序查找法在data_list中查找关键词key

 第五题 无序列表data_list中查找关键词key

 第六题 操作文件指针,将建立的p.txt 文件中的诗名和最后一句诗的内容输出,并最终输出全部诗的内容

第七题 从键盘输入需输入的学生人数,并输入若干学生的学号、姓名、成绩,保存到stu.txt 中,一行保存一个学生的信息,之间用逗号分割,在文件stu.txt第一行的内容是:学号、姓名、成绩

第八题 打开文件p.txt,将其中的诗输出

第九题 将诗词内容写入到c盘p.txt 文件中

第十题  将文件com1.txt 的字符串前加上序号1、2、3、… 

第十一题 请用随机函数产生500行1-100之间的随机整数存入文件random.txt中,编程寻找这些整数的众数并输出,众数即为一组数中出现最多的数。


第一题 斐波那契数列(递归

def fibo(n):
    if n<=1:
        return n
    else:
        return(fibo(n-1)+fibo(n-2))
if __name__=="__main__":
    n=int(input("您要输入几项?"))
    if n<=0:
        print("请输入正数")
    else:
        print("斐波那契数列:")
        c=0
        for i in range(n):
            c+=1
            if c%5==0:
                print(fibo(i),end="\n")
            else:
                print(fibo(i),end=' ')

第二题 汉诺塔(递归必考题

def hanoi(a,b,c,n):
    if n==1:
        print(a,'->',c)
    else:
        hanoi(a,c,b,n-1)
        print(a,'->',c)
        hanoi(b,a,c,n-1)
n=int(input("input the number of plates:"))
hanoi('a','b','c',n)

第三题 使用二分法查找法在data_list中查找关键词key

def search(data_list,key):
    low=0
    high=len(data_list)-1
    while low<=high:
        mid=(low+high)//2
        if data_list[mid]==key:
            return mid
        elif data_list[mid]>key:
            high=mid-1
        else:
            low=mid+1
    return 0
if __name__=="__main__":
    r=[11,22,33,44,55,66,77,88]
    k=int(input("请输入要查的数:"))
    indexnum=search(r,k)
    print("原始数序列为:"+str(r))
    if indexnum==0:
        print("没有找到!")
    else:
        print("位置为:"+str(indexnum+1))
    

 第四题 使用顺序查找法在data_list中查找关键词key

def search(data_list,key):
    for i in range(len(data_list)):
        if data_list[i]==key:
            return i
        return 0
if __name__ == "__main__":
    r=[11,22,33,44,55,66,77,88]
    k=int(input("请输入要查的数:"))
    indexnum=search(r,k)
    print("原始数序列为:"+str(r))
    if indexnum==0:
        print("没有找到!")
    else:
        print("位置为:"+str(indexnum+1))

 第五题 无序列表data_list中查找关键词key

def search(data_list,key):
    for i in range(data_list,key):
        if(data_list[i]==key):
            print("匹配成功!位置在:"+str(i+1))
            return 0
    return 1
r=eval(input("请输入一些数:"))
k=int(input("请输入要查找的数:"))
print("原始序列为"+str(r))
i=search(r,k)
if i:
    print("匹配失败!")

 第六题 操作文件指针,将建立的p.txt 文件中的诗名和最后一句诗的内容输出,并最终输出全部诗的内容

with open("c:p.txt") as f:
    print("打开文件时,文件指针的位置:",f.tell())
    print("诗名为:",f.read(5))
    print("从文件开始读取5个字符后,文件指针的位置:",f.tell())
    f.seek(60)
    print("最后一句诗为:",f.read(7))
    print("输出最后一句诗后,文件指针的位置:",f.tell())

f=open("c:\p.txt")
print("诗名为:\n",f.read())
f.close()

第七题 从键盘输入需输入的学生人数,并输入若干学生的学号、姓名、成绩,保存到stu.txt 中,一行保存一个学生的信息,之间用逗号分割,在文件stu.txt第一行的内容是:学号、姓名、成绩

n=int(input("请输入学生人数:"))
f=open("c:\stu.txt","w")
f.write("学号、姓名、成绩\n")
for i in range(1,n+1):
    id,name,score=input("请输入第"+str(i)+"行:").split()
    f.write(id+","+name+","+str(score)+"")
    f.write("\n")
f.close()
f=open("c:\stu.txt")
print("输入内容为:\n",f.read())
print("f.close()的位置",f.tell()) 

第八题 打开文件p.txt,将其中的诗输出

f=open("c:\p.txt")
print("诗名为:\n",f.read())
f.close()

第九题 将诗词内容写入到c盘p.txt 文件中

pe={"北国风光\n","千里冰封\n"   
       "万里雪飘\n",                         
       "望长城内外\n",                       
       "惟余莽莽\n"}
f=open("c:\p.txt","w")
f.writelines(pe)                                      
print("ok!")
f.close()                                                

第十题  将文件com1.txt 的字符串前加上序号1、2、3、… 

f= open('c:\p.txt', 'r+')
lines = f.readlines()
for i in range(0, len(lines)):
      lines[i] = str(i+1) + ' ' + lines[i]
f.seek(0)
f.writelines(lines)
f.close()

第十一题 请用随机函数产生500行1-100之间的随机整数存入文件random.txt中,编程寻找这些整数的众数并输出,众数即为一组数中出现最多的数。

# prog7_3.py
import random
with open('random.txt', 'w+') as fp:
    for i in range(500):
         fp.write(str(random.randint(1, 100)))
         fp.write('\n')
    fp.seek(0)
    nums = fp.readlines()	
nums = [num.strip() for num in nums]
setNums = set(nums)
lst = [0] * 101
for num in setNums:
    c = nums.count(num)
    lst[int(num)] = c
for i in range(len(lst)):
    if lst[i] == max(lst):
        print(i)

附录第一次链接

   python上机练习题(——2022年5月15日)


版权声明:本文为m0_56628676原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。