如何解决用户输入问题案例中的问题
我在运行案例切换代码时遇到问题,这是我第一次运行案例切换。每当我在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!")
解决方法
您正在选项1内部创建函数main,但从未调用该函数。
if __name__ == "__main__"
是脚本的入口点,尽管在这种情况下,您要直接调用 main 函数。您可以尝试这样:
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))
main()
或者您可以将代码直接放在 main 函数中的选项1块中,如下所示:
if int(userchoice) == 1:
# Copy your code for question 1 here
# Question 1
# 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: ",0))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。