python初学编程入门小题
水仙花数
求1000以内的水仙花数:水仙花数:一个三位数各个位上的立方之和,等于本身。如果是水仙花数就打印“是水仙花数”,否则打印“不是水仙花数” 该数的每一位的立方和等于自身的值,比如:153=1^3+5^3+3^3
for num in range(100, 999):
if ((num // 100) ** 3 + (num // 10 % 10) ** 3 + (num % 10) ** 3) == num:
print(num) # 153 370 371 407
回文数
从控制台输入一个五位数,如果是回文数就打印“是回文数”,否则打印“不是回文数”。例如:11111 12321 12221
#方法一:
num = input("请输入一个五位数:")
num1 = int(num)
num_list = [] # 空列表只能用追加,不能直接用索引赋值
for i in range(0, 5):
a = num1 // 10 ** i % 10
num_list.append(str(a))
# 5!='5' list(num)中num为字符串形式,不能为int型
if list(num) == num_list:
print("是回文数")
else:
print("不是回文数")
#方法二:
list1 = []
for i in range(10000, 99999):
if list(str(i)) == list(str(i))[::-1]:
list1.append(i)
print(list1)
判断一个年份是闰年还是平年
判断一个年份是闰年还是平年;1.能被4整除而不能被100整除.(如2004年就是闰年,1800年不是)2.能被400整除.(如2000年是闰年))
year = int(input("请输入年份:"))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print(f"{year}是闰年")
else:
print(f"{year}不是闰年")
进阶题:
分别输入某年某月某日,判断这一天是这一年的第几天?(考虑闰年)
year = int(input(“年:”)),mouth = int(input(“月:”)),day = int(input(“日:”))
list = [0, 1, -1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1]
list1 = [0, 1, -2, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1]
year = int(input("请输入年份:"))
mouth = int(input("请输入月份:"))
days = int(input("请输入日:"))
num = 0
if (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0):
for index in range(1, mouth):
num = list[index] + num
day = num + (mouth-1) * 30+days
print(day)
else:
for index in range(1, mouth):
num = list1[index] + num
day = num + (mouth-1) * 30+days
print(day)
判断是不是素数
【素数:只能被1或本身整除的数】
#方法一
for j in range(2, 101):
for i in range(2, j):
if j % i == 0:
break # 1.break跳出else一起结束,不再执行。2.如果程序正常结束,没有使用break,代表for循环正常结束并执行else
else:
print(j, end=' ')
print('\n')
# 方法二:while-else
for j in range(2, 101):
i = 2
while i < j:
if j % i == 0:
break
i += 1
else:
print(j, end=' ')
# 方法三
for j in range(2, 101):
flag = 0
for i in range(2, j):
if j % i == 0:
flag = 1
break
if flag != 1:
print(j, end=' ')
flag = 0
print('\n')
9*9乘法表
给定一个不大于9的数n,打印nn乘法表
num = int(input("请输入一个数:"))
for i in range(1, 10):
for j in range(i, 10):
print(f'{i}*{j}={i * j}', end=' ')
print('\n')
数字逆序
给定一个n位(不超过10)的整数,将该数按位逆置,例如给定12345变成54321,12320变成2321.(*****)
n = int(input("请输入一个数:"))
string = ''
while n:
a = n % 10
n = n // 10
string += str(a)
if string[0] == '0':
print(string[1:])
else:
print(string)
找规律的题
一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第n次落地时,共经过多少米?(*****)
规律:
第1次落地: 100
第2次落地: 100 + 502
第3次落地: 100 + 502 + 252
第4次落地: 100 + 502 + 252 + 12.52
第5次落地: 100 + 502 + 252 + 12.5*2 + …
n = int(input("请输入落地次数n:"))
count = sum = 0
item = high = 100
while count < n:
sum = sum + item
high = high / 2
item = high * 2
count += 1
print(sum)
求1!+2!+3!+4!+5!
"""sum1 = 0
num = 1
for i in range(1, 6):
j = 1
while j <= i:
num = num * j
j += 1
sum1 = sum1 + num
num = 1
print(sum1)"""
sum = 0
num = 1
for i in range(1, 6):
num *= i
sum += num
print(sum)
2, 输入两个数n,a, 输出对应的结果
如: n=3,a=2; 输出 2 + 22 + 222 的值。(**)
如: n=4,a=3; 输出 3 + 33 + 333 + 3333的值。
提示: 1、n = 3,相加三次,每次相加比前一次相加的数,多一位
2、每次多的这个位数的值为a, 3, 310+3(33), 3310+3(333),…
n = int(input("请输入n:"))
a = int(input("请输入a:"))
sum1 = item = 0
for i in range(n):
item += a * 10 ** i
sum1 += item
print(sum1)
希望对大家有所帮助!!!