实验03、选择与循环(11题)

【实验目标】 1)熟练掌握Python选择结构与循环结构语法,理解缩进的作用。
2)熟练运用for循环和while循环,理解带有else子句的循环语句执行流程。
3)理解break语句和continue语句在循环中的作用。 4)理解并能够熟练设计条件表达式。 【学习重点】
and不一定是布尔值、for和while中else用法。 【实验内容】

“”“1、(选择,教材习题4.2)编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。
提示:如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。”""

"""x = input('请输入一个4位数年份:')
x = int(x)
if x%400==0 or (x%4==0 and not x%100==0):
    print('YES')
else:
    print('NO')""
    

“”"“2、(循环,教材习题4.4)编写程序,生成一个包含50个随机整数的列表,然后删除其中所有奇数。提示:从后向前删除。 “””
“”"

import random
x = [random.randint(0,100) for i in range(50)]
print(x)
for i in range(len(x))[::-1]:  #切片
    if x[i]%2==1:
        del x[i]
print(x)

“”"
“”“3、(教材习题4.5)编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。
提示:使用切片
“””
“”"

import random
x = [random.randint(0,100) for i in range(20)]
print(x)
x[::2] = sorted(x[::2],reverse=True)
print(x)

“”"
“”“编写程序,至少使用2种不同的方法计算100以内所有奇数的和。
“””
“”"

print(sum([i for i in range(1,100) if i%2==1]))
print(sum(range(1,100)[::2]))

“”"
“”"5、(教材习题4.9)编写程序,实现分段函数计算,如下表所示。

x y
x<0 0
0<=x<5 x
5<=x<10 3x-5
10<=x<20 0.5x-2
20<=x 0
“”"
“”"

x = input('please input x:')
x = eval(x)
if 0<=x<5:
    print(x)
elif 5<=x<10:
    print(3*x-5)
elif 10<=x<20:
    print(0.5*x-2)
else:
    print(0)

“”""""
1、(条件+循环,教材习题4.6)编写程序,用户从键盘输入小于1000的整数,对其进行因式分解。
例如,10=2×5,60=2×2×3×5。
“”"
“”"

x = input('请输入一个小于1000的整数:')
x = eval(x)
t = x
i = 2
result = []
while True:
    if t==1:
        break
    if t%i==0:
        result.append(i)
        t=t//i
    else:
        i+=1
print(x,'=','*'.join(map(str,result)))

“”"

“”"

2、10的阶乘(循环crr118)
“”"
“”"

fac = 1
for i in range(1,3):
    fac = fac*i
print("1*2*3..*10=",fac)

“”"
“”"
3、计算糖果总数(循环 crr127)
编写程序,计算糖果总数。假设有一盒糖果,按照如下方式从中取糖果: 1个1个地取,正好取完。 2个2个地取,
还剩1个。 3个3个地取,正好取完。 4个4个地取
,还剩1个。 5个5个地取,还差1个。 6个6个地取,还剩3个。 7个7个地取,正好取完。 8个8个地取
,还剩1个。 9个9个地取,正好取完。 请问:这个盒子里一共有多少个糖果?

“”"
“”"

n = 1
while 1:
    if n%2==1 and n%3==0 and n%4==1 and n%5==4 and n%6==3 and n%7==0 and n%8==1 and n%9==0:
        print("这里有{} 糖果 在盒子里.".format(n))
        break
    else:
        n=n+1

“”"
“”"
编写程序,计算“五天向上”和“两天向下”两种情况下的武力值。假设一年有365天,
郭大侠第一天的武力值为1。如果郭大侠每天勤于练功,每天武力值相比前一天会增加1%;
如果郭大侠每天不练功,每天武力值相比前一天会减少1%。郭大侠制订了一年的练功计划:
从第一天开始,前5天每天都练功,然后休息2天;接来下又练功5天,休息2天;
如此往复,请计算一年后,郭大侠的最终武力值(结果保留2位小数)。

“”"

“”"

star = 1
for i in range(1,366):
    if i%6==0 or i%7==0:
        star = star*(1-0.01)
    else:
        star = star*(1+0.01)
print("一年后,功力={:.2f}".format(star))

“”"
“”"
5、谁是小偷 (crr62)
警察抓了A、B、C、D四个偷窃嫌疑犯,其中只有一个人是真正的小偷,审问记录如下:
A说:“我不是小偷。”
B说:“C是小偷。”
C说:“小偷肯定是D。”
D说:“C在冤枉人。”
已知四个人中有三个人说的是真话,一个人说的是假话。请问到底谁是小偷?
“”"
“”"

l = ['A','B','C','D']
for x in l:
    if (x!='A') + (x=='C') + (x=='D') + (x!='D') == 3:
        print("小偷是:",x)
    break

“”"

“”"
6、列表二分查找(crr65)
二分查找是一个经典的算法,用来在有序的一组数中快速找到待查找的数。所谓“二分”,
就是每次操作都将查找范围一分为二,即将查找区间缩小一半,直到找到或查询了所有区间都没有找
到要查找的数据为止。利用二分查找法,查找[34, 64, 67, 72, 73, 82, 83, 85, 87, 88, 90, 91,
96, 98]中指定数字的索引号。
“”"

ls = [34, 64, 67, 72, 73, 82, 83, 85, 87, 88, 90, 91, 96, 98]
x = int(input("请输入待查找的数:"))
low = 0
high = len(ls)-1
while low<=high:
    mid = (low+high)//2
    if ls[mid]<x:
        low = mid +1
    elif ls[mid]>x:
        high = mid-1
    else:
        print("The number {} is found,and the index is {}!".format(x,mid));
        break;
else:
    print("There is no{} in the list.".format(x))
  • 9
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值