01-列表作业
- 求s=a+aa+aaa+aaaa+aa...a的值,其中a是 个数字。 如2+22+222+2222+22222(此时共有5个数相 加), 个数相加有键盘控制。
代码:
a = 2
n = int(input('n:'))
sum = 0 # 和
number = 0 # 每次循环被加的数字
for _ in range(n):
number = number * 10 + a
print(number, end=' ')
sum += number
print('和:',sum)
- 打印图形1
n=4
@
@@
@@@
@@@@
n=5
@
@@
@@@
@@@@
@@@@@
n = 5
# 使用循环控制行数,同时X控制每一行@的数量
for x in range(1,n+1):
print('@'*x)
- 打印图形2
n=3
@
@@@
@@@@@
n == 4
@
@@@
@@@@@
@@@@@@@
"""
分析:
n = 5
@
@@@
@@@@@
@@@@@@@
@@@@@@@@@
第1行 @1个 空格4个
第2行 @3个 空格3个
第3行 @5个 空格2个
第4行 @7个 空格1个
第5行 @9个 空格0个
规律:@:行数*2 - 1
空格:n - 行数
"""
n = 5
# 使用x来获取行数
for x in range(1,n+1):
# 先打印空格
print(' '* (n - x), end='')
# 再打印@
print('@'* (x * 2 - 1))
- 打印图形3
n=3
@@@
@@
@
n = 3
# x的取值是0~n-1
for x in range(n):
print('@'*(n-x))
- 输 两个正整数m和n,求其最 公约数和最 公倍数。
"""
最大公约数:两个或多个整数共有约数中最大的一个。
最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。
"""
m = 10
n = 15
#Python中的三目运算符: 为真时的结果 if 判定条件 else 为假时的结果
max1 = m if m > n else n
min1 = m if m < n else n
"""a.求最大公约数"""
# x的取值范围是min1 ~ 1
for x in range(min1,0,-1):
if (m % x == 0) and (n % x == 0):
print('%d和%d的最大公约数是:%d' % (m, n, x))
break
"""b.求最小公倍数"""
x = max1
while True:
if (x % m == 0) and (x % n == 0) :
print('%d和%d的最小公倍数是:%d' % (m, n, x))
break
x += 1
- 个数如果恰好等于它的因 之和,这个数就称为 "完数 "。 如6=1+2+3.编程 找出1000以内的所有完数
# 使用x将1000以内的所有的数都拎出来
for x in range(1,1001):
sum1 = 0
for y in range(1,x):
# 找出所有x的因子,并且加起来
if x % y == 0:
sum1 += y
# 所有的因子加完后,判断x是否是完数
if x == sum1:
print('%d是完数' % x)
- 输出9*9 诀
"""
第1行: 1x1=1
第2行: 1x2=2 2x2=4
第3行: 1x3=3 2x3=6 3x3=9
第4行: 1x4=4 2x4=8 3x4=12 4x4=16
...
规律:MxN
M: 每一行 1 ~ 行数
N: 每一行 都是行数
"""
n = 0 # 第一个数
m = 0 # 第二个数
# x为行数,取值是1-9
for x in range(1,10):
# 每一行,m是行数
m = x
# 每一行,n是1 ~ 行数
for y in range(1,x+1):
n = y
# 注意:同一行显示的是end不能是换行
print('%dx%d=%d' % (n, m, n*m), end=' ')
# 一行的内容打印完了,就换行
print()
- 一个5位数,判断它是 是回 数。即12321是回 数,个位与万位相同, 位与千位相同。
n = 12321
n_str = sag = True # 假设n是回文数
# index是字符串下标,范围是0-2
for index in range(3):
pre = n_str[index]
# 下标返回是 4-2
back = n_str[5 - index - 1]
# 如果前面的数字和对应的数不相等,说明不是回文数
if pre != back:
flag = False
break
if flag:
print('%d是回文数' % n)
- 输入字符串,分别统计出其中英 字 、空格、数字和其它字符的个数。
str1 = 'ahb 76jk kkj%6 shj98%'
letter_count = 0
number_count = 0
space_count = 0
other_count = 0
for char in str1:
# 字母:
if ('a'<=char<='z') or ('A'<=char<='Z'):
letter_count += 1
continue
# 数字
if '0'<=char<='9':
number_count += 1
continue
# 空格
if char == ' ':
space_count += 1
continue
# 其他
other_count += 1
print('字母:%d个, 数字:%d个, 空格:%d个, 其他:%d个' % (letter_count, number_count, space_count, other_count))