思科浪 发表于 2018-5-31 20:22:06

求大神看看这一段话什么意思啊

for i in range(ord('x'),ord('z') + 1): #这一行是什么意思呢?特别是这个+1

thexiosi 发表于 2018-5-31 20:26:23

本帖最后由 thexiosi 于 2018-5-31 20:32 编辑

hi 可以分解如下:本质还是基本的for循环语句

>>> ord('a') #ord()函数可以返回字符的ASCII码
97
>>> ord('x')
120
>>> ord('z')
122
>>> for i in range(120, 122+1): #数学运算
        print(i)

       
120
121
122

思科浪 发表于 2018-5-31 20:32:00

thexiosi 发表于 2018-5-31 20:26
hi 可以分解如下:本质还是基本的for循环语句

>>> ord('a') #ord()函数可以返回字符串的ASCII码


题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
   比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
   三队赛手的名单。    其实我是在做这一道题
源代码如下:
for i in range(ord('x'),ord('z') + 1): #这个地方不太懂
    for j in range(ord('x'),ord('z') + 1):
      if i != j:
            for k in range(ord('x'),ord('z') + 1):
                if (i != k) and (j != k):
                  if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
                        print ('order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k)))

thexiosi 发表于 2018-5-31 20:43:19

源代码是算法的体现, 我个人的理解如下

for i in range(ord('x'),ord('z') + 1): # 相当于甲队的a
    for j in range(ord('x'),ord('z') + 1):# 相当于甲队的b
      if i != j: #同一队不比 a ,b
            for k in range(ord('x'),ord('z') + 1): #相当于甲队的c
                if (i != k) and (j != k): #同一队不比 a c ,b c
                  if (i != ord('x')) and (k != ord('x')) and (k != ord('z')): #a说他不和x比,c说他不和x,z比
                        print ('order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k)))#剩下满足条件的组合就是答案了

BngThea 发表于 2018-6-1 09:00:16

只不过将xz转换为int类型,然后进行循环而已
只要搞定逻辑了这类问题有很多种写法
页: [1]
查看完整版本: 求大神看看这一段话什么意思啊