我在运行案例切换代码时遇到问题这是我第一次运行案例切换。每当我在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!")
可以使用以下函数定义模拟switch语句:
您可以在C样式中使用它:
您还可以使用if/elif/else模式,而不使用中断:
您正在选项1内创建函数main,但从未调用该函数
是脚本的入口点,不过在本例中,您要做的是直接调用main函数。您可以这样尝试:
或者,您可以直接将代码放入选项1块中的main函数中,如下所示:
相关问题 更多 >
编程相关推荐