python - for循环练习及简单冒泡排序

1.for循环练习题

  1. 实现输出 1 - 2 + 3 -­ 4 + 5 -­ 6 … + 99 的和
  2. 求100以内的质数,质数是只能被1和自身整除且大于1的自然数。
  3. 打印九九乘法表。
  4. 有这样一种数如:12321(第一个等于最后一个,第二个等于倒数第二个,以此类推,直到中间仅剩一个数),写一个函数,传入一个整数,判断这个数是不是这种前后一样的数。注:1221不是这种数
  5. 《算经》中有这样一个问题:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?(鶵[chú],同“雏”)
  6. 实现登录,账号名为admin,密码123,则提示“登录成功”,如果账号或者密码错误,则提示“账号名或密码错误”并允许重新输入用户名和密码,如果3次登录失败,则提示“登录失败”并退出程序。
  7. 一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被 3整除,求这样的四位数中最大的和最小的两数各是几?
  8. 完成冒泡排序。

作者:猫与测试
链接:https://www.jianshu.com/p/3e5aea296de4
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.代码示例

1.
sum = 0
for i in range(100):
  sum += i * (-1)**(i + 1)
print(sum)

输出结果:
sum = 50

2.
for i in range(2, 100):
#首先考虑能否被2整除,并判断特殊情况 i = 2
    if i % 2 == 0:
        if i == 2:
            print(2)
        else:
            continue
 
    elif i == 3:
        print(3)
    else:
    #考虑i = 3的情况,因为使用range时,在i = 3时,下面的for表达式不能正确产生列表
        for j in range(2, int(i **(0.5)) + 1):
            if i % j != 0:
                if j >= int(i ** 0.5):
                    print(i)
                continue
            else:
                break
3.
for i in range(1,10):
    for j in range(1,10):
        print("%d x %d = %d"%(i, j, i * j))
4.
# -*- coding: cp936 -*-
Num = raw_input("please input a interger:")
length = len(Num)
count = 0
#通过直接判断长度的方式来判断数字是否满足要求
if length % 2 == 0:
    print("This is not a good Number")
else:
    for i in range(0, (length/2)):
          if  Num[i] == Num[length - (i + 1)]:
              count += 1
              continue
#如果计数已经计到中间位置处,说明是满足要求的
if count == length/2:
    print("This is  a a good Number")
else:
    print("This is not a a good Number")
5.

5 ∗ x + 3 ∗ y + 1 / 3 ∗ ( 100 − x − y ) = 100 (1) \begin{aligned} 5 *x + 3 * y + 1/3 * (100 - x - y) = 100\tag{1} \end{aligned} 5x+3y+1/3(100xy)=100(1)
14 ∗ x + 8 ∗ y = 200 (2) 14 *x + 8*y = 200\tag{2} 14x+8y=200(2)

 for x in range(0,101):
   for y in range(0,101):
     if 14* x + 8* y == 200:
        print("公鸡 %d 只,母鸡 %d 只, 小鸡 %d只"%(x,y,100-x-y))
     else:
        continue
6.
# -*- coding: cp936 -*-
name = raw_input("账户名\n")
password = raw_input("密码\n")
isOK = 0

for count in range(1, 3):
  if name == "admin" and password == "123":
     print("登陆成功")
     isOK = 1
     break
  else:
     print("账号或密码错误")
     name = raw_input("账户名\n")
     password = raw_input("密码\n")
if isOK != 1:
  print("登陆失败")
7.

能被2整除,说明末尾数字为0, 2, 4, 6, 8。

Num = list()
for begin in range(1, 10):
  for end in range(0, 10, 2):
  if (begin + 3 + 6 + end) % 3 == 0:
    Num.append(begin*1000 + 3 * 100 + 6 * 10 + end)
  else:
    continue
print("The max number is %d\n"%(max(Num)))
print("The max number is %d\n"%(min(Num)))
8.简单冒泡排序

哈哈哈,骚气的紫色。
冒泡排序原理:

Num[i] 和Num[i + 1]进行比较,然后交换顺序
比如大的放前面,小的值放后面。
注意: python2中input和raw_input两个函数用法有区别。

# -*- coding: cp936 -*-
#本题相当于自己实现一个列表方法sorted
#请输入要排序的序列,数字之间用逗号分隔开
Num = list(input("请输入要排序的序列,并用逗号分隔开,以回车键结束\n"))
length = len(Num)
print("序列长度为 %d"%(length))
for i in range(0,length):
    for j in range(i + 1, length):
        if Num[i] < Num[j]:
            temp = Num[j]
            Num[j] = Num[i]
            Num[i] = temp
print(Num)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值