"""
第一题:求解水仙花数
水仙花数,也被称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是一个n位数(n≥3),其每个位上的数字的n次幂之和等于它本身。
例如,三位数153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。在三位数中,除了153,还有370、371和407也是水仙花数。
"""
print("100 ~ 1000 之间的所有水仙花为:", end=" ") for i in range(100, 1000): sum = 0 # 定义一个变量,记录这个数各个位置上的数三次方的和 num = i while num > 0: value = num % 10 # 先求解出个位,然后求解出十位,最后求解出百位 sum = sum + value * value * value # sum 依次相加各个位置上数的三次方和 num = num // 10 # 求解出十位,百位 if sum == i: print(i, end=" ") print()
"""
第二题:求100以内的所有质数
所谓质数:除了本身和1,没有其他的约数
"""
print("100以内的所有质数为:") for i in range(2, 100): j = 2 # 初始化 j = 2 while j < i: # 从 2 ~ i - 1 之间,每一个数都需要判断是否能被 i 整除 if i % j == 0: # 如果 j 能被 i 整除时,就说明:j 是 i 的因数 break # 直接跳出就近的所属循环 j = j + 1 if i == j: # 若 while 循环执行完毕,没有一个 j 能被 i 整除时,此时 i 一定等于 j 就说明 i 是质数 print(i, end=" ")
"""
第三题:打印三角形:给定一个整数 n,在屏幕上输出一个直角三角形
例如:输入整数 5,输出:
*
**
***
****
*****
"""
n = int(input("(输出三角形)请输入一个整数:")) for row in range(1, n + 1): # 每一行进行处理 for j in range(1, row + 1): # 一行的所有 * print("*", end="") print() # 一行打印完之后,回车换行
"""
第四题:给一个整数,求出各个位上的和
例如:n = 12345 输出:1+2+3+4+5=15
以下是三种方式
"""
# 第一种求解方式 n = int(input("(求各个位置上的数之和)请输入一个整数:")) sum_value = 0 while n > 0: sum_value = sum_value + n % 10 n = n //10 print("这个数的各个位上的数之和:", sum_value) # 第二种求解方式 n = int(input("(求各个位置上的数之和)请输入一个整数:")) lst = [] while n > 0: lst.append(n % 10) n = n // 10 print("这个数的各个位上的和:", sum(lst)) # 第三种求解方式 n = input("(求各个位置上的数之和)请输入一个整数:") # n 个字符串 sum_value = 0 for i in n: sum_value = sum_value + int(i) # 字符串遍历,取出来每一个字符,然后强转为 int 类型 print("这个数的各个位上的和:", sum_value)
"""
第五题:输入一个整数 n 求出第 n 个整数的斐波拉切数列
斐波那契数列:1,1,2,3,5,8,13,21,34,55,89...,不难发现一个规律,实际上从第三个数开始,每个数字的值都是前两个数字的和;
例如:输入的整数为 5 输出:5
"""
n = int(input("(求解斐波拉切数列)请输入整数:")) if n == 1 or n == 2: print(1) else: value1, value2 = 1, 1 # 由于下一个数,需要前面两个数的累加和,所以需要定义两个变量存储前面两个变量的值 for i in range(3, n + 1): result = value1 + value2 value1 = value2 value2 = result print("求解的斐波拉切数列的值为:", result)
"""
第六题:求解两个数的最大公约数和最小公倍数
备注:最小公倍数 = 两整数的乘积 ÷ 最大公约数
(1)辗转相除法
有两整数a和b:
① a % b 得余数 c
② 若 c = 0,则 b 即为两数的最大公约数
③ 若 c ≠ 0,则 a = b,b = c,再回去执行①
例如求 27 和 15 的最大公约数过程为:
27 % 15 = 12,15 % 12 = 3,12 % 3 = 0因此,3 为 最大公约数
"""
a= int(input("请输入第一个整数:")) b = int(input("请输入第二个整数:")) if b > a: # 如果输入的第二个整数 > 第一个整数,互换一下位置 a, b = b, a m = a # 记录最大值 m = a n = b # 记录次大值 n = b while b != 0: value = a % b # 两个数求余 a = b # 次大值赋值给最大值 b = value # 余数赋值给次大值 print("两个数的最大公约数:", a) print("两个数的最小公倍数:", (m * n) // a)
"""
第七题:数的逆序输出
例如:1234 输出:4321
思路:数进行拆分,然后依次反向进行 * 10 做累加
"""
n = int(input("(数的逆序输出)请输入一个整数:")) reverse_value = 0 while n > 0: value = n % 10 # 数的位置进行拆分 reverse_value = reverse_value * 10 + value # 拆分完之后进行 * 10 做累加 n = n // 10 # n 进行变化 print("逆序输出:", reverse_value)
"""
第八题:判断随机输入的年份是不是闰年??
符合条件之一是闰年:1. 能被4整除,但不能被100整除 2. 能被400整除!
"""
year = int(input("请输入年份:")) if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: print("{}是闰年!".format(year)) else: print("{}不是闰年!".format(year))
"""
第九题:求解四叶玫瑰数
四叶玫瑰数是 4 位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
(例如:当 n 为 3 时,有 1^3 + 5^3 + 3^3 = 153,153 即是 n 为 3 时的一个自幂数,3 位数的自幂数被称为水仙花数)。
"""
print("1000 ~ 10000 之间所有的四叶玫瑰数为:") for i in range(1000, 10000): i1 = i // 1000 # 取千位数字 1234//1000=1 i2 = i // 100 % 10 # 取百位数字 1234//100=12 12%10=2 i3 = i // 10 % 10 # 取十位数字 1234//10=123 123%10=3 i4 = i % 10 # 取个位数字 1234%10=4 if i1 ** 4 + i2 ** 4 + i3 ** 4 + i4 ** 4 == i: print(i, end=" ") print()
"""
第十题:逆序输出字符串
例如:abcdefg 输出:gfedcba
"""
# 求解方式一 str = input("请输入字符串:") print(str[::-1]) # 求解方式二 s = input("请输入字符串:") lst = [] for x in range(0, len(s)): lst.append(s[x]) print(''.join(lst)) # 使用列表的拼接方式,这里使用 空字符串
标签:练习题,实战,10,python,sum,value,整数,print,input From: https://www.cnblogs.com/blogtech/p/18175222