(一)print 字符串的拼接,与range 函数的简单使用
打印一个边长为n 的正方形:( str(), int() 字符串与数字的转换 )
代码语言:javascript复制a = int(input('>>>'))
for i in range(a):
print('#'*a)
#?请打印一个空心正方形
代码语言:python代码运行次数:0复制a = 5
print('*'*a)
for i in range(a-2):
print('*' ' '*(a-2) '*')
print('*'*5)
#简单实现,是否可以引用for 循环来实现
代码语言:python代码运行次数:0复制a = 5
for i in range(a):
if i == 0 or i == (a-1):
print('*'*a)
else:
print('*' ' '*(a-2) '*')
# range 函数前包后不包,注意边界问题
代码语言:javascript复制a = int(input('>>>'))
n = a//2
for i in range(-n,n):
if i == -n or i == n-1:
print('#'*a)
else:
print('#' ' '*(a-2) '#')
# 对称负索引的使用,但是打出来是边长相等的吗,后边界对于奇数而言 n = n-a ,会不足奇数项
一百以内的奇数相加:(print 的在打印变量的时候不要添加引号)
代码语言:javascript复制a = 0
sum = 0
for i in range(1,100,2):
a = a i
sum = sum i
print(sum)
代码语言:python代码运行次数:0复制sum = 0
for i in range(1,100,2):
sum = i
print(sum)
# = 的巧妙使用
代码语言:javascript复制sum = 0
for i in range(1,100):
if i%2 != 0:
sum = sum i
print(sum)
# 用取模作为奇数的判断条件
(二)if 条件判断的使用
成绩判断问题 :(二分法对于大数据量处理是一个不错的选择)
代码语言:python代码运行次数:0复制score = int(input('please input your score>>>'))
if score > 70:
if score > 90:
print('A')
elif score > 80:
print('B')
else:
print('C')
else:
if score > 60:
print('D')
else:
print('E')
#注意边界,注意区间的取值范围
成绩问题求1 到5 阶乘的和:
代码语言:python代码运行次数:0复制n = 1
sum = 0
for i in range(1,6):
n *= i
sum = n
print(sum)
代码语言:javascript复制sum = 0
for i in range(1,6):
tmp = 1
for j in range(1,i 1):
tmp *= j
sum = tmp
print(sum)
#循环的嵌套使用,和l临时变量的使用
(三)for 循环的简单实现
求素数:
代码语言:python代码运行次数:0复制num = int(input('please input your number>>>'))
for i in range(2,num):
if num % i == 0:
print('No')
break
else:
print('Yes')
#contnue 和 break 不是跳出语句块,所以if cond;break 不是跳出if,而是终止if 外的break所在的循环
#else 如果循环正常的执行结束,就执行else子句;(谜之else)
#如果使用break终止,else子句不会执行
代码语言:python代码运行次数:0复制num = int(input('please input your number>>>'))
flag = False
for i in range(2,num):
if num % i == 0:
flag = True
break
if flag:
print('No')
else:
print('Yes')
#引入一个标记,作为条件的判断
真值表:
" " 假
"string" 真
0 假
>=1 真
<=-1 真
()空元组 假
[]空列表 假
{}空字典 假
None 假
请输入若干个整数,打印出最大值:
代码语言:javascript复制a = int(input('>>>'))
while True:
b = int(input('>>>'))
if b:
int(b)
if a > b:
print(a)
else:
a = b
print(a)
else:
break
#以前的固有思维,对于if 条件的使用
代码语言:python代码运行次数:0复制m = int(input('>>>'))
while True:
c = input('>>>')
if c:
n = int(c)
if n > m:
m = n
print(m)
else:
break
#作为python 语法条件的使用
#相同类型则可以比较大小
#不同类型可以比较是否相等
三目运算:
if 条件判断的简便写法:(判断俩个数的最大值)
代码语言:javascript复制a = int(input('>>>'))
b = int(input('>>>'))
print(a) if a>b else print(b)
升级版,输入若干整数,打印最大值:
代码语言:javascript复制max = int(input('>>>'))
flag = True
while flag:
n = input('>>>')
if n == 'quit':
flag = False
else:
c = int(n)
if c > max:
max = c
print(max)
#引号引起来为字符串
输入若干个值,每次输入后算出平均数:
代码语言:javascript复制sum = 0
count = 1
num1 = int(input('>>>'))
while True:
num2 = input('>>>')
if num2 == 'quit':
break
else:
num2 = int(num2)
count = 1
sum = num1 num2
avg = sum/count
print(avg)
#注意变量的重复赋值的迷惑性,break 跳出循环的巧妙使用,相比于打标签
九九乘法表的打印:(循环嵌套的使用)
代码语言:javascript复制for i in range(1,10):
for j in range(1,i 1):
line = str(i) '*' str(j) '=' str(i*j)
print(line,end=' ')
print()
#print 为另起一行打印
代码语言:javascript复制for i in range(1,10):
for j in range(1,i 1):
print(('{}*{}={:2}'.format(j,i,j*i)),end=' ')
print()
# 利用format 函数格式化输出
代码语言:javascript复制for i in range(1,10):
line = ' '
for j in range(1,i 1):
line = '{}*{}={:2} '.format(j,i,i*j)
print(line)
#format 函数单引号里面的格式代表的输出格式
代码语言:javascript复制for i in range(1,10):
line = ' '
for j in range(1,i 1):
line = '{1}*{0}={2:2} '.format(j,i,i*j)
print(line)
#format 函数默认索引为0,1,2.索引可以指定后面变量的使用
代码语言:javascript复制for i in range(1,10):
for j in range(1,10):
if j <= i:
print(str(j) '*' str(i) '=' str(i*j),end=' ')
print()
# j 的取值范围巧妙做出判断
右上角乘法口诀表的打印:
代码语言:javascript复制for i in range(1,10):
line = ''
for j in range(1,10):
if j >= i:
line = str(i) '*' str(j) '=' str(i*j) ' '
print('{:>70}'.format(line))
#format 函数,<表示向左移动,> 表示向右移动
代码语言:python代码运行次数:0复制for i in range(1,10):
line = ' '
for j in range(1,10):
if j >= i:
line = '{}*{}={:{}} '.format(j,i,j*i,2)
print('{:>66}'.format(line))
#format 函数的嵌套赋值
for i in range(1,10):
line = ' '
for j in range(1,10):
if j >= i:
line = '{}*{}={:<{}}'.format(j,i,j*i,2 if j < 4 else 3)
print('{:>66}'.format(line))
#三目运算的回顾使用
打印菱形:
代码语言:javascript复制num = int(input('>>>'))
a = num//2
for i in range(-3,4):
if i < 0:
space = -i
else:
space = i
print(' '* space '*'*(num-space*2))
#对称性的使用
代码语言:javascript复制a = int(input('>>>'))
n = a//2
for i in range(-n,a-n 1):
if i < 0:
i = -i
print(' '*i '*'*(a-i*2))
#python 语法实现
打印对顶三角形:
代码语言:javascript复制num = int(input('>>>'))
e = num//2
for i in range(-e,n-e):
if i < 0:
prspace = -i
else:
prspace = i
print(' '*(e-prspace) '*'*(2*prspace 1))
打印⚡:
代码语言:javascript复制for i in range(-3,4):
if i < 0:
print (' '*(-i) '*'*(4 i))
elif i > 0:
print(' '*3 '*'*(4-i))
else:
print('*'*7)
代码语言:javascript复制num = int(input('>>>'))
e = num//2
for i in range(-e,e 1):
if i < 0:
print (' '*(-i) '*'*(e 1 i))
elif i > 0:
print(' '*3 '*'*(e 1-i))
else:
print('*'*num)
#注意变量的关系,和之间的替换
100以内,斐波那契数列
代码语言:javascript复制num1 = 0
num2 = 1
print(num1,num2,sep='n')
while True:
num3 = num1 num2
num1 = num2
num2 = num3
print(num3)
if num3 > 100:
break
代码语言:javascript复制num1=0
num2=1
while True:
num1,num2 = num2,num1 num2
print(num2)
if num2 > 100:
break
#简单写法
斐波那契数列第101项:
代码语言:javascript复制num1=0
num2=1
count = 2
while True:
num1,num2 = num2,num1 num2
count =1
if count == 101:
print(num2)
break
#注意 是0 开始还是1 开始
代码语言:javascript复制num1=0
num2=1
count = 2
while True:
num1,num2 = num2,num1 num2
count =1
if count == 101:
print('{},{}'.format(count,num2))
break
#format 函数的回顾使用
代码语言:javascript复制a = 1
b = 1
print(a)
print(b)
while True:
a,b = b,a b
if b > 100:
break
print(b)
#不同的写法注意边界问题
求10万以内的素数:(性能要求)
代码语言:javascript复制import datetime
start = datetime.datetime.now()
for i in range(3,100000,2):
for j in range(3,int(i**0.5) 1,2):
if i%j == 0:
break
else:
print(i)
delta = (datetime.datetime.now()-start).total_seconds()
print(delta)
代码语言:javascript复制import datetime
start = datetime.datetime.now()
for i in range(3,100000):
if i%2 == 0 or i%5 == 0:
continue
else:
for j in range(3,int(i**0.5) 1,2):
if i%j == 0:
break
else:
print(i)
delta = (datetime.datetime.now()-start).total_seconds()
print(delta)
#datetime 函数的引入
#continue 的使用
#注意二层循环引用一层循环的变量,减少程序的空运行
代码语言:javascript复制list = [2]
for i in range(3,10,2):
for j in list:
if i%j == 0:
break
else:
print(i)
list.append(i)
print(list)
#列表的引入
#算法的引入:一个合数一定可以分为几个素数的成绩。
猴子吃桃的问题:
每天吃一半并多吃一个,第十天发现只有一个桃子,求第一天一共有多少个桃子:
代码语言:javascript复制peach = 1
for i in range(9):
peach = 2*(peach 1)
print(peach)
# 简单的数学问题代码实现
杨辉三角打印:
代码语言:javascript复制triangle = [[1],[1,1]]
n = 9
for i in range(2,n):
newline = [1]
pre = triangle[i-1]
for j in range(i-1):
val = pre[j] pre[j 1]
newline.append(val)
newline.append(1)
triangle.append(newline)
print(triangle)
代码语言:javascript复制n = 9
print([1])
pre = [1,1]
print(pre)
for i in range(2,n):
newline = [1]
for j in range(i-1):
val = pre[j] pre[j 1]
newline.append(val)
newline.append(1)
print(newline)
pre = newline
代码语言:javascript复制n = 9
for i in range(n):
newline = [1]
if i == 0:
print(newline)
continue
for j in range(i-1):
val = pre[j] pre[j 1]
newline.append(val)
newline.append(1)
print(newline)
pre = newline
代码语言:javascript复制n = 9
pre = [1]
print(pre)
pre.insert(0,0)
pre.append(0)
for i in range(1,n):
newline = []
for j in range(i 1):
val = pre[j] pre[j 1]
newline.append(val)
print(newline)
pre = newline
pre.insert(0,0)
pre.append(0)
代码语言:javascript复制n = 9
pre = [1]
print(pre)
pre.append(0)
for i in range(1,n):
newline = []
for j in range(i 1):
val = pre[j-1] pre[j]
newline.append(val)
print(newline)
pre = newline
pre.append(0)
转置矩阵:
代码语言:javascript复制1 2 3 1 4 7
4 5 6 --------> 2 5 8
7 8 9 3 6 9
代码语言:javascript复制matrix = [[1,2,3],[4,5,6],[7,8,9]]
for i,row in enumerate(matrix):
for j,col in enumerate(row):
if i < j:
matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]
print(matrix)
代码语言:javascript复制matrix = [[1,2,3],[4,5,6],[7,8,9]]
length = len(matrix)
for i in range(length):
for j in range(i):
matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]
print(matrix)
代码语言:javascript复制1 2 3 1 4
-------> 2 5
4 5 6 3 6
代码语言:javascript复制matrix = [[1,2,3],[4,5,6]]
tm = []
for row in matrix:
for i,col in enumerate(row):
if len(tm) < i 1:
tm.append([])
tm[i].append(col)
print(matrix)
print(tm)
用户输入数字打印每个数字重复的次数:
代码语言:javascript复制num = input('>>>')
d = {}
for c in num:
if not d.get(c):
d[c] = 1
continue
d[c] = 1
print(d)
代码语言:javascript复制num = input('>>>')
d = {}
for c in num:
if c not in d.keys():
d[c] = 1
else:
d[c] = 1
print(d)
随机产生100个整数,数字范围[-100,100],升序输出其重复的数字:
代码语言:javascript复制import random
n = 100
nums = [0] * n
for i in range(n):
nums[i] = random.randint(-1000,10000)
print(nums)
t = nums.copy()
t.sort()
print(t)
d = {}
for x in nums:
if x not in d.keys():
d[x] = 1
else:
d[x] = 1
print(d)
d1 = sorted(d.items())
print(d1)
字符串重复统计:
代码语言:javascript复制import random
alphabet = 'abcdefghijklmnopqrstuvwxyz'
words = []
for _ in range(100):
words.append(''.join(random.choice(alphabet) for _ in range(2)))
d = {}
for x in words:
d[x] = d.get(x,0) 1
print(d)