初学Python可能会遇见的小程序
- 前言
- 《孙子算经》中的典例
- 取随机数问题
- “水仙花数”问题
- for循环
- while循环
- 九九乘法表
- 简单选择排序
- 回文数问题
- 序列的分片
- .reverse() 运算
- 猜数小游戏
前言
本文总结了在大一上这一学期内我觉得比较经典的一些Python小程序,其中有一部分是我的授课老师在课上布置的任务,但代码都是我自己敲的。期待大家在评论区留下宝贵的意见~
《孙子算经》中的典例
问:今有物不知其数,三三数之余二,五五数之余三,七七数之余二,问几何?
n = 0
while True:
n = n + 1
if n % 3 == 2 and n % 5 == 3 and n % 7 == 2:
print('符合条件的数是%s' % n)
break
- 1
- 2
- 3
- 4
- 5
- 6
这里介绍一下 while True 的用法:
whileTrue 意思是要一直进行死循环,所以通常会在while true循环中加入break条件判断,用来使在循环内部的某个条件达成时终止循环,通常用于需要多次输入并判断的场景,比如输入密码的程序。下面是一个例子:
key = int(input('请输入:'))
while True:
if key <= 0:
key = int(input('输入错误,请重新输入:'))
continue
else:
print(key)
break
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
取随机数问题
请X侧,第X排,第X列的同学回答问题。
import random
a = random. randint(0, 1)
b = random. randint(1, 10)
c = random. randint(1, 10)
if a == 0:
a = '左'
else:
a = '右'
print('请%s侧,第%s排,第%s列的同学来回答问题。'%(a, b, c))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
“水仙花数”问题
例如153,三位数,33+53+1^3=153,写一个程序,输出所有的水仙花数
这里介绍两种方法:
for循环
for x in range(100,1000):
a = x // 100
b = x // 10 - a * 10
c = x % 10
if x == a**3 + b**3 + c**3:
print(x)
- 1
- 2
- 3
- 4
- 5
- 6
while循环
x = 100
while x < 1000:
a = x // 100
b = x // 10 - a * 10
c = x % 10
if x == a**3 + b**3 + c**3:
print(x)
x += 1 # += 表示增强赋值
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
九九乘法表
按照九九乘法表的格式,写一个程序,输出一个九九乘法表:
这里要用到嵌套循环
for i in range(1, 10):
for j in range(1, i+1):
x = i * j
print('%s * %s = %s' % (j, i, x), end=' ')
print()
- 1
- 2
- 3
- 4
- 5
注意,pycharm里的print() 函数默认换行,设置end=’ 'print() 就不会进行换行操作,当这个循环完成后设置print() 换行。
简单选择排序
a = [23, 45, 13, 9, 52, 18]
for i in range(len(a)):
for j in range(i+1, len(a)):
if a[i] > a[j]:
a[i], a[j] = a[j], a[i] #更换列表元素的位置
print(a)
- 1
- 2
- 3
- 4
- 5
- 6
说明一下,Python里有内置函数sort() ,可直接将序列进行升降排序,写这个程序的目的是为了更好地理解嵌套循环。
回文数问题
回文数问题我们可以用序列的通有方法或列表的专有方法来解决:
序列的分片
x = input('请输入一个数:')
y = x[::-1]
if x == y:
print('%s是回文数' % x)
else:
print('%s不是回文数' % x)
- 1
- 2
- 3
- 4
- 5
- 6
.reverse() 运算
x = input('请输入一个数:')
a = list(x)
b = a[:]
()
if a == b:
print('%s是回文数' % x)
else:
print('%s不是回文数' % x)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
注意,这两种方法是有很大的区别的,序列的通用方法不改变原有列表,而.reverse() 运算会改变原有列表,故一般推荐使用序列的通用方法。
猜数小游戏
设计一个程序,计算机随机生成一个数,输入猜数,若猜对,输出“good guess!”,若猜错,计算机会告知猜大了还是猜小了,5次机会之后,游戏结束(“game over!”)
import random
a = (1, 10)
n = 1
while n <= 5:
b = int(input())
if b == a:
print('good guess!')
break
elif b > a:
print('your guess > the key, please try again!')
n = n + 1
elif b < a:
print('your guess < the key, please try again!')j
n = n + 1
if n > 5:
print('game over!')
print('the key is', a)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17