【Python练习】task04-选择与循环结构

1.if语句实例:输入一个分数,给出五级记分制的成绩

a=float(input("输入所得分数"))
if a >= 90:
    print("A")
elif a>=80:
    print("B")
elif a>=70:
    print("C")
elif a>=60:
    print("D")
else:
    print("E")

2. if语句实例:输入一个分数,用一条if语句给出五级记分制的成绩

score=float(input("输入所得分数"))
grade='A' if score>=90 else 'B' if score>=80 else 'C' if score>=70 else 'D' if score>=70 else 'E'
print(grade)

3. 分别使用while循环和for循环计算1到100的和

i=s=0
while i<100:
    i+=1
    s+=i
print(s)

s=0
for i in range(1,101):
    s+=i
print(s)

4. 打印九九乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print(f'{i}x{j}={i*j}',end='\t')
    print()

5.打印斐波那契数列 1 1 2 3 5 8 13....打印36项,每行打印6个

f0,f1=1,1

print(f0,end='\t')
print(f1,end='\t')
for i in range(2,36):
    f2=f0+f1
    if i%6 == 0:print()
    print(f2,end='\t')
    f0,f1=f1,f2
else:
    print("打印完成")

6.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

a,b,c,d=0,0,0,0
s=input("输入一行字符")
for i in range(0,len(s)):
    if s[i].isalpha(): a+=1
    elif s[i].isdigit(): b+=1
    elif s[i]==' ': c+=1
    else: d+=1
print(a,b,c,d)

7.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

i=100
j=0
sum=0
for j in range(0,11):
    sum+=(i*2)
    i=i/2
    if j==10:
      print("共经过"+str(sum-100)+"米。")
      print("第十次反弹"+str(i)+"米")

 

 

8.输入两个年份,输出这两个年份(含)之间的闰年

a=int(input("请输入第一个年份:"))
b=int(input("请输入第二个年份:"))
i=0
for i in range(a,b+1):
    if i %4==0 & i %100 ==0 & i % 400 ==0:
        print(i,end="  ")

9.输入某年某月某日,判断这一天是这一年的第几天?

a=int(input("请输入年份:"))
b=int(input("请输入月份:"))
c=int(input("请输入某一天:"))
sum=0
sum1=0
if b > 12 or b <1:
    print("请输入正确月份!")
elif b==1:
    sum = 0
elif b==2:
    sum = 31
elif b==3:
    sum= 59
elif b==4:
    sum = 90
elif b==5 :
    sum = 120
elif b==6:
    sum = 151
elif b==7 :
    sum = 181
elif b==8:
    sum = 212
elif b==9 :
    sum == 243
elif b==10 :
    sum = 273
elif b==11:
    sum =304
elif b==12:
    sum = 334
if c <0:
    print("请输入正确日期!")
elif a % 4==0:
    if b ==2:
        if c> 29:
            print("请输入正确日期!")
        else:
            sum1 = sum+1+c
            print("这是"+str(a) + "年的第"+str(sum1)+"天" )
elif b==2:
    if c>28:
        print("请输入正确日期!")
    elif a % 4 == 0:
        sum1 = sum + 1 + c
        print("这是"+str(a) + "年的第"+str(sum1)+"天")
    else:
        sum1 = sum + c
        print("这是"+str(a) + "年的第"+str(sum1)+"天")
if  b in range(1,12,2) :
    if c > 31:
         print("请输入正确日期!")
    elif a % 4 == 0:
        sum1 = sum + 1 + c
        print("这是"+str(a) + "年的第"+str(sum1)+"天")
    else:
        sum1 = sum + c
        print("这是"+str(a) + "年的第"+str(sum1)+"天")
if  b in range(4,13,2):
    if c > 30:
        print("请输入正确日期!")
    elif a % 4 == 0:
        sum1 = sum + 1 + c
        print("这是"+str(a) + "年的第"+str(sum1)+"天")
    else:
        sum1 = sum + c
        print("这是"+str(a) + "年的第"+str(sum1)+"天")

10.阶乘计算。输入n,计算1+2!+3!+……n!的结果

a=int(input("请输入一个数字N:"))
sum=0
b=1
for i in range(1,a+1):
    b=b*i
    sum+=b
    if i == a:
       print(sum)

11.输入两个大于2的正整数,输出最大公约数和最小公倍数

a=int(input("请输入一个大于二的整数:"))
b=int(input("请输入另一个大于二的整数:"))
def gcd(a,b):
    if b == 0:
        return a
    return gcd(b, a%b)
print("最大公约数为"+str(gcd(a,b)))
def lcm(a,b):
    gcd = lambda a, b: a if b == 0 else gcd(b, a % b)
    return a*b//gcd(a,b)
print("最小公倍数为"+str(a*b//gcd(a,b)))

12.输出某个正整数的所有序列:序列的每个元素相邻且和为该正整数。阅读下面的代码与课本上第88页的例题进行比较和理解。

import math
x=100
y=[]
for i  in range(2,x//2):
    a,b=math.modf(x/i)
    if a and a-0.5:#如果a不等于0并且不等于0.5,肯定没有i个连续的整数和是x
        continue
    if a==0 and i%2==0:#如果a==0并且i被2整除,肯定没有i个连续的整数和是x
        continue
    if a==0:#如果x整除i,并且i不为偶数,则连续奇数个整数和为x,找出start 和 end
        start=x//i-i//2
        end=start+i+1
    elif a==0.5:#如果x除i是0.5,则连续偶数个整数和为x,找出start 和 end
        start=x//i-i//2+1
        end=start+i
    if start<=0:#排除start不符合要求的情况
        continue
    y.append(range(start,start+i))
for i  in y:
    print(*i)
else:
    print("已经没有满足条件的序列")
import math
def f():
    x=100
    y=[]
    for i  in range(2,x//2):
        a,b=math.modf(x/i)
        if a and a-0.5:#如果a不等于0并且不等于0.5,肯定没有i个连续的整数和是x
            continue
        if a==0 and i%2==0:#如果a==0并且i被2整除,肯定没有i个连续的整数和是x
            continue
        if a==0:#如果x整除i,并且i不为偶数,则连续奇数个整数和为x,找出start 和 end
            start=x//i-i//2
            end=start+i+1
        elif a==0.5:#如果x除i是0.5,则连续偶数个整数和为x,找出start 和 end
            start=x//i-i//2+1
            end=start+i
        if start<=0:#排除start不符合要求的情况
            continue
        y.append(range(start,start+i))
    for i  in y:
        print(*i)
    else:
        print("已经没有满足条件的序列")

%time f()

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天的命名词

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值