我已经有一段时间了,我已经离这么近了。
我有两个问题需要完成作业。我完成的第一个。它应该返回给定字符串的前三个索引,如果字符串少于3个字母,则不返回任何内容。它看起来像这样:
第二个类似,但更多涉及。问题是:
希望这能解释我的问题。我无法弄清楚如何让输入的数字与我试图打印的索引数量相对应。在第一个问题中,它很简单,因为它始终只是前三个使用的索引。现在,它是(n)个指数。
非常感谢任何帮助(我使用的是Python 3.4.2)
答案 0 :(得分:3)
Strings support sub-stringing in Python
def returnN(string, length):
return string[:length] if len(string) >= length else ''
行动中:
>>> returnN('hello', 2)
'he'
>>> returnN('hello', 5)
'hello'
>>> returnN('BYE', 1)
'B'
>>> returnN('BYE', 10)
''
答案 1 :(得分:1)
使用字符串方法的len和slice方法,如:
def returnN(string, length):
length_string = len(string)
if length > length_string:
return ''
return string[0:length]
print(returnN('hello', 5))
print(returnN('hello', 2))
print(returnN('Nye', 1))
print(returnN('OKOK', 10))
或简单的方式:
def returnN_S(string, length):
return string[: length] if length <= len(string) else ''
print(returnN_S('hello', 5))
print(returnN_S('hello', 2))
print(returnN_S('Nye', 1))
print(returnN_S('OKOK', 10))
或一行:
returnN_H = lambda string, length: string[: length] if length <= len(string) else ''
print(returnN_H('hello', 5))
print(returnN_H('hello', 2))
print(returnN_H('Nye', 1))
print(returnN_H('OKOK', 10))
希望有所帮助。
答案 2 :(得分:0)
Unicode strings是immutable Unicode代码点sequences
Unicode代码点只是从0到sys.maxunicode
的数字,例如Nº128516: (
'\U0001f604'
)
Unicode字符串s
的子字符串/片段(例如s[:2]
)返回包含2
Unicode代码点的新Unicode字符串。
len(s)
返回字符串s
中的Unicode代码点数
可以使用Python源代码中的''
字符串文字表示空字符串。
如果文字尺寸太小,要从字符串或空字符串返回给定数量的user-perceived characters,您可以使用\X
regular expression (it matches an eXtended grapheme cluster):
#!/usr/bin/env python3
import regex # $ pip install regex
def returnN(text, n):
chars = regex.findall(r'\X', text)
return ''.join(chars[:n]) if len(chars) >= n else ''
text = 'a\u0300 biento\u0302t'
print(text) # -> à bientôt
print(returnN(text, 4)) # -> à bi
单个用户感知的字符(例如à
)可以跨越多个Unicode代码点,例如U+0061,U+0300。
术语字符含糊不清。它可能意味着字节,Unicode代码点,字形集群在不同的情况下。
答案 3 :(得分:-2)
input_string = "hello"
def returnN(string, n):
return string[:n]
output = returnN(input_string, 3)
全部