我在Python上非常糟糕,我的计算机程序设计课程在两天后结束(感谢上帝),但我正在努力找出可能是最简单的代码。
我的作业指令说:“写一个读取文本直到'!'的程序找到。使用由'A'到'Z'字母下标的整数数组。“
从我到目前为止所做的:
msg = input("What is your message? ")
msg = msg.upper()
int_array = [0] * 26
for alph in range (65, 91):
char = chr(alph)
print(char)
(int_array[char])
任何帮助将不胜感激!谢谢!
编辑:这是完整的作业:
编写一个程序,从键盘读取文本,直到找到('!')。
使用由字母“A”到“Z”下标的整数数组,计算每个字母的出现次数(无论是大写还是小写)。在一个单独的计数器中,还要计算“其他”字符的总数('。','?','','2'等)。
打印出找到的每个字母的计数。另外,打印非字母字符的计数。
通过检查数组,打印出元音数量和辅音数量。
打印出最常找到的信件。 (请注意,可能有多个字母附加了最大数量。)打印出最少次数的字母(或多个字母),但要确保排除根本没有找到的字母。
更新:
我已经用我的代码
了msg = input("What is your message? ")
print ()
num_alpha = 26
int_array = [0] * num_alpha
for alpha in range(num_alpha):
int_array[alpha] = chr(alpha + 65)
print(int_array[alpha], end = "")
print()
lett = 0
otherch = 0
num_vowels = 0
num_consanants = 0
count_character = [0] * 100000
length = len(msg)
for character in msg.upper():
if character == "!":
print("lett =", lett)
print("other char = ", otherch)
print("num_vowels = ", num_vowels)
print("num_consanants = ", num_consanants)
elif character < "A" or letter > "Z":
otherch = otherch + 1
count_character[ord(character)] = count_character[ord(character)] + 1
else:
lett = lett + 1
count_character[ord(character)] = count_character[ord(character)] + 1
for character in msg:
print("character", character, "appeared" , count_character[ord(character)] , "times")
它显然还没有完成,但每次我打印最后一个打印声明时,都会说每个字符出现0次。有人可以帮忙吗?
答案 0 :(得分:2)
你需要对此进行澄清,因为在Python中没有“由'A'到'Z'字母下标的整数数组。
我能想到的可能的解释:
list.index
方法在该字母所在的第一个列表中查找索引,然后在第二个列表中查找该索引。 (理论上,你真的不需要第一个列表,因为Python字符串就像列表一样,它们可以用整数下标并支持index
方法。所以你可以使用字符串'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
代替或者您可以使用ord
函数,它是chr
函数的反函数。但我不知道您是否应该使用这些函数。)答案 1 :(得分:2)
我不是百分百肯定以下是正确的,因为我同意其他人认为作业说明不合适。它看起来像一个基于C的家庭作业,懒洋洋地移植到Python。那说:
原则上而不是硬编码字母表的边界我会选择ord('A')
和ord('Z')+1
,以便我可以说alphabet = list(range(ord('A'), ord('Z')+1))
将int_array
重命名为counter
可能会使您在内循环中需要做的更明显(请记住,您使用字母作为索引。或者更确切地说,你需要更像ord(letter)-ord('A')
作为你的指数的东西)
你不想循环使用字母表;你想循环输入。
count
应初始化为[0]*27
以跟踪“其他”值。您可以为非字母字符增加counter[-1]
。
您的最终价值是chr
的{{1}}。你可能会发现它更直接,或者你的老师可能会发现它更容易接受,只需写一个counter.index(max(counter))
循环。