我已经完成了大约80%的这个程序,但我不能为我的生活弄清楚如何用星号替换元音并打印新的字符串。
说明如下:
到目前为止我的代码:
def main():
name = input('Enter your first name: ')
print(name)
### print name with spaces in between characters
spaces = ''
for ch in name:
spaces = spaces + ch + ' '
print(spaces[:-1]) # to get rid of space after e
print('name in caps is,',name.upper()) # print name in all caps
print('After chopping the name we get',name[1:4])
print(str_func)
def str_func():
str_func = name.replace('a','*')
return str_func
main()
我的一位朋友在某种程度上说明我的str_func函数存在问题:
当你调用它时,该函数应该在主函数中将名称作为参数。 你不打印它。你叫它,像这样: new_name = str_func(name)
像这样定义str_func()。我为你准备了一些伪代码。
def str_func(name): ###make a string containing the vowels ###loop through the name ###replace vowel if found with * ### after loop, return the name
请帮助!!
答案 0 :(得分:0)
这可能会对你有帮助。
C:\Users\Dinesh Pundkar\Desktop>python a.py
Enter your first name: Guido
Guido
G u i d o
('name in caps is,', 'GUIDO')
('After chopping the name we get', 'uid')
Guido
C:\Users\Dinesh Pundkar\Desktop>python a.py
Enter your first name: Jfalcone
Jfalcone
J f a l c o n e
('name in caps is,', 'JFALCONE')
('After chopping the name we get', 'fal')
Jf*lc*n*
C:\Users\Dinesh Pundkar\Desktop>
输出
{{1}}
答案 1 :(得分:0)
其他人已经为您的问题提供了解决方案,但我会尝试改进整个代码。我不知道你介绍了哪些函数,所以我可能会为每个步骤提供一个天真的和pythonic的实现。
首先,您没有回答问题2:打印输入字符串的长度。您可以手动计算它们:
size = 0
for letter in name:
size += 1
print(size)
或使用内置函数len
:
size = len(name)
print(size) # or print(len(name)) if you don't need the intermediate variable
您可以使用join
字符串方法改善输入的间距:
spaced = ' '.join(name)
print(spaced) # or print(' '.join(name)) if you don't need spaced
您可以将任何可迭代的字符串传递给join
并且字符串适合。
您的切片会输入您输入的第二个,第三个和第四个字母。无论它的长度是多少。您需要使用之前计算的字符串的长度:
sliced = name[1:size-1]
print(sliced)
或在切片表示法中使用负数从字符串末尾开始计算:
print(name[1:-1])
您需要编写一个函数并调用它来改变字符串。因此,您必须将其称为:
mutated = str_func(name)
print(mutated)
该函数可以迭代原始字符串:
def str_func(original):
copy = ''
for letter in original:
if letter in 'auieoy':
copy += '*'
else:
copy += letter
return copy
或使用replace
:
def str_func(original):
copy = original
for vowel in 'aeuioy':
copy = copy.replace(vowel, '*')
return copy
您甚至可以使用translate
,它更适合更常用的用途:
def str_func(original):
from string import maketrans
vowels = 'auieoy'
return original.translate(maketrans(vowels, '*' * len(vowels)))
将所有这些组合在一起:
from string import maketrans
def do_stuff():
name = input('Enter your first name: ')
print('Your input is', name)
print('It\'s length is', len(name))
print('Adding spaces:', ' '.join(name))
print('Capitalizing it:', name.upper())
print('Chopping it:', name[1:-1])
mutated = str_func(name)
print('Removing vowels:', mutated)
def str_func(original):
vowels = 'auieoy'
return original.translate(maketrans(vowels, '*' * len(vowels)))
if __name__ == '__main__':
do_stuff()
答案 2 :(得分:-1)
test = 'qwertyuiopasdfghjklzxcvbnm'
def changestring(string):
for x in 'aeiou':
string = string.replace(x, '*')
return string
changestring(test)
'qw*rty***p*sdfghjklzxcvbnm'
这是你想要做的吗?