返回字符串中的单个数字(python 3)

时间:2016-03-30 05:31:12

标签: python

make_position_string(长度) 获取状态的长度并返回 字符串01234 ...将在交互中显示以使其更容易 用户选择要移动的对的位置:

  
    
      

make_position_string(18)       “012345678901234567’

    
  

这就是我的作品:

def make_position_string(length):

new = []
for i in range(length):
    print(i, end = "")
    new += str(i)
return new

它可以像这样显示字符串中的数字:make_position_string(12) 01234567891011 [' 0',' 1',' 2',' 3',' 4',&#39 ; 5',' 6',' 7',' 8',' 9',' 1' ,' 0',' 1',' 1'],所以如何让它只返回像示例一样的数字。我知道我需要使用[-1],但我不知道在哪里/如何使用它。有人可以帮忙吗?谢谢。

3 个答案:

答案 0 :(得分:2)

模运算符(%)可能会对此有所帮助。数字的“1”数字只是数字除以10时的余数。(例如,17除以10是1,余数为7.因此17//10为1而17%10为{1}}是7。)

试试这个:

new += str(i%10)

参考文献:

答案 1 :(得分:0)

你是对的,可以使用[-1]完成,但你需要在2个地方以最直接的方式使用你的代码

new = []
for i in range(length):
    print(str(i)[-1], end = "")
    new += str(i)[-1]
return new

如果您只对创建new感兴趣,可以使用列表理解

new = [str(i)[-1] for i in range(length)]

答案 2 :(得分:0)

基于其他人发布的内容,使用模运算符%是可行的方法。考虑构建一个列表并最终连接,因为通过逐个附加字符来构建一个(不可变的)字符串是O(length ^ 2):

def make_position_string(length):    
    return ''.join([str(i%10) for i in range(length)])

如果你只有短的字符串可能不太相关,join和列表理解似乎是best