Python循环训练

第1关 正整数n以内累加求和

1
2
3
4
5
6
7
8
9
10
11
12
###begin
n=int(input())
sum1=0
sum2=0
for i in range(1,n+1):
    if i%2!=0:
        sum1+=i
    else:
        sum2+=i
print(sum1,sum2)

###end

第2关 整数的条件判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
###begin
list1=[]
for i in range(1,101):
    if i%7==0 and i%5!=0:
        list1.append(i)
print(",".join(map(str,list1)))

list2=[]
for i in range(1,501):
    if i%17==0:
        list2.append(i)
print(max(list2))


###end

第3关 素数判断

1
2
3
4
5
6
7
8
9
10
11
12
13
###begin
x = int(input())
if x < 2:
    print('False')
else:
    for i in range(2, x):
        if x % i == 0:
            print('False')
            break
    else:
        print('True')

###end

第4关 循环之序列解包

1
2
3
4
5
6
7
8
9
10
###begin
def print_combinations(string):
    for i in range(len(string)):
        print(string[i], [char for char in string[i+1:]])

# Test input
str=input()
# Output format
print_combinations(str)
###end

第5关 求n以内的所有自幂数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
###begin
def Judgement(num):
    str_num=str(num)
    num_digits=len(str_num)
    sum_of_powers = sum(int(digit) ** num_digits for digit in str_num)
    return sum_of_powers == num

def Find(n):
    list1=[]
    for num in range(1,n+1):
        if Judgement(num):
            list1.append(num)
    return list1
n=int(input())
list1=Find(n)
print(" ".join(map(str,list1)))
###end

第6关 打印九九乘法表

1
2
3
4
5
6
7
8
###begin
for i in range(1,10):
    for j in range(1,i+1):
        str = f"{i}*{j}={i*j}"
        print(f"{str:7}", end=" ")
    print()

###end

第7关 数字组合

1
2
3
4
5
6
7
8
###begin
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i!=j and j!=k and i!=k:
                print(i*100+j*10+k)

###end

第8关 阶乘之和

1
2
3
4
5
6
7
8
9
10
11
12
13
###begin
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

n=int(input())
sum=0
for i in range(1,n+1):
    sum+=factorial(i)
print(sum)
###end

第9关 因式分解

1
2
3
4
5
6
7
8
9
10
11
12
13
####begin
n=int(input())
factors=[]
i=2
while i<=n:
    if n%i==0:
        factors.append(i)
        n=n//i
    else:
        i+=1
print("*".join(map(str,factors)))

####end

元组与字典

第1关 元组的使用:这份菜单能修改吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# coding=utf-8
# 创建并初始化menu_list列表
menu_list = []
while True:
    try:
        food = input()
        menu_list.append(food)
    except:
        break

# 请在此添加代码,对menu_list进行元组转换以及元组计算等操作,并打印输出元组及元组最大的元素
###### Begin ######
menu=tuple(menu_list)
print(menu)
print(max(menu))

#######  End #######

第2关 字典的使用:这份菜单可以修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# coding=utf-8
# 创建并初始化menu_dict字典
menu_dict = {}
while True:
    try:
        food = input()
        price = int(input())
        menu_dict[food]= price
    except:
        break
# 请在此添加代码,实现对menu_dict的添加、查找、修改等操作,并打印输出相应的值
########## Begin ##########
menu_dict['lamb']=50
print(menu_dict['fish'])
menu_dict['fish']=100
del menu_dict['noodles']
print(menu_dict)

########## End ##########

第3关 字典的遍历:菜名和价格的展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# coding=utf-8



# 创建并初始化menu_dict字典
menu_dict = {}
while True:
    try:
        food = input()
        price = int(input())
        menu_dict[food]= price
    except:
        break

# 请在此添加代码,实现对menu_dict的遍历操作并打印输出键与值
########## Begin ##########
for key in menu_dict.keys():
    print(key)
for value in menu_dict.values():
    print(value)

########## End ##########

第4关 嵌套 - 菜单的信息量好大

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# coding=utf-8
# 初始化menu1字典,输入两道菜的价格
menu1 = {}
menu1['fish']=int(input())
menu1['pork']=int(input())

# menu_total列表现在只包含menu1字典
menu_total = [menu1]

# 请在此添加代码,实现编程要求
########## Begin ##########
menu2 = menu1.copy()
for value in menu2:
    menu2[value] = menu2[value]*2
menu_total.append(menu2)


########## End ##########

# 输出menu_total列表
print(menu_total)

python基础(5-2)列表、元组、字典、集合——元组

第1关 列表转元组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#此部分为读入测试数据到list1中
list1 = []
while True:
    try:
        item= input()
        list1.append(item)
    except:
        break

######### Begin ##########
#将读入的list1转换为tup并整体打印
list1=tuple(list1)
print(list1)

##########  End  #########

第2关 字符串按单词转元组

1
2
3
4
5
6
7
8
#此部分为读入测试字符串到变量s中
s= input()
##########  Begin  #########
#将读入的s按单词转换为tup并整体打印
s=s.split()
print(tuple(s))

##########  End  #########

第3关 在元组中找最大值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#此部分为读入测试数据到list1中
list1 = []
while True:
    try:
        n= int(input())
        list1.append(n)
    except:
        break
##########  Begin  #########
#(1)定义元组,将list1中元素按顺序保存在元组中,输出整个元组
list1=tuple(list1)
print(list1)
#(2)查找元组中最大值,输出最大值和对应下标
print(max(list1),list1.index(max(list1)))

##########  End  #########

第4关 盘点订单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#此部分为读入订单测试数据到list1中
list1 = []
while True:
    try:
        order= input()
        list1.append(order)
    except:
        break

##########  Begin  #########
#(1)定义元组,将list1中元素按顺序去掉重复值并保存在元组中,输出整个元组
list2=[]
for i in list1:
    if i not in list2:
        list2.append(i)
list3=tuple(list2)
print(list3)
#(2)查找最大当日订单数,并输出年月日:格式如下:180101
date_dict={}
for date in list2:
    date=date[:6]
    if date in date_dict:
        date_dict[date]+=1
    else:
        date_dict[date]=1
print(max(date_dict,key=date_dict.get))
##########  End  #########