python 循环语句s =2+22+222+2222之和_python算法题

最近看了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),

print

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",

print

你可能感兴趣的:(python,循环语句s)