python - 第六次作业

目录

Demo01 摄氏温度转化为华氏温度

Demo02 计算圆柱体的体积

Demo03 将英尺数转换为米数

Demo04 计算小费

Demo05 对一个整数中的各位数字求和

Demo06 计算年数和天数

Demo07 计算能量

Demo08 分割数字

Demo12 最小数量的硬币

Demo13 正多边形的面积

Demo16 中彩票

Demo17 解一元二次方程

Demo19 未来是周几

Demo25 回文数 

Demo34 最大公约数I

Demo36 最小公倍数

Demo37 整数的素因子

Demo38 完全数

Demo40 计算π

Demo41 计算e

Demo43 组合问题I

Demo46 青蛙跳台阶 

Demo47 堆叠相加

Demo48 十进制转二进制

Demo49 二进制转十进制

Demo50 十进制转十六进制

Demo52 最长公共前缀

Demo53 子串出现的次数

Demo55 检测密码

Demo56 回文素数

Demo57 反素数

Demo58 双素数

Demo59 梅森素数

Demo60 平方根的近似求法

1、不死兔子。

2、输入字符串,判断该字符串是否是回文字符串。

3、给定一个正整数N,找出1到N(含)之间所有质数的总和。

4、求  a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

5、合并两个有序数组,合并后还是有序列表。

6、给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前。

7、给定一个非负整数数组A,该数组的元素都是从1~N的元素组成,现在发现其中确实一个,请找出这个确实的元素。

8、小明有一堆苹果,他每天吃掉这堆的一半加一个,等第六天,小明剩余1个苹果,问,这堆苹果共多少个?

控制台 - 英雄


Demo01 摄氏温度转化为华氏温度

celsius=float(input("请输入一个摄氏温度:"))
#温度转换公式
fahrenheit=(9/5)*celsius+32
print("该摄氏温度转换为华氏温度为:%.1f"%fahrenheit)

Demo02 计算圆柱体的体积

import math#引入数学库函数
radius,length=(input("请输入圆柱的半径和高,使用空格隔开:").split())
π=math.pi#定义Pi
area=float(radius)*float(radius)*π#计算底面积
volume=area*float(length)#计算体积
print("圆柱的底面积为:%.2f\n"%area,"圆柱的体积:%.2f"%volume)

Demo03 将英尺数转换为米数

temp=float(input("请输入英尺数:"))
m=temp*0.305#转换
print("米数为:%.4f"%m)

Demo04 计算小费

money1,temp=input("请输入小计和酬金率,两个数据用之间用空格分隔:").split()#使用split分隔字符串
tip=float(money1)*float(temp)*0.01#小费
money2=float(money1)+tip#合计金额
print("小费为:%.2f\n"%tip,"合计金额为:%.2f"%money2)

Demo05 对一个整数中的各位数字求和

num=int(input("请输入一个0-1000间的整数:"))
if num>=1000 or num<=0:
    print("输入错误")
else:
    U=num%100%10#个位
    S=num%100//10#十位
    H=num//100#百位
    print(str(U+S+H)+"\n"+"解释:\n"+str(num)+"各位数之和为"+str(H)+"+"+str(S)+"+"+str(U)+"="+str(U+S+H))

Demo06 计算年数和天数

minutes=int(input("请输入分钟数:"))
if minutes%(24*60)==0:
    temp=minutes//(24*60)#计算总天数
else:
    temp=minutes//(24*60)+1
year=temp//365#年数
day=temp%year#该年剩余天数
print("年份为:%d\n"%year,"天数为:%d"%day)

Demo07 计算能量

#定义变量
M = float(input("水量:"))
initialTemperature = float(input("初始温度:"))
finalTemperature = float(input("最终温度:"))
#使用公式进行计算
Q = M * (finalTemperature - initialTemperature) * 4184

print(f"所需能量为:{Q}")

Demo08 分割数字

#定义数值
num = int(input("请输入一个四位整数:"))
#个位
num_U = num % 10
#十位
num_S = num % 100 // 10
#百位
num_H = num % 1000 // 100
#千位
num_K = num // 1000
print(f"个位:{num_U}\n"f"十位:{num_S}\n"f"百位:{num_H}\n"f"千位:{num_K}")

Demo12 最小数量的硬币

num = float(input("请输入想要兑换硬币的金额:"))
#1元
value_1 = num // 1
#0.25元
value_025 = num % 1 // 0.25
#0.1元
value_01 = num % 1 % 0.25 // 0.1
#0.05元
value_005 = num % 1 % 0.1 // 0.05
#0.01元
value_001 = num % 1 % 0.1 % 0.05 // 0.01
print(f"{value_1}个一元硬币\n"f"{value_025}个两角五分硬币\n"f"{value_01}个一角硬币\n"f"{value_005}个五分硬币\n"f"{value_001}个一分硬币")

Demo13 正多边形的面积

import math


n , s = input("请输入边的条数与边的长,用空格相隔:").split()
area = (float(n) * float(s) ** 2) / (4 * math.tan(math.pi / float(n)))
print("面积为:%.2f"%area)

Demo16 中彩票

import random


#生成随机数
num_RAN = random.randint(10 , 99)
num = int(input("请输入一个数:"))
print(num_RAN)
#拆解随机数并组成列表
num_RAN_one = num_RAN // 10
num_RAN_two = num_RAN % 10
temp_RAN = [num_RAN_one , num_RAN_two]
#拆解输入的数
num_one = num //10
num_tow = num % 10
#判断并输出
if num_RAN == num :
    print("恭喜你,中了10000元!!!")
elif num_one in temp_RAN and num_tow in temp_RAN and num_one != num_tow:
    print("恭喜你,中了3000元!!") 
elif num_one in temp_RAN or num_tow in temp_RAN :
    print("恭喜你,中了1000元!")
else :
    print("谢谢惠顾。")

Demo17 解一元二次方程

a,b,c = input("请输入a、b、c三个数据,数据之间用空格分隔:").split()
r_1 = ( - float(b) + (float(b) ** 2 - 4 * float(a) * float(c)) ** 0.5) / (2 * float(a))
r_2 = ( - float(b) - (float(b) ** 2 - 4 * float(a) * float(c)) ** 0.5) / (2 * float(a))
if float(b) ** 2 - 4 * float(a) * float(c) > 0 :
    print(" %.2f"%r_1 , "\n" , "%.2f"%r_2 )
elif float(b) ** 2 - 4 * float(a) * float(c) == 0 :
    print("%.2f"%r_1)
else :
    print("无实数解")

Demo19 未来是周几

#循环判断输入数据
while True :
    day_t , day_f = input("请输入两个数据,分别表示今日星期几的数字和未来某天的天数,数据之间用空格分隔(0-6):").split()
    if int(day_t) > 6 or int(day_t) < 0 :
        print("输入错误请重新输入")
    else :
        break
#数值判断日期并输出
if int(day_t) + int(day_f) % 7 == 0 or int(day_t) + int(day_f) % 7 == 7 :
    print("星期日")
elif int(day_t) + int(day_f) % 7 == 1 :
    print("星期一")
elif int(day_t) + int(day_f) % 7 == 2 :
    print("星期二") 
elif int(day_t) + int(day_f) % 7 == 3 :
    print("星期三")
elif int(day_t) + int(day_f) % 7 == 4 :
    print("星期四")
elif int(day_t) + int(day_f) % 7 == 5 :
    print("星期五")
elif int(day_t) + int(day_f) % 7 == 6 :
    print("星期六")   

Demo25 回文数 

while True :
    num = int(input("请输入一个三位整数:")) 
    if num > 999 or num < 100 :
        print("请重新输入")
    else :
        break
num_H = num // 100
num_D = num % 100 // 10
num_S = num % 10
if int(str(num_H) + str(num_D) + str(num_S)) == int(str(num_S) + str(num_D) + str(num_H)) :
    print("该数字为回文数")
else :
    print("该数字不是回文数")
    

Demo34 最大公约数I

num_1 = int(input("请输入第一个正整数:"))
num_2 = int(input("请输入第二个正整数:"))
#取小的那个值以下的值进行判断
if num_1 >= num_2 :
    for i in range(1 , num_2 + 1) :
        #若该数可以同时被这两个数整除,则为公约数
        if num_1 % i == 0 and num_2 % i == 0 :
            #i逐渐增加,直到达到最大的公约数
            num = i
    print(f"最大公约数为:{num}")
if num_1 <= num_2 :
    for i in range(1 , num_1 + 1) :
        if num_1 % i == 0 and num_2 % i == 0 :
            num = i
    print(f"最大公约数为:{num}")

Demo36 最小公倍数

num_1 = int(input("请输入第一个正整数:"))
num_2 = int(input("请输入第二个正整数:"))
#取大的那个值后面的数进行判断
if num_1 >= num_2 :
    #最多到两数相乘
    for i in range(num_1 , num_2 * num_1 + 1) :
        if i % num_1 == 0 and i % num_2 == 0 :
            #从小的开始判断,满足条件则中断循环,就能拿到最小的那个公倍数
            num = i
            break
    print(f"最小公倍数为:{num}")
elif num_1 <= num_2 :
    for i in range(num_2 , num_1 * num_2 + 1) :
        if i % num_1 == 0 and i % num_2 == 0 :
            num = i
            break
    print(f"最小公倍数为:{num}")

Demo37 整数的素因子

num = int(input("请输入一个正整数:"))
#建立列表容纳因子
array = []
#存储输入的值
num_t = num
#定义循环变量并循环分解出因子
i = 2
while i <= num :
    if num % i == 0 :
        array.append(i)
        num //= i 
    else :
        i += 1
#输出
print(array)
temp = len(array)
print("解释:")
for i in array :
    if i < temp :
        print(f"{i} * " , end='')
    else :
        print(str(i) +" = "+str(num_t))

Demo38 完全数

num = int(input("请输入一个正整数:"))
array = []
#存储输入的值
num_t = num
#定义一个数用来储存因子和
sum = 0
#定义循环变量并循环分解出因子
i = 2
while i <= num :
    if num % i == 0 :
        array.append(i)
        num //= i 
    else :
        i += 1
for i in array :
    sum += i
#多加一个1,因为1能被除
if sum + 1 == num_t :
    print("yes")
else :
    print("no")

Demo40 计算π

i= int(input("请输入计算次数:"))
#定义数容纳累加后的值
temp = 1
#定义分子的幂
k = 1
#计算
for j in range(3 , 2 * i , 2) :
    temp = temp + ((- 1) ** k) / j
    k += 1
π = temp * 4
print(π)

Demo41 计算e

i= int(input("请输入计算次数:"))
temp = 1
e = 1
for j in range(1 , i + 1) :
    for k in range(1 , j + 1) :
        temp = temp * k
    e = e + 1 / temp
print(e)

Demo43 组合问题I

#定义一个数计算总个数
sum = 0
#两个循环,第一个输出前一个数,第二个输出后一个数,输出一次sum+1
for i in range(1 , 8) :
    for j in range(i , 8) :
        print(i , j)
        sum  += 1
print(sum)

Demo46 青蛙跳台阶 

def frog(n) :
    #一阶只有一种跳法
    if n == 1 :
        return 1
    #两阶只有两种跳法
    elif n == 2 :
        return 2
    #多阶,从最后一阶往回计算,跳一阶的数和跳两阶的数之和就是总的方法数
    else :
        return frog(n - 1) + frog(n - 2) 
print(f"一共有{frog(4)}种跳法")

Demo47 堆叠相加

a , n = input("输入两个数据分别为数字a和组数n,用空格分隔:").split()
#初始化和
sum = 0
#循环
for i in range(1 , int(n) + 1) :
    #字符串拼接后转换为整型计算
    sum  = sum + int(a * i)
print(sum)
print("解释:")
#输出解释
for j in range(1 , int(n) + 1) :
    if j < int(n) :
        print(f"{a}" * j + "+" , end='')
    else :
        print(f"{a}" * j + "=" + str(sum))

Demo48 十进制转二进制

#循环判断输入的数是否符合条件
while True :
    num = int(input("请输入一个正整数:"))
    if num % 1 == 0 :
        break
temp = []
#拆分为倒序的二进制
while num > 0 :
    temp.append(num % 2)
    num //= 2 
#反转列表为正确的顺序
temp.reverse()
#输出
for i in temp :
    print(i , end=" ")

Demo49 二进制转十进制

array = list(input('请输入一个二进制数:'))
#定义一个数容纳列表的长度
temp = len(array)
#初始化十进制的数
num_S = 0
#循环使用位阶计算该十进制数(累加)
for i in array :
    num_S += int(i) * (2 ** (temp - 1))
    temp -=1
print(num_S)

Demo50 十进制转十六进制

temp = list(input("请输入一个16进制的数:"))
#初始化十进制数
sum = 0
#计算列表中的元素个数
num = len(temp)
#循环计算,将字符串转换为整型计算
for i in temp :
    if i == "a" :
        sum += 10 * (16 ** (num - 1)) 
    elif i == "b" :
        sum += 11 * (16 ** (num - 1)) 
    elif i == "c" :
        sum += 12 * (16 ** (num - 1)) 
    elif i == "d" :
        sum += 13 * (16 ** (num - 1)) 
    elif i == "e" :
        sum += 14 * (16 ** (num - 1)) 
    elif i == "f" :
        sum += 15 * (16 ** (num - 1)) 
    #本来就是整形的直接计算
    else :
        sum += int(i) * (16 ** (num - 1)) 
    #位阶的幂
    num -= 1
print(sum)

Demo52 最长公共前缀

array_1 = list(input("请输入第一个字符串:"))
array_2 = list(input("请输入第二个字符串:"))
temp = []
i = 0
#如果两个列表同一位置的元素相同,则输入到第三个数组
while i < len(array_1)  :
    if array_1[i] == array_2[i] :
        temp.append(array_1[i])
        i += 1
    #一旦碰到不相同的,结束循环
    else :
        break
#输出
for i in temp :
    print(i , end="")

Demo53 子串出现的次数

while True :
    s1 = (input("请输入第一个字符串:"))
    s2 = (input("请输入第二个字符串:"))
    if len(s1) > len(s2) :
        break
count = s1.count(s2)
print(count)

Demo55 检测密码

password = input("请输入密码:")
#定义两个数用来容纳数组中的大写字母和数字个数
num1 = 0
num2 = 0
#判断大写字母和数字个数
for i in password :
    if i.isdecimal() :
        num1 += 1
    elif i.isupper :
        num2 += 1
#判断规则
if len(password) < 8 :
    print("No")
elif password.isalnum() == False :
    print("No")
elif num1 < 2 :
    print("No")
elif num2 < 2 :
    print("No")
else :
    print("Yes")
print(num1 , num2)

Demo56 回文素数

#函数检测素数
def is_sushu(num):
    for i in range(2, num // 2 + 1):
        if num % i == 0:
            return False
    return True
 
 #函数检测回文数
def is_huiwenshu(num):
    if str(num) == str(num)[::-1]:
        return True
 
#count统计回文数个数
count = 0
#定义用来循环每一个数的数,从2开始
num = 2
while count < 100:
    if is_sushu(num) and is_huiwenshu(num):
        print("%5d"%num, end=" ")
        count += 1
        #每10个换行
        if count % 10 == 0:
            print()
    num += 1

Demo57 反素数

#函数检测素数
def is_sushu(num):
    for i in range(2, num // 2 + 1):
        if num % i == 0:     
            return False
    return True

#反转列表并生成数字
def fanzhuan(num) :
    #拆分并生成列表
    temp = [int(i) for i in str(num)]
    #利用切片反转列表
    temp = temp[::-1]
    #整合列表中的数成为新的整数
    temp = [str(i) for i in temp]
    temp = int("".join(temp))
    return temp

#count统计反素数个数
count = 0
#定义用来循环每一个数的数,从2开始
num = 2
#输出
while num < 1000:
    if is_sushu(num) and is_sushu(fanzhuan(num)):
        print("%5d"%num, end=" ")
        count += 1
        #每10个换行
        if count % 10 == 0:
            print()
    num += 1
    

Demo58 双素数

#函数检测素数
def is_sushu(num):
    for i in range(2, num // 2 + 1):
        if num % i == 0:     
            return False
    return True

#定义用来循环每一个数的数,从2开始
num = 2

while num < 1000 :
    if is_sushu(num) and is_sushu(num + 2) :
        print(f"{num}和{num + 2}是一对双素数")
    num += 1

Demo59 梅森素数

#函数检测素数
def is_sushu(num):
    for i in range(2, num // 2 + 1):
        if num % i == 0:     
            return False
    return True

# 定于数循环
num = 2

#梅森数,是指形如2p-1的一类数,其中指数p是素数,常记为Mp。如果梅森数是素数,就称为梅森素数。
while num <= 31 :
    temp = 2 ** num - 1
    if is_sushu(temp) :
        print(f"{temp}是一个梅森素数")
    num += 1

Demo60 平方根的近似求法

# nextGuess=(lastGuess+n/lasetGuess)/2
#初始化数据
num = float(input("请输入一个数:"))
nextGuess = 0
lastGuess = 1
# 循环求值
while True :
    nextGuess = (lastGuess + num / lastGuess) / 2
    if nextGuess - lastGuess < 0.0001 :
        print(f"{nextGuess}是{num}的平方根的近似值")
        break
    lastGuess = nextGuess

1、不死兔子。

def rabbit(num) :
    if num == 1 or num == 2 or num == 3 or num == 4 :
        return 1
    else :
        return rabbit(num - 1) + rabbit(num - 4)
num = int(input("请输入时间(几个月):"))
print(rabbit(num))

2、输入字符串,判断该字符串是否是回文字符串。

array = (input("请输入一个字符串:"))
array = [str(i) for i in array]
print(f"原列表:{array}")
temp = array[: : -1]
print(f"翻转后:{temp}")
if array == temp :
    print("该字符串是一个回文字符串")
else :
    print("该字符串不是一个回文字符串")

3、给定一个正整数N,找出1到N(含)之间所有质数的总和。

#函数检测素数
def is_sushu(num):
    for i in range(2, num // 2 + 1):
        if num % i == 0:
            return False
    return True

#初始化数据
N = int(input("请输入一个数:"))
temp = 0
#循环求和
for i in range(1 , N + 1) :
    if is_sushu(i) :
        temp += i
#输出
print(temp)

4、求  a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

#初始化数据,分别是数,项数,容纳数的数组,各项和
while True :
    a = int(input("请输入一个数(1~9):"))
    if a <= 9 or a >= 1 :
        break
    else :
        print("输入错误,请重新输入")
temp = int(input("请输入想要计算的项数:"))
array = []
num = 0
#循环求和,每循环一次项加一位数
for i in range(temp) :
    array.append(a)
    #转换位字符类型才能进行拼接操作
    array = [str(i) for i in array]
    num += int(''.join(array))
print(num)

5、合并两个有序数组,合并后还是有序列表。

#初始化数组
array1 = input("请输入第一个数组:")
array2 = input("请输入第二个数组:")
#转换数组内每一个数据的类型为整型
array1 = [int(i) for i in array1]
array2 = [int(j) for j in array2]
#合并
for i in array2 :
    array1.append(i)
#插入排序
for i in range(len(array1) - 1) :
    for j in range(len(array1) - 1 , 0 , -1) :
        if array1[j] < array1[j - 1] :
            array1[j] , array1[j - 1] = array1[j - 1] , array1[j]
print(array1)

6、给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前。

#初始化数组并转换
A = input("请输入一个数组:")
A = [int(i) for i in A]
#插入排序
for i in range(len(A) - 1) :
    for j in range(len(A) - 1 , 0 , -1) :
        if A[j] < A[j - 1] :
            A[j] , A[j - 1] = A[j - 1] , A[j]
#初始化两个数组容纳奇数和偶数
temp_o = []
temp_j = []
#将奇数和偶数分离
for i in A :
    if i % 2 ==0 :
        temp_o.append(i)
    else :
        temp_j.append(i)
#将A数组清空
A = []
#奇数和偶数分开赋给A
for i in temp_o :
    A.append(i)
for j in temp_j :
    A.append(j)
print(A)

7、给定一个非负整数数组A,该数组的元素都是从1~N的元素组成,现在发现其中确实一个,请找出这个确实的元素。

#初始化数组并排序
A = input("请输入一个数组:")
A = [int(i) for i in A]
for i in range(len(A) - 1) :
    for j in range(len(A) - 1 , 0 , -1) :
        if A[j] < A[j - 1] :
            A[j] , A[j - 1] = A[j - 1] , A[j]

#函数二分法查找
def foud(A , left , right , aim) :
    if left > right:
        return -1
    middle = (left + right) // 2
    if A[middle] > aim:
        return foud(A, left, middle - 1, aim)
    elif A[middle] < aim:
        return foud(A, middle + 1, right, aim)
    else:
        return middle
    
aim = int(input("请输入目标数:"))
print(f"数组为:{A}")
print(f"该数在数组的第{foud(A , 0 , len(A) , aim) + 1}个")

8、小明有一堆苹果,他每天吃掉这堆的一半加一个,等第六天,小明剩余1个苹果,问,这堆苹果共多少个?

i = 1
num = 1
while i < 6 :
    num = (num + 1) * 2
    i += 1
print(num)

控制台 - 英雄

#初始化容纳用户信息的列表和字典
Users = []
user = {}


def Login_page() :
    '''
    功能:登陆页面
    返回选择的功能
    '''
    print()
    print()
    print('             英雄联盟商城登陆页面')
    print('- * - * - * - * - * - * - * - * - * - * - * -')
    print('                1、用户登录\n')
    print('                2、新用户注册\n')
    print('                3、退出系统\n')
    print('~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~')
    choice1 = int(input('(温馨提示)请输入您的选项:'))
    return choice1


def Home_page() :
    '''
    功能:商城页面
    返回选择的功能
    '''
    print()
    print()
    print('             英雄联盟商城首页')
    print('- * - * - * - * - * - * - * - * - * - * - * -')
    print('             1、进入英雄超市\n')
    print('             2、休闲小游戏\n')
    print('             3、退出登陆\n')
    print('~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~')
    choice2 = int(input('(温馨提示)请输入您的选项:'))
    return choice2


def List() :
    '''
    功能:英雄列表页面
    返回选择的功能
    '''
    print()
    print()
    print('				英雄商城英雄列表')
    print('~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~')
    print('编号  姓名     昵称     价格  库存  描述\n')
    print('1     纳尔   迷失之牙  3500  100  丛林不会原谅盲目与无知\n')
    print('2     锐雯   放逐之刃  4000  100  她是残忍高效的战士\n')
    print('3     薇恩   暗夜猎手  3500  100  这个世界不想人们想象的那么美好\n')
    print('4     扎克   生化魔人  3000  100  即使你没有脊柱,你也必须站起来\n')
    print('5     杰斯  未来守护者 2500  100  武装着睿智与魅力,你的选择没有错\n')
    print('~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~')
    choice3 = int(input('(温馨提示)请输入您要购买的英雄编号:'))
    return choice3


def Buy() :
    '''
    功能:确认支付页面
    返回选择是否支付
    '''
    print()
    print()
    print('				英雄商城购买英雄\n英雄购买票据')
    print('~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ *\n')
    print('     英雄名称:盲僧(史诗)')
    print('     英雄属性:生命值428(+85)/能量值200(+0)/移动速度425/攻击力55.8(+3.2)\n		攻击速度0.651(+3.1%)/护甲值24(+1.25)/攻击距离125\n')
    print('     英雄座右铭:一人之行可灭世,众人之勤可救世!')
    print('     英雄价格:3000')
    print('     活动折扣:9.5\n')
    print('插播广告:当风云变色,当流离失所,世界不再是旧日模样\n你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡')
    print('~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ *  ')
    choice4 = input('(温馨提示)请付款(y/n):')
    return choice4


def Receipt() :
    '''
    票据页面
    返回到首页页面

    '''
    print()
    print()
    print('				英雄商城购买英雄\n英雄购买票据')
    print('~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~\n')
    print('     英雄名称:九尾妖狐(史诗)')
    print('     英雄价格:10000')
    print('     活动折扣:9.5\n')
    print('     应付付款:9500')
    print('     实际付款:10000')
    print('     找零:500\n')
    print('插入广告:当风云变色,当流离失所,世界不再是旧日模样\n你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡')
    print('~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~')
    choice5 = input('(温馨提示)按任意键返回上一级菜单:') 
    return True


def Check_log(username , password) :
    '''
    功能:登陆
    参数username:传入用户输入的用户名
    参数password:传入用户输入的密码
    返回用户是否存在,密码是否正确
    '''
    global user
    global Users
    if username != user.get("username") :
        print("用户不存在,请注册。")
        return 0
    elif password != user.get("password") :
        print("密码错误请重新输入。")
        return 0
    else :
        print("登陆成功")
        return True


def Check_Sign(username , password) :
    '''
    功能:注册,并且存入账户信息
    参数username:传入用户输入的用户名
    参数password:传入用户输入的密码
    返回账户是否注册成功
    '''
    global user
    global Users
    if username == user.get("username") :
        print("用户已存在。")
        return 0
    elif len(password) <= 3 :
        print("密码长度不得小于三位。")
        return 0
    elif password != password2 :
        print("两次输入密码不同")
        return 0
    else :
        print("注册成功,请登录")
        user = {"username" : username , "password" : password}
        Users.append(user)
        return True
    
#弹出商城登陆页面,并用一个参数接选择的选项
temp1 = Login_page()
#循环,用于登陆和注册
while True :
    #选择1,即登陆。传入登陆函数用户名和密码用于检测书否登陆成功
    if temp1 == 1 :
        username = input("请输入用户名:")
        password = input("请输入密码:")
        num1 = Check_log(username , password)
        #检测成功,成功登录,结束循环,跳转商城首页并用一个参数接选择的选项
        if num1 :
            temp2 = Home_page()
            break
        #如果判定为不正确,则选择是否继续登陆,选择"n",则跳转回商城登陆页面
        elif num1 == 0 :
            cache1 = input("是否继续登录(y/n):")
            if cache1 == "n" :
                temp1 = Login_page()
    #选择2,即注册。传入用户名和密码用于注册一个新的账号
    elif temp1 == 2 :
        username = input("请输入用户名:")
        password = input("请输入密码:")
        password2 = input("请再次输入密码:")
        num2 = Check_Sign(username , password)
        #注册成功,跳转回商城登陆页面
        if num2 :
            temp1 = Login_page()
        #注册失败,重新注册
        elif num2 == 0 :
            print("请重新注册") 
    #选择3,即退出。
    elif temp1 == 3 :
        exit(0)
    #选择1,2,3以外的选项,重新输入
    else :
        print("输入错误,请重新输入")
        temp1 = Login_page()

#循环,登陆成功后进行其他的操作
while True :
    #如果选择1,即进入英雄列表
    if temp2 == 1 :
        #选择需要购买的英雄,并用一个参数接选项
        temp3 = List()
        #按照选择的英雄跳转到是否确认购买的页面
        if temp3 == 1 or temp3 == 2 or temp3 == 3 or temp3 == 4 or temp3 == 5 :
            #定义一个参数来接是否确认购买
            temp4 = Buy()
            #若确定,则跳转到票据页面
            if temp4 == "y" :
                #票据页面返回True,所以不论输入什么,都返回到商城首页
                if Receipt() :
                    temp2 = Home_page()
                break
            #若不确定,则返回到英雄列表
            elif temp4 == "n" :
                print("请选择需要的英雄:")
                continue
            #输入错误,也将返回到英雄列表
            else :
                print("输入错误,请重新选择英雄")
                continue
        #若不存在所选英雄,则重新选择
        else :
            print("输入错误,请重新输入")
    #暂时没有该功能
    elif temp2 == 2 :
        exit(0)
    #暂时没有该功能
    elif temp2 == 3 :
        exit(0)
    # 输入错误,重新选择功能
    else :
        print("输入错误,请重新输入")
        temp2 = Home_page()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值