python循环阶段练习题

  1. (在金字塔模式中显示数字)编写一个嵌套for循环来显示下面的输出
    integer = int(input("Enter the number of lines:"))
    i = integer + 30
    for j in range(1,integer+1):
        # 输出空格
        for k in range(1,i):
            print(" ",end = "")
            k += 1
        i -= 2
        a = 1
        for x in range(1,j,1):
            print(a,end = " ")
            a *=  2
        a //= 2
        for x in range(j-2,0,-1):
            a //= 2
            print(a,end = " ")
        print()

  2. (显示再2和1000之间的素数)显示在2和1000之间(包括2和1000)的素数,每行显示8个素数
    # 45
    for i in range(2,1001):
        flag = 1
        for j in range(2,i-1):
            if(i % j == 0):
                flag = 0
                break;
        if(flag):
            print(i,end = " ")

  3. 根据公式计算i=10000、20000……1000000时Π的近似值
    #46
    for i in range(10000,100001,10000):
        pi = 0
        for j in range(1,i+1):
            pi += (-1 ** (i+1))/(2 * i - 1)
        print("{}的Π值为{}".format(i,4 * pi))

  4. 根据公式计算i=10000、20000……1000000时e的近似值
    #47
    sum = 1
    e = 1
    item = 1
    for i in range(1,100001):
        sum *= i
        item = 1 / sum
        e += item
        if (i % 10000 == 0):
            print("{}的近似值e为:{}".format(i,e))
    

  5. 求小于10000的完全数。(四个)
    #48
    for i in range(2,10000):
        sum = 1
        for j in range(2,i // 2 + 1):
            if i % j == 0:
                sum += j
        if sum == i:
            print(i,sum)

  6. 石头剪刀布游戏,计算机或用户赢得游戏超过两次的一方胜利
    #49
    import random
    guess_count = 0
    computer_count =0
    a = ["scissor","rock","paper"]
    while(computer_count != 2 and guess_count != 2):
        computer = int(random.uniform(0,2))
        print(computer)
        guess = int(input("scissor (0),rock (1),paper (2):"))
        if computer == 0 and guess == 1 or computer == 1 and guess == 2 or computer == 2 and guess == 0:
            guess_count += 1
        else:
            computer_count += 1
    if(computer_count == 2):
        print("computer win")
    else:
        print("you win")

  7. 输入多个数(0作为结束标志),求出最大值以及最大值出现的次数
    #50
    max = 0
    count = [0]
    i = int(input("请输入一个整数:"))
    while(i != 0):
        for j in range(1,i+1):
            count.append(0)
        print(i,end = " ")
        count[i] += 1
        if(max <= i):
            max = i
        i = int(input("请输入一个整数:"))
    print("最大值是{},出现次数为:{}次".format(max,count[max]))

  8. 十进制转二进制
    #51
    integer = int(input("请输入一个二进制数:"))
    print(integer,"的二进制为:",end = " ")
    value = 0
    basic = 1
    while(integer):
        value = value * 10 + integer % 2
        if(integer % 2 == 0 and value == 0):
            basic *= 10
        integer //= 2
    value1 = 0
    while(value):
        value1 = value1 * 10 + value % 10
        value //= 10
    print(value1 * basic)

  9. 十进制转十六进制
    # 52
    print(hex(int(input("请输入一个十进制整数:"))))

  10. 蒙特卡罗模拟,编写程序:随机产生点,求出点落在奇数区域的概率

    # 53
    import random
    count=0
    times = 1000000
    for i in range(times):
      x,y=random.random(),random.random()
      if x < 0.5:
        count += 1
      if x > 0.5 and x + y < 1.5 and y > 0.5:
        count += 1
    print("投掷一百万次,落在奇数区域的概率是:{}".format(count/times))
    
  11. 显示从2001年到2100年的所有闰年(每行十个)
    #54
    count = 0
    for i in range(2001,2101):
        if(i % 4 == 0 and i % 100 != 0 or i % 400 == 0):
            print(i,end = " ")
            count += 1
        if(count % 10 ==0):
            print()

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值