求助大佬,python罗马数字转整数
1.这个代码运行报错2.求助这个代码的意思
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
sum=0
convert={'M': 1000 , 'D': 500 , 'C': 100 , 'L': 50 , 'X': 10 , 'V': 5 , 'I': 1}
for i in range(len(s)-1):
if convert] < convert]:
sum -= convert]
else:
sum += convert]
sum += convert]
return sum
a = eval(input("请输入一个罗马数字:"))
palindrome_bool = a.romanToInt(a)
print(palindrome_bool) 本帖最后由 傻眼貓咪 于 2021-10-22 14:00 编辑
參考我的吧,很久之前我在力扣作解說的代碼:class Solution:
def romanToInt(self, s: str) -> int:
roman = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} # 步驟1
nums = for i in s][::-1] # 步驟2# 步驟3
a = nums
sum = 0
for i in nums:# 步驟4# 步驟5
if i < a:
sum -= i
elif i == a:
sum += i
else:
a = i
sum += i
return sum
// 作者:傻眼貓咪
// 链接:https://leetcode-cn.com/problems/roman-to-integer/solution/pythonjie-fa-chun-cui-ji-lu-by-sha-yan-m-10c0/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 你这是完整代码?
感觉缺了很多呀 没了,网上搜出来是这样的{:10_250:} 傻眼貓咪 发表于 2021-10-22 13:37
參考我的吧,很久之前我在力扣作解說的代碼:
class Solution:
def romanToInt(self, s: str) -> int:
roman = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}# 步驟1
nums = for i in s][::-1]# 步驟2# 步驟3
a = nums
sum = 0
for i in nums:# 步驟4# 步驟5
if i < a:
sum -= i
elif i == a:
sum += i
else:
a = i
sum += i
return sum
num = input("请输入一个罗马数字:")
nums = romanToInt(num)
print(nums)
报错:
请输入一个罗马数字:I
Traceback (most recent call last):
File "C:\Users\mate\AppData\Roaming\JetBrains\PyCharmCE2021.2\scratches\second.py", line 21, in <module>
class Solution:
File "C:\Users\mate\AppData\Roaming\JetBrains\PyCharmCE2021.2\scratches\second.py", line 38, in Solution
nums = romanToInt(num)
TypeError: romanToInt() missing 1 required positional argument: 's' pallas 发表于 2021-10-23 14:12
class Solution:
def romanToInt(self, s: str) -> int:
roman = ...
如果你是网路上做题(力扣)就可以从头到尾复制我的代码,原因是因为 class Solution 是力扣原本题目设定输出方式,假如你只是课外复习,建议只挑重点复制便可,无需全复制 傻眼貓咪 发表于 2021-10-23 14:17
如果你是网路上做题(力扣)就可以从头到尾复制我的代码,原因是因为 class Solution 是力扣原本题目设定 ...
那大佬,调用函数是这样调用的吗?
num = input("请输入一个罗马数字:")
nums = romanToInt(num) pallas 发表于 2021-10-23 14:12
class Solution:
def romanToInt(self, s: str) -> int:
roman = ...
帮你把重点弄出来了,代码:class Solution:
def romanToInt(self, s: str) -> int:
roman = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
nums = for i in s][::-1]
a = nums
sum = 0
for i in nums:
if i < a:
sum -= i
elif i == a:
sum += i
else:
a = i
sum += i
return sum
MyTry = Solution()
string = input("请输入一个罗马数字:")
print(MyTry.romanToInt(string))请输入一个罗马数字:VIII
8 傻眼貓咪 发表于 2021-10-23 14:23
帮你把重点弄出来了,代码:
大佬,能麻烦您稍微对您的代码解释一下吗?{:10_254:} 傻眼貓咪 发表于 2021-10-23 14:23
帮你把重点弄出来了,代码:
大佬,我想问一下,这个代码是不是不能放入while循环哎 pallas 发表于 2021-10-23 14:38
大佬,我想问一下,这个代码是不是不能放入while循环哎
只要熟悉/了解题目和代码,想放什么都可以,没有限制,最重要可以以自己最舒服的方式编写代码便可,百百种程序员,就有百百种可能性的代码 pallas 发表于 2021-10-23 14:31
大佬,能麻烦您稍微对您的代码解释一下吗?
我在 4楼 已经标记步骤和解说了{:5_108:} 大佬,我用了while循环,但是有错{:10_254:}
能麻烦您帮忙看看吗?{:10_254:}
while True:
temp = input("请选择项目:")
number = int(temp)
if number == 0:
# 退出程序
print("退出!")
break
if temp.isdigit() and 0 <= int(temp) <= 6:
#isdigit()如果字符串只包含数字返回True,否则返回False
# 判断输入的数字是否在在范围之内,在范围内正常执行
number = int(temp)
else:
# 如果超出范围重新输入
print("请重新输入项目")
continue
if number == 1:
class Solution:
def romanToInt(self, s: str) -> int:
roman = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
nums = for i in s][::-1]
a = nums
sum = 0
for i in nums:
if i < a:
sum -= i
elif i == a:
sum += i
else:
a = i
sum += i
return sum
string = input("请输入一个罗马数字:")
MyTry = Solution()
print(MyTry.romanToInt(string))
if number == 2:
其他代码 本帖最后由 傻眼貓咪 于 2021-10-23 15:44 编辑
pallas 发表于 2021-10-23 14:51
大佬,我用了while循环,但是有错
能麻烦您帮忙看看吗?
while True:
class Solution:
def romanToInt(self, s: str) -> int:
roman = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
nums = for i in s][::-1]
a = nums
sum = 0
for i in nums:
if i < a:
sum -= i
elif i == a:
sum += i
else:
a = i
sum += i
return sum
while True:
try:
num = int(input("请选择项目:"))
except:
print("请重新输入项目\n")
continue
if not num:
print("退出!")
break
else:
match(num):
case 1:
MyTry = Solution()
string = input("请输入一个罗马数字:")
print(MyTry.romanToInt(string))
case 2:
pass # 其他代码
case 3:
pass # 其他代码
case 4:
pass # 其他代码请选择项目:1
请输入一个罗马数字:VIII
8
请选择项目:0
退出!以上代码只有符合 Python 版本 3.10.0 才可运行 傻眼貓咪 发表于 2021-10-23 15:43
以上代码只有符合 Python 版本 3.10.0 才可运行
谢谢大佬
页:
[1]