本文以GitHub上100天python从新手到大师为素材,规划为约100天的练习,每次的学习和总结均发在这里。有错误的地方还请朋友们指正。
前言
在前面我们已经学了语言元素、分支结构和循环结构,虽然学得不多,但已经可以解决一些现实问题。这一期我们通过三天所学的知识来解决一些经典问题。
练习1 寻找水仙花数
所谓水仙花数是指一个三位数字,每位数字的立方和等于它自身,例如
153 = 13 + 53 + 33
我的代码如下:
from math import pow
for i in range(100,1000):
#利用整除、取余来获取每一个位数#
if pow((i//100),3) + pow((i%100)//10,3) + pow((i%10),3) == i:
print(i)
官方代码如下:
for num in range(100, 1000):
low = num % 10
mid = num // 10 % 10
high = num // 100
if num == low ** 3 + mid ** 3 + high ** 3:
print(num)
练习2:正整数的反转
将任一正整数反转,例如123反转为321
我的代码如下:
"""
正整数的反转
"""
num_1 = int(input("输入一个正整数"))
flag = True
revers_num = "" #初始化接受反转数字#
while flag:
revers_num += str(num_1 % 10) #不断取个位#
num_1 = num_1 // 10 #将个位去掉#
if num_1 == 0:
print(revers_num)
flag = False
官方代码如下:
"""
正整数的反转
Version: 0.1
Author: 骆昊
"""
num = int(input('num = '))
reversed_num = 0
while num > 0:
reversed_num = reversed_num * 10 + num % 10
num //= 10
print(reversed_num)
练习3 百钱百鸡问题
这个问题是我国古代算经中的一道问题,大概意思是公鸡5元钱1只,母鸡3元钱一只,小鸡1元钱3只。问怎么样买是100元买100只鸡。
我的代码如下:
for i in range(0,20): #公鸡最多买20只#
for j in range(0,33): #母鸡最多买33只#
for k in range(0,100): #小鸡最多买100只#
if 5*i + 3*j + k/3 == 100 and i + j + k == 100:
#确保钱数等于100元并且小鸡也是100只#
print("公鸡买%d只,母鸡买%d只,小鸡买%d只" % (i, j, k))
这道题假设公鸡买了 x x