【发布时间】:2020-09-03 10:48:46
【问题描述】:
我在运行我的 case switch 代码时遇到问题这是我第一次运行 case switch。每当我在 python 上运行它时,它只允许用户为 1 选择与 2 和 3 相关的问题,它只是打印要求用户输入的消息。我可能缺少一个非常简单的解决方法。
userchoice=1
while userchoice!=0:
userchoice = input("Press 1 or 2 or 3 to run solution for 1 or 2 or 3 or press 0 to exit: ")
if int(userchoice)==1:
# Copy your code for question 1 here
#Question 1
def main():
#String input
s=input('Enter Random String of numbers and letters: ')
#Calculating string of numbers
str1=""
for i in range(0,len(s)):
str=s[i]
if(str.isnumeric()==True):
str1+=str
print("String of Numbers is: ", str1)
#Calculating longest substring in descending order
str2=""
str2+=str1[0]
max_string=str2
length=1
max_length=1
for i in range(1,len(str1)):
if str1[i]>str1[i-1]:
length+=1
str2+=str1[i]
if length>max_length:
max_length=length
max_string=str2
else:
length=1
str2=str1[i]
print("Longest substring in numberic descending order is", max_string)
#Calculating the Average of numbers
avg=0.0
for i in range(0, len(max_string)):
avg+=float(max_string[i])
avg=avg/max_length
print("Average: ", round(avg,0))
if __name__=="__main__":
main()
elif int(userchoice)==2:
#Encryption section:
text=input("Enter a phrase for encryption (lowercase, no spaces):" ) #instructions that will assist the user to meet the input requirements for the code to work
dis=int(input("Enter distance value: ")) #dis is the number of spaces the user wishes the letter to be moved for encryption (example if dis is 5 and the phrase is "cat", "cat" will become "hfy")
code=" "
for ch in text:
ordvalue=ord(ch) #the ordvalue is defined as ord(ch), ord takes the string argument of a single unicode character and returns its point value
ciphervalue=ordvalue+dis #the ciphervalue takes the point value of the characters in the selected phrase and adds the numberic value inputted by the user to each characters point value
if ciphervalue>ord('z'): #defines rules for if the ciphervalue is grater then the unit value of 'z'
x=ciphervalue-ord('z') #uses the constant 'x' defining it as the ciphervalue minus the value of 'z'
ciphervalue=ord('a')+x-1 #if the value is greater then 'z' then the cipher value is the unit value of 'a' plus what is defined to be 'x'
code=code+chr(ciphervalue) #uses the 'chr' function to convert the interger collected by the ciphervalue and converts it to the character that occupies that value
print("Encription is: ", code) #Prints the encrypted values
#Decryption
decrypt=input("Enter a phrase for decryption (lowercase, no spaces): ") #instructions that will assist the user to meet the input requirements for the code to work
dis=int(input("Enter distance value: ")) #number of spaces the user wishes to move the letter to decrypt the code (example, encryption: "hfy", distance:5, decryption= cat )
code=" "
for ch in decrypt:
ordvalue=ord(ch) #similar to decryption
ciphervalue=ordvalue-dis #instead of adding the users numeric input to the unit value this takes the value inputted by the user
if ciphervalue<ord('a'): #rules for if the ciphervalue results in a value less then the unit value of 'a'
x=ord('a')-ciphervalue #defines 'x' in a similar way to the encryption
ciphervalue=ord('z')-x+1
code=code+chr(ciphervalue)
print("decryption is:", code)
# Copy your code for question 2 here
elif int(userchoice)==3:
#Question 3
count = 0
total = 0.0
filename = input("Enter file name: ")
x = open(filename)
for line in x:
if not line.startswith("X-DSPAM-Confidence:") :
continue
t=line.find("0")
number=float(line[t: ])
count = count+1
total = total + number
average = total/count
print("Average spam confidence: ", average)
elif int(userchoice)==0:
print("Thanks!")
break
else:
print("Wrong Choice, Please try 1,2,3 or press 0 to exit!")
【问题讨论】: