day6作业
2018-07-21 本文已影响0人
七夜_174e
1、求 S=a+aa+aaa+aaaa+aa..a,其中a是一个数字。例如2+22+222+2222+22222,有5个数相加,几个数相加可以用input输入控制。
num1 = int(input('请输入几个数相加:'))
s = 0
while True:
if num1 < 0:
print('输入有误,重新输入')
num1 = int(input('请输入几个数相加:'))
else:
break
for i in range(num1):
num2 = 0
for j in range(i+1):
num2 += 2*(10**j)
s += num2
print(s)
请输入几个数相加:5
24690
2、打印图形1
n=4
@
@@
@@@
@@@@
n=5
@
@@
@@@
@@@@
@@@@@
num1 = int(input('请输入要打印的行数:'))
while True:
if num1 < 0:
print('输入有误,重新输入')
num1 = int(input('请输入要打印的行数:'))
else:
break
for i in range(num1+1):
print('@'*i)
请输入要打印的行数:3
@
@@
@@@
3、打印图形2
num1 = int(input('请输入要打印的行数:'))
while True:
if num1 < 0:
print('输入有误,重新输入')
num1 = int(input('请输入要打印的行数:'))
else:
break
for i in range(num1):
s = '@'*(1+2*i)
print(s.center(1+2*num1))
请输入要打印的行数:2
@
@@@
4、打印图形3
num1 = int(input('请输入要打印的行数:'))
while True:
if num1 < 0:
print('输入有误,重新输入')
num1 = int(input('请输入要打印的行数:'))
else:
break
for i in range(num1 + 1):
print('@' * (num1-i))
请输入要打印的行数:4
@@@@
@@@
@@
@
5、一个5位数,判断是不是回文数,即个位和万位相同,十位和千位相同 。如12321是回文数。
num1 = int(input('请输入一个5位数:'))
while True:
if num1 // 10000 <= 0 or num1 // 10000 >= 10:
print('输入有误,重新输入')
num1 = int(input('请输入一个5位数:'))
else:
break
if num1 // 10000 != num1 % 10:
print('%d不是回文数' % num1)
else:
if num1 // 1000 % 10 != (num1 % 100 // 10):
print('%d不是回文数' % num1)
else:
print('%d是回文数' % num1)
请输入一个5位数:234
输入有误,重新输入
请输入一个5位数:43234
43234是回文数
6、打印图形(菱形)
num1 = int(input('请输入一个正整数:'))
while True:
if num1 < 0:
print('输入有误,重新输入')
num1 = int(input('请输入一个正整数:'))
else:
break
for i in range(num1):
s = '@'*(1+2*i)
print(s.center(1+2*num1))
for j in range(num1):
s = '@'*(1+2*(num1-j-2))
print(s.center(1+2*num1))
请输入一个正整数:3
@
@@@
@@@@@
@@@
@
7、打印9X9口诀:
for i in range(1, 10):
for j in range(1, i+1):
print(j, '*', i, '=', j*i, end=' ', sep='')
print('\t')
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
8、输入一行字符,分别统计出其英文字母、空格、数字和其他字符个数.
str1 = input('输入一行字符:')
english_num = 0
blank_num = 0
number_num = 0
else_num = 0
for i in str1:
if i.isdigit():
number_num += 1
elif i.isspace():
blank_num += 1
elif i.isalpha():
english_num += 1
else:
else_num += 1
print('该字符串有英文字母%d个,空格%d个,数字%d个,其他字符%d个' % (english_num, blank_num, number_num, else_num))
输入一行字符:dsdwad w 212!@#
该字符串有英文字母7个,空格4个,数字3个,其他字符3个
9、一个数如果恰好等于他的因子之和,这个数就称为“完数”。例如:6=1+2+3。找出1000以内所有的完数。
print('1是完数')
for i in range(1, 1001):
s = []
for j in range(1, i):
if i % j == 0:
s.append(j)
if sum(s) == i:
print('%d是完数' % i)
1是完数
6是完数
28是完数
496是完数
10、 输入两个正整数m和n,求其最大公约数和最小公倍数。
num1 = int(input('请输入第一个正整数:'))
num2 = int(input('请输入第二个正整数:'))
while True:
if num1 < 0:
print('输入有误,重新输入')
num1 = int(input('请输入第一个正整数:'))
elif num2 < 0:
print('输入有误,重新输入')
num2 = int(input('请输入第二个正整数:'))
else:
break
a = max(num1, num2)
b = min(num1, num2)
while True:
if a % b != 0:
c = a
a = b
b = c % b
else:
d = num2 * num1 / b
print('最大公约数是%d,最小公倍数是%d' % (b, d))
break
假设x和y的最大公约数是m,最小公倍数是n,则xy=mn,算出最大公约数后,就可以让两数相乘再除以最大公约数,即得到最小公倍数。