def ul(a):
if a %2 == 0:
print(a.upper())
else:
print(a.lower())
ul(input())
我收到以下错误:
TypeError: not all arguments converted during string formatting
我想用大写字母写每个偶数字母,用小写字母写每个不规则字母
我做错了什么?
答案 0 :(得分:0)
尝试一下
def ul(a):
a = a.lower()
if ord(a) %2 == 0:
print(a.upper())
else:
print(a.lower())
如果您只希望用户输入字母,请尝试
def ul(a):
if ord(a) >= 110 and ord(a) < 123:
a = a.lower()
if ord(a) %2 == 0:
print(a.upper())
else:
print(a.lower())
else:
print("Please enter Alphabets only")
答案 1 :(得分:0)
此函数现在要执行的操作是检查输入(字符串)是否可以被2整除。这并不是您真正想做的事情,并且由于字符串不是模可整的,因此会产生错误。
您最好循环遍历输入字符串的索引,以用大写和小写字母填充第二个字符串:
def ul(s):
outstring = ''
for i in range(len(s)): ## For each index of the string
if i%2==0:
outstring += s[i].upper() ## Even indices become upper case
else:
outstring += s[i].lower() ## Odd indices become lower case
print(outstring)
ul(input("Enter a string: "))
答案 2 :(得分:0)
据我所知,您正在尝试获取字符串模式。您应该使用len(a)。
def ul(a):
if len(a) %2 == 0:
print(a.upper())
else:
print(a.lower())
ul(input())
答案 3 :(得分:0)
输入将给您一个字符串。您想使用模运算符%,这正是您通常发现数字的偶数的方式。因此,您的方向正确! 实际发生的是Python将您的%解释为格式运算符(可能有一个漂亮的名字)。
number = 2
print("Number %d is this" % number)
>>> Number 2 is this
Python中的字符串是不可变的,因此您不能只是轻易地更改字符串。
尝试使用Replacing every 2nd character in a string,在这里您可以通过将所有单个字符加在一起来构造新的字符串。
def ul(word):
new = []
for i in range(len(word)):
if i%2 == 0:
new += word[i].upper()
else:
new += word[i].lower()
print("".join(new))
这将逐个字符地处理字符串,基于是否均匀来转换单个字符,然后构造一个包含所有单个字符的列表“ new”。最后,只需加入即可,因此从列表中创建一个新字符串。
还有更多使用列表理解的pythonic方法,但这现在更容易阅读和理解。