最近看了python的语法,但是总感觉不知道怎么使用它,还是先来敲敲一些简单的程序吧。
1.题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
if __name__ == "__main__":
s = (1,2,3,4)
for a in s:
for b in s:
for c in s:
if a != b and b != c and c != a:
print "%d%d%d" %(a,b,c)
2.题目:一个整数,它加上100后是一个完全平方数,再加上268又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
from math import sqrt
if __name__ == "__main__":
i = 1
while i < 100000:
a = int(sqrt(i + 100))
b = int(sqrt(i + 268))
if a **2 == (i + 100) and b **2 == (i + 268):
print i
i += 1
3.题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
if __name__ == "__main__":
days = {1:0,2:31,3:59,4:90,5:120,6:151,7:181,8:212,9:243,10:273,11:304,12:334}
year,month,day = input("year:"),input("month:"),input("day:")
if not days.has_key(month):
print "error input"
sum = days[month] + day
if month >= 2:
if year %400 == 0 or (year % 4 == 0 and year % 100 != 0):
sum += 1
print "it is the %dth day of the year." % sum
4.题目:输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
if __name__ == "__main__":
a,b,c = input(),input(),input()
if a > b: a,b = b,a
if a > c: a,c = c,a
if b > c: b,c = c,b
print "small to big: %d,%d,%d" %(a,b,c)
或者:
if __name__ == "__main__":
s = [input(),input(),input()]
s.sort()
print "small to big: %s" %s
5.题目:输出9*9口诀。
程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
if __name__ == "__main__":
for i in range(1,10):
for j in range(1,10):
print "%d*%d = %-3d" %(i,j,i*j),
6.题目:要求输出国际象棋棋盘。
程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
if __name__ == "__main__":
for i in range(8):
for j in range(8):
if (i + j) % 2 == 0:
print "%c"%219,else:
print "a",