练习4: 程序的控制结构 (第4周)

练习4: 程序的控制结构 (第4周)

整数加减和

描述
编写程序计算如下数列的值:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

1-2+3-4…966‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

其中,所有数字为整数,从1开始递增,奇数为正,偶数为负

#Week4Test.py
sumA,sumB = 0,0
for i in range(1,967,2):
    sumA += i
for j in range(2,967,2):
    sumB += j
sumC = sumA - sumB
print(sumC)

100以内素数之和

描述
求100以内所有素数之和并输出。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
素数指从大于1,且仅能被1和自己整除的整数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

提示:可以逐一判断100以内每个数是否为素数,然后求和。

#Week4TestPrime.py
#素数从2开始,先加上,最后一个是97,偶数肯定不是,步长为2
sumPrime = 2
for i in range(3,98,2):
    for j in range(2,i):
        #可以被整除就不是素数
        if i % j == 0:
            break
        #i是素数
        elif j == i-1:
            sumPrime += i
            #print(i)
print(sumPrime)

合格率计算

练习4: 程序的控制结构 (第4周)_第1张图片

#Week4TestPassRate.py
#合格标准
Line = eval(input())
#再次输入
TempStr = input()
Count,PassNUM = 0,0
#每输如一个数进行一次比较,比较完成后再次输入,如果不是空格则继续循环
#注意单引号里啥也没有
while TempStr != '':
    Count += 1
    num = eval(TempStr)
    if num >= Line:
        PassNUM += 1
    TempStr = input()
#为了防止只输入了及格线
if Count == 0:
    print("合格率为100.00%")
else:
    print("合格率为{:.2f}%".format(PassNUM / Count * 100))

四叶玫瑰数

描述
四叶玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数)

#Week4TestPower.py
for i in range(1000,10000):
    NUM = i
    SUM = 0
    for j in range(4):
        SUM += pow(NUM % 10,4)
        NUM //= 10
    if SUM == i:
        print(i)

用户登录(三次机会)

描述
给用户三次输入用户名和密码的机会,要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。
练习4: 程序的控制结构 (第4周)_第2张图片

#Week4TestLogin.py
Name = "Kate"
Code = "666666"
count = 0
for i in range(3):
    NameStr = input()
    CodeStr = input()
    if NameStr == Name and CodeStr == Code:
        print("登录成功!")
        break
    else:
        count += 1
if count == 3:
    print("3次用户名或者密码均有误!退出程序。")

测验2: Python基础语法(上) (第4周)

快乐的数字

描述

编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。

练习4: 程序的控制结构 (第4周)_第3张图片

当输入时快乐的数字时,输出True,否则输出False。

#TestHappyNum.py
#TestHappyNum.py
import time as t
start = t.perf_counter()
strNUM = input()
length = len(strNUM)
num = eval(strNUM)
result = 0
#找到快乐数或者超时退出
while result!= 1 and t.perf_counter() - start < 1.95:
    for i in range(length):
        #从个位数开始算,逐步除以10
        result += pow(num % 10,2)
        num //= 10
        if i == length - 1:
            if result == 1:
                print("True")
                break
            #还没有算到1,继续往下计算
            else:
                length = len(str(result))
                i = 0
                num = result
                #print(result)
                result = 0
if result != 1:
    print("False")
#TestHappyNumV2.py
num = eval(input())
Record = []
def ifHappyNum(n):
    #每重新调用一次数字就重新初始化一次
    sumNUM = 0
    lengthNUM = len(str(n))
    for i in range(lengthNUM):
        sumNUM = sumNUM + (n % 10) ** 2
        n //= 10
    #print(sumNUM)
    n = sumNUM
    #是快乐数
    if sumNUM == 1:
        return True
    #不是1,看看是否出现过,出现过则会出现循环,输出False
    elif sumNUM in Record:
        return False
    #不是1但是还没出现过,将数放入Record中,继续递归调用计算
    else:
        Record.append(sumNUM)
        #print(Record)
        return ifHappyNum(n)
#调用函数
RES = ifHappyNum(num)
print(RES)

递归调用的时候要return ifHappyNum(n)

#TestHappyNumV3.py
num = eval(input())
Record = []
while True:
    #每重新调用一次数字就重新初始化一次
    sumNUM = 0
    lengthNUM = len(str(num))
    for i in range(lengthNUM):
        sumNUM = sumNUM + (num % 10) ** 2
        num //= 10
    #print(sumNUM)
    num = sumNUM
    #是快乐数
    if sumNUM == 1:
        print("True")
        break
    #不是1,看看是否出现过,出现过则会出现循环,输出False
    elif sumNUM in Record:
        print("False")
        break
    #不是1但是还没出现过,将数放入Record中,继续递归调用计算
    else:
        Record.append(sumNUM)
        #print(Record)

练习4: 程序的控制结构 (第4周)_第4张图片

阶乘累计求和

描述
获得用户输入的整数n,输出 1!+2!+…+n!的值。

如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。

输入格式
使用input()获得系统输入,不增加额外的提示信息。
练习4: 程序的控制结构 (第4周)_第5张图片

#Test4Factorial.py
n = input()
def FactorialFun():
    sumFac,sumSum = 1,0
    for i in range(1,eval(n)+1):
        sumFac *= i
        sumSum += sumFac
    return sumSum
if n.isdigit() == False or eval(n)  <= 0:
    print("输入有误,请输入正整数")
else:
    result = FactorialFun()
    print(result)

n.isdigit()判断是否是数字

#CalFactorialV2.py
def Factorial(n):
    if n == 0:
        return 1
    return n * Factorial(n-1)

num = eval(input())
sumFac = Factorial(num)
print(sumFac)

做这道题的时候突然想递归了,但这个代码只是递归求阶乘n!而已

百分制到五级制的转换

描述
成绩分数百分制转为五级制的判断输出(建议使用异常处理try-except-else-finally)。

具体要求如下:

1)输入一个[0-100]内成绩数据,输出相应等级(A、B、C、D、E),如输入为99,第一行输出为“输入成绩属于A级别。”;

2)当输入数据为其他字符或者超过范围,则输出“输入数据有误!”;

3)当成绩等级为A、B、C、D,则换行输出“祝贺你通过考试!”;

4)使用finally实现无论输入任何数据,均在最后输出“好好学习,天天向上!

输入格式
输入一个正整数,输入使用input(),不要增加额外的提示信息,可以 eval(input()) 转换为正整数。

输出格式
具体输出请查看输入输出示例。
练习4: 程序的控制结构 (第4周)_第6张图片

#ScoreConvert.py
try:
    #如果输入非数字则会转到数据有误
    Score = eval(input())
    Qual = ''
    if 60 <= Score <= 100:
        if Score >= 90:
            Qual = 'A'
        elif Score >= 80:
            Qual = 'B'
        elif Score >= 70:
            Qual = 'C'
        elif Score >= 60:
            Qual = 'D'
        print("输入成绩属于{}级别。".format(Qual))
        print("祝贺你通过考试!")
    elif 0 <= Score < 60:
        Qual = 'E'
        print("输入成绩属于{}级别。".format(Qual))
    #数字超过范围
    else:
        print("输入数据有误!")
except NameError:
    print("输入数据有误!")
finally:
    print("好好学习,天天向上!")

你可能感兴趣的:(Python学习笔记)